๐Ÿฅ‡[Bro's Insights - ์ธ๊ธฐ๊ธ€] โ†’ ๐Ÿš€ ์ตœ๊ทผ ํ•ซํ•œ Kargo: Devโ†’Stageโ†’Prod ๋ฆด๋ฆฌ์ฆˆ ํ๋ฆ„์„ ์ž๋™ํ™”ํ•˜๋Š” GitOps ์˜คํ”ˆ์†Œ์Šค ๐Ÿš€

Kargo ์†Œ๊ฐœ

  • Kargo ๋Š” Argo CD ๋“ฑ ๊ธฐ์กด GitOps ํˆด์„ ๋ณด์™„ํ•˜์—ฌ, Kubernetes ํ™˜๊ฒฝ์—์„œ โ€œ๋‹จ๊ณ„(stage) ๊ฐ„ ์—ฐ์† ํ”„๋กœ๋ชจ์…˜(continuous promotion)โ€์„ ์„ ์–ธํ˜•์œผ๋กœ ์ž๋™ํ™”ํ•ด์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ผ์ดํ”„์‚ฌ์ดํด ๊ด€๋ฆฌ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

GitOps ํˆด์ด ๋ชปํ•˜๋Š” ๊ฒƒ๋“ค :warning:

  • ๊ธฐ์กด GitOps ํˆด(e.g. Argo CD)์€ ๊ฐ ํด๋Ÿฌ์Šคํ„ฐ/ํ™˜๊ฒฝ์— ๋Œ€ํ•ด Git โ†’ Kubernetes ์ƒํƒœ ๋™๊ธฐํ™”(sync) ๊นŒ์ง€๋Š” ์ง€์›ํ•˜์ง€๋งŒ, โ€œ๊ฐœ๋ฐœ โ†’ ์Šคํ…Œ์ด์ง• โ†’ ํ”„๋กœ๋•์…˜โ€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ์— ๊ฑธ์นœ ๋ฐฐํฌ ํ”„๋กœ๋ชจ์…˜ ์›Œํฌํ”Œ๋กœ์šฐ(promotion pipeline) ์€ ์ง์ ‘ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ํŒ€ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ณ  ํ™˜๊ฒฝ์ด ๋งŽ์•„์งˆ์ˆ˜๋ก, ์ˆ˜๋™ ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” CI ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ํ™˜๊ฒฝ ์ด๋™(promotion)์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์ˆ˜์ž‘์—… ์˜ค๋ฅ˜, ๋ณต์žกํ•œ ์Šคํฌ๋ฆฝํŠธ ์œ ์ง€, ๋ฐฐํฌ ๋ณ‘๋ชฉ ๋“ฑ์˜ ์œ„ํ—˜๊ณผ ๋น„ํšจ์œจ์„ ๋™๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค.

Kargo๊ฐ€ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ๊ฒƒ๋“ค :puzzle_piece:

  • Kargo๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ธฐ์กด GitOps ํˆด(e.g. Argo CD)์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์Šต๋‹ˆ๋‹ค. ์ฆ‰, Git โ†’ Kubernetes ๋ฐฐํฌ์˜ ๋‹ค์Œ ๋‹จ๊ณ„: โ€œํ™˜๊ฒฝ ๊ฐ„ artifact / manifest / ์„ค์ •์˜ promotionโ€์„ ์„ ์–ธํ˜•์œผ๋กœ ์ž๋™ํ™”ํ•ด์ค๋‹ˆ๋‹ค.

Kargo์˜ ์ฃผ์š” ๊ธฐ๋Šฅ๋“ค :wrench:

๊ฐœ๋… / ๊ธฐ๋Šฅ ์„ค๋ช…
Continuous Promotion (์—ฐ์† ํ”„๋กœ๋ชจ์…˜) Git/Git-artifact / Helm / ์ด๋ฏธ์ง€ ๋“ฑ์„ ๊ธฐ์ค€์œผ๋กœ, ํ•œ ํ™˜๊ฒฝ์—์„œ ๋‹ค์Œ ํ™˜๊ฒฝ์œผ๋กœ ๋ณ€๊ฒฝ์„ ์ž๋™์œผ๋กœ ๋„˜๊น€. ์ˆ˜๋™ ์Šคํฌ๋ฆฝํŠธ ๋ถˆํ•„์š”.
Promotion Pipeline ์—ฌ๋Ÿฌ ์Šคํ…Œ์ด์ง€(stage)๋กœ ๋‚˜๋ˆ , ๊ฐœ๋ฐœ โ†’ ์Šคํ…Œ์ด์ง• โ†’ ํ”„๋กœ๋•์…˜ ๊ฐ™์€ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ.
Project / Stage / Warehouse / Freight ๋“ฑ์˜ CRD(Custom Resource) Kubernetes ๋ฆฌ์†Œ์Šค(CRD) ํ˜•ํƒœ๋กœ pipeline์„ ์ •์˜ํ•จ. ์˜ˆ: Project ๋ฆฌ์†Œ์Šค โ€” ํ”„๋กœ์ ํŠธ ๋‹จ์œ„ ๊ฒฉ๋ฆฌ, Warehouse โ€” ์ด๋ฏธ์ง€/์ฐจํŠธ ์ €์žฅ์†Œ, Freight โ€” ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ artifact ๋“ฑ.
GitOps ์นœํ™” & ๊ธฐ์กด ์‹œ์Šคํ…œ ํ˜ธํ™˜ ๊ธฐ์กด Argo CD + Helm + Kubernetes ๊ตฌ์„ฑ ์œ„์—์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ, ๊ธฐ์กด ์ธํ”„๋ผ ํˆฌ์ž ํ™œ์šฉ ๊ฐ€๋Šฅ.
์ž๋™ํ™” + ๊ฐ€๋“œ๋ ˆ์ผ + ๊ฐ€์‹œ์„ฑ Promotion ๊ณผ์ •๊ณผ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์ž๋™ํ™”ํ•˜๋ฉด์„œ, ๋กค๋ฐฑ, ๋ณ€๊ฒฝ ์ด๋ ฅ, ํ™˜๊ฒฝ ๊ฐ„ ๊ด€๊ณ„ ๋“ฑ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ด€๋ฆฌ.

์ฐธ๊ณ  ๋งํฌ

์ปค๋ฎค๋‹ˆํ‹ฐ ์˜๊ฒฌ [์ถœ์ฒ˜] Reddit - The heart of the internet

:white_check_mark: ์ฃผ์š” ๊ธ์ • ํ‰๊ฐ€

  • โ€œDifferent types of artefacts (์ด๋ฏธ์ง€, Helm ์ฐจํŠธ ๋“ฑ)๋ฅผ ํ•œ๊บผ๋ฒˆ์— ๋‹ค๋ฃจ๋Š” promotion ์›Œํฌํ”Œ๋กœ์šฐโ€๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์ด โ€œ์‹ค์ œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์˜ pain-point๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œโ€์ด๋ผ๋Š” ํ‰๊ฐ€ ์žˆ์Œ.

โ€œLove the way Kargo tackles the topic around environment promotion of different types of artefacts (Images, Helm Charts, etc.)โ€

  • โ€œ๊ธฐ์กด Argo CD + GitOps ํ๋ฆ„์— Kargo๋ฅผ ๋”ํ•˜๋ฉด, dev โ†’ staging โ†’ prod์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ์— ๊ฑธ์นœ ๋ฆด๋ฆฌ์ฆˆ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹คโ€๋Š” ํ”ผ๋“œ๋ฐฑ์ด ์กด์žฌ.

:warning: ์ง€์ ๋œ ๋‹จ์  ๋ฐ ์ œ์•ฝ

  • ์„ค์ • ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ์ด CLI + CRD ๊ธฐ๋ฐ˜์œผ๋กœ ๋˜์–ด ์žˆ์–ด, ๋‹จ์ˆœ Helm-chart ๊ธฐ๋ฐ˜ ๋ฐฐํฌ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ํŒ€์—๊ฒŒ๋Š” ์ง„์ž… ์žฅ๋ฒฝ์ด ์žˆ์Œ.
  • โ€œ์ด๋ฏธ์ง€ ํƒœ๊ทธ(update)๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•  ์ˆ˜ ์žˆ์Œโ€ โ€” ํŠนํžˆ Helm values, ์ฐจํŠธ ๋ฒ„์ „, config ๋ณ€๊ฒฝ์ด ํ•จ๊ป˜ ํ•„์š”ํ•  ๊ฒฝ์šฐ promotion ํ๋ฆ„์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ง€์ .
  • ์ผ๋ถ€๋Š” โ€œ๊ธฐ์กด CD ํŒŒ์ดํ”„๋ผ์ธ(์˜ˆ: Argo CD + GitHub Actions)์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹คโ€๊ณ  ํŒ๋‹จํ•˜๋ฉฐ, Kargo ๋„์ž…์ด ์˜คํžˆ๋ ค ๋ถˆํ•„์š”ํ•˜๋‹ค๊ณ  ๋ด„.

1 Like