CICD

๐Ÿ”ญGitOps ํˆด Argo CD์˜ v2.11 ์—…๋ฐ์ดํŠธ!

GitOps ํˆด๋กœ ๋„๋ฆฌ ์“ฐ์ด๋Š” Argo CD๊ฐ€ v2.11๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

2024.04.15 | ์กฐํšŒ 237 |
0
|

DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€

DevOps, ํด๋ผ์šฐ๋“œ, IT ๊ธฐ์ˆ  ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹๊ณผ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ฃผ 1ํšŒ ์ด๋ฉ”์ผ๋กœ ์ „ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜บ

์•ˆ๋…•ํ•˜์„ธ์š” ๊ตฌ๋…์ž๋‹˜, ์ตœ์‹  DevOps ์†Œ์‹์„ ์ •๋ฆฌํ•ด์„œ ๊ณต์œ ํ•ด๋“œ๋ฆฌ๋Š” DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€์ž…๋‹ˆ๋‹ค.

๋ด„์ด ์˜ค๋‚˜ ํ–ˆ๋”๋‹ˆ ์Šฌ๊ธˆ์Šฌ๊ธˆ ๋”์›Œ์ง€๋Š” 4์›”์ธ๋ฐ์š”. 

์ด๋ฒˆ ์†Œ์‹์ง€์—์„œ๋Š” Argo CD์˜ v2.11 ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ 1์›” ์†Œ์‹์ง€์—์„œ Argo CD์˜ v2.10 ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ์š”. ๊ทธ ํ›„๋กœ ์–ด๋Š์ƒˆ 3๊ฐœ์›”์ด ์ง€๋‚ฌ์œผ๋‹ˆ ์‹œ๊ฐ„์ด ์ฐธ ๋น ๋ฅด๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค.๐Ÿ˜…

์ง€๋‚œ Argo CD์˜ v2.10 ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ ํ™•์ธํ•ด๋ณด์„ธ์š”.

์ด๋ฒˆ์—๋Š” Argo CD์™€ GitOps์— ๋Œ€ํ•ด ์ข€ ๋” ์‚ดํŽด๋ณธ ๋‹ค์Œ ์ตœ์‹  ์—…๋ฐ์ดํŠธ ์†Œ์‹์„ ์†Œ๊ฐœํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ“Git ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋Š” GitOps ํŒจํ„ด

GitOps๋Š” CI/CD๋ฅผ Git ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.
GitOps๋Š” CI/CD๋ฅผ Git ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

Argo CD์˜ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ๋Š” Argo CD๋ฅผ Kubernetes ๊ธฐ๋ฐ˜์˜ GitOps ํˆด์ด๋ผ๊ณ  ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด GitOps๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”? Git๊ณผ Ops๋ฅผ ๋‚˜๋ˆ ์„œ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ข€๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € Git์€ ์šฐ๋ฆฌ๊ฐ€ ๊ฐœ๋ฐœ์— ํ”ํžˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ฝ”๋“œ ํ˜•์ƒ ๊ด€๋ฆฌ ํˆด์ž…๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ด๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ GitHub์ด์ฃ .

Ops๋Š” Operation์˜ ์ค„์ž„๋ง์ด๋ฉฐ ์„œ๋น„์Šค ์šด์˜ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, GitOps๋Š” ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๋ฅผ Git์„ ์ด์šฉํ•ด ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ k8s ํด๋Ÿฌ์Šคํ„ฐ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•œ๋‹ค๋ฉด Service, Deployment, ConfigMap ๋“ฑ ๋‹ค์–‘ํ•œ Kubernetes ๊ด€๋ จ Manifest ํŒŒ์ผ๋“ค์ด ์žˆ์–ด์•ผ ํ•  ํ…๋ฐ์š”.

๋ฐฐํฌ์— ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ Git ์ €์žฅ์†Œ์— ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ฐœ๋…์ด GitOps์ž…๋‹ˆ๋‹ค.

GitOps ํŒจํ„ด์„ ์ด์šฉํ•  ๊ฒฝ์šฐ, ํ•˜๋‚˜์˜ ์ €์žฅ์†Œ์—์„œ ๋ฐฐํฌ์— ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ํŒ€์›๋“ค์ด ํ˜‘์—…ํ•˜๊ธฐ์— ์šฉ์ดํ•˜๊ณ  ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๐Ÿ™GitOps ํŒจํ„ด์œผ๋กœ Kubernetes ๊ธฐ๋ฐ˜ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ Argo CD

Argo CD์˜ ๊ธฐ๋ณธ ๋Œ€์‹œ๋ณด๋“œ์—์„œ๋Š” ํ˜„์žฌ k8s ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌ๋œ ์„œ๋น„์Šค๋“ค์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Argo CD์˜ ๊ธฐ๋ณธ ๋Œ€์‹œ๋ณด๋“œ์—์„œ๋Š” ํ˜„์žฌ k8s ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌ๋œ ์„œ๋น„์Šค๋“ค์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ GitOps ํŒจํ„ด์— ๋Œ€ํ•ด ์•Œ์•„๋ดค๋Š”๋ฐ์š”. ๊ทธ๋ ‡๋‹ค๋ฉด Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•  ๋•Œ GitOps ๊ธฐ๋ฐ˜ Argo CD๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์—” ๋ฌด์—‡์ด ์žˆ์„๊นŒ์š”?  

  • ์œ„์—์„œ๋„ ์ž ๊น ์‚ดํŽด๋ณธ ๊ฒƒ์ฒ˜๋Ÿผ, Kubernetes ํ™˜๊ฒฝ์— ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•  ๋•Œ ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ ๋‹จ์ผ ์ €์žฅ์†Œ์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋˜ํ•œ Git ์ €์žฅ์†Œ์˜ ํŒŒ์ผ ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด ์ƒˆ๋กœ ์ˆ˜์ •ํ•œ ํŒŒ์ผ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ด์ „ ๋ฒ„์ „์˜ ํŒŒ์ผ๋กœ ๋ณต์›์‹œํ‚ค๊ธฐ๋„ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰์œผ๋กœ Argo CD์—์„œ ์ œ๊ณตํ•˜๋Š” ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ ํ˜„ํ™ฉ ๋ฐ ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Argo CD๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ค์น˜ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ณต์‹ Git์—์„œ Kubernetes yaml ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›๊ฑฐ๋‚˜, Command Line ํ™˜๊ฒฝ(CLI)์—์„œ ํŒจํ‚ค์ง€๋กœ ๋‹ค์šด๋ฐ›์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์„ค์น˜๋œ Argo CD๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ๋™์ž‘ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ณ„์† ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. Argo CD๋Š” Git ์ €์žฅ์†Œ์— ์ €์žฅ๋œ ํŒŒ์ผ๋“ค์˜ ๋ณ€ํ™”๋ฅผ Webhook์œผ๋กœ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, Git์—์„œ PR Merge๋กœ ์—…๋ฐ์ดํŠธ๋œ ํŒŒ์ผ์„ ๊ฐ์ง€ํ•˜์—ฌ ์ด์— ๋งž์ถฐ ์ž๋™์œผ๋กœ ์ƒˆ๋กœ ๋ฐฐํฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 

์ฆ‰, Argo CD๋Š” Git ์ €์žฅ์†Œ์— ์ €์žฅ๋œ ๋ฐฐํฌ ๊ด€๋ จ ํŒŒ์ผ๋“ค์˜ ์ƒํƒœ๋ฅผ ๊ณ„์† ํ™•์ธํ•˜๋ฉด์„œ ์‹ค์ œ ๋ฐฐํฌ ํ˜„ํ™ฉ๊ณผ Sync๋ฅผ ๋งž์ถ”๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด Argo CD์˜ v2.11 ์—…๋ฐ์ดํŠธ์—์„  ์–ด๋–ค ๋ณ€ํ™”๊ฐ€ ์žˆ์—ˆ์„๊นŒ์š”?

  • ๋ฐฐํฌ๋ฅผ ์‹œ์ž‘ํ•œ ์‚ฌ์šฉ์ž ์ด๋ฆ„ ํ‘œ์‹œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
    • Argo CD์—์„œ auto-sync ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐฐํฌ๋œ ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ, ๊ธฐ์กด์—๋Š” ๋ฐฐํฌ ์‹œ์ ์˜ Git Hash ๊ฐ’ ์™ธ์—๋Š” ๋ฐฐํฌ ์‹œ์ ์— ๊ด€ํ•œ ๋ณ„๋‹ค๋ฅธ ์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์•˜๋Š”๋ฐ์š”.
    • ์ด๋ฒˆ ์—…๋ฐ์ดํŠธ ์ดํ›„๋ถ€ํ„ฐ๋Š” ๋ฐฐํฌํ•œ ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์ด ํ‘œ์‹œ๋˜์–ด ํŽธ์˜์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ์†Œ์Šค(Multi-source)๋กœ๋ถ€ํ„ฐ ์ •์˜๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ง€์› ๊ณ ๋„ํ™”
    • Argo CD v2.6๋ถ€ํ„ฐ Multi-source๋ฅผ ํ™œ์šฉํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •์˜ ๊ธฐ๋Šฅ์ด ์ง€์›๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณต๊ฐœ ์ €์žฅ์†Œ์˜ Helm chart์™€ ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ์˜ values ํŒŒ์ผ์„ Argo CD๋ฅผ ํ†ตํ•ด ํ•จ๊ป˜ ๋ฐ›์•„์™€์„œ ์กฐํ•ฉ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๊ธฐ๋Šฅ์ธ๋ฐ์š”.
    • Argo CD CLI์™€ UI ์ค‘ ์ผ๋ถ€ ์˜์—ญ์—์„  Multi-source๋กœ ์ •์˜๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด Single-source๋กœ ์ •์˜๋œ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰๋˜์–ด์™”์Šต๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ์ด๋ฒˆ v2.11 ์—…๋ฐ์ดํŠธ ์ดํ›„๋ถ€ํ„ด Argo CD CLI ์ƒ์—์„œ ๋” ๋งŽ์€ ๋ช…๋ น์–ด๊ฐ€ Multi-source๋กœ ์ •์˜๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ง€์›ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

 

๐Ÿ”ญ๋งˆ์น˜๋ฉฐ...

์ด๋ฒˆ ์†Œ์‹์ง€์—์„  Argo CD์˜ ์ตœ์‹  ์†Œ์‹์„ ์†Œ๊ฐœํ•˜๋ฉด์„œ GitOps์™€ Argo CD์— ๋Œ€ํ•ด์„œ๋„ ๊ฐ„๋žตํžˆ ๋‹ค๋ค„๋ณด์•˜์Šต๋‹ˆ๋‹ค.  

ํ˜น์‹œ ์ด๋ฒˆ ๋‚ด์šฉ ๊ด€๋ จํ•ด์„œ ๋” ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด ์•„๋ž˜ ๋ฉ”์ผ๋ฆฌ ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.๐Ÿ˜€

๊ทธ๋Ÿผ, ๋‹ค์Œ ์†Œ์‹์ง€์—์„œ ๋ณด๋‹ค ์•Œ์ฐจ๊ณ  ํฅ๋ฏธ๋กœ์šด ๋‚ด์šฉ์œผ๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜บ

 

๐Ÿ”—References

 

 

๋‹ค๊ฐ€์˜ฌ ๋‰ด์Šค๋ ˆํ„ฐ๊ฐ€ ๊ถ๊ธˆํ•˜์‹ ๊ฐ€์š”?

์ง€๊ธˆ ๊ตฌ๋…ํ•ด์„œ ์ƒˆ๋กœ์šด ๋ ˆํ„ฐ๋ฅผ ๋ฐ›์•„๋ณด์„ธ์š”

โœ‰๏ธ

์ด๋ฒˆ ๋‰ด์Šค๋ ˆํ„ฐ ์–ด๋– ์…จ๋‚˜์š”?

DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€ ๋‹˜์—๊ฒŒ โ˜•๏ธ ์ปคํ”ผ์™€ โœ‰๏ธ ์ชฝ์ง€๋ฅผ ๋ณด๋‚ด๋ณด์„ธ์š”!

๋Œ“๊ธ€

์˜๊ฒฌ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”

ํ™•์ธ
์˜๊ฒฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ์ œ์ผ ๋จผ์ € ๋Œ“๊ธ€์„ ๋‹ฌ์•„๋ณด์„ธ์š” !
ยฉ 2024 DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€

DevOps, ํด๋ผ์šฐ๋“œ, IT ๊ธฐ์ˆ  ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹๊ณผ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ฃผ 1ํšŒ ์ด๋ฉ”์ผ๋กœ ์ „ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜บ

๋‰ด์Šค๋ ˆํ„ฐ ๋ฌธ์˜eduukulelekim@gmail.com

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ ์„œ๋น„์Šค ์†Œ๊ฐœ์„œ ์˜ค๋ฅ˜ ๋ฐ ๊ธฐ๋Šฅ ๊ด€๋ จ ์ œ๋ณด

์„œ๋น„์Šค ์ด์šฉ ๋ฌธ์˜admin@team.maily.so

๋ฉ”์ผ๋ฆฌ ์‚ฌ์—…์ž ์ •๋ณด

๋ฉ”์ผ๋ฆฌ (๋Œ€ํ‘œ์ž: ์ดํ•œ๊ฒฐ) | ์‚ฌ์—…์ž๋ฒˆํ˜ธ: 717-47-00705 | ์„œ์šธ ์„œ์ดˆ๊ตฌ ๊ฐ•๋‚จ๋Œ€๋กœ53๊ธธ 8, 8์ธต 11-7ํ˜ธ

์ด์šฉ์•ฝ๊ด€ | ๊ฐœ์ธ์ •๋ณด์ฒ˜๋ฆฌ๋ฐฉ์นจ | ์ •๊ธฐ๊ฒฐ์ œ ์ด์šฉ์•ฝ๊ด€