๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT

Argocd: ํ˜„๋Œ€์ ์ธ CI/CD๋ฅผ ์œ„ํ•œ ํšจ๊ณผ์ ์ธ ๋ฐฐํฌ ๋„๊ตฌ

by ๐Ÿ’ฒ๐ŸŽตโœ–๏ธโœ”๏ธโ˜ผ 2024. 2. 22.
728x90

Argocd: ํ˜„๋Œ€์ ์ธ CI/CD๋ฅผ ์œ„ํ•œ ํšจ๊ณผ์ ์ธ ๋ฐฐํฌ ๋„๊ตฌ

1. Argocd ์†Œ๊ฐœ

1.1 Argocd๋ž€?

Argocd๋Š” GitOps๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค์˜ CD(Continuous Deployment) ๋„๊ตฌ๋กœ, Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

1.2 Argocd์˜ ์œ ๋ž˜

Argocd๋Š” "Argo" ํ”„๋กœ์ ํŠธ์˜ ์ผํ™˜์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Argo ํ”„๋กœ์ ํŠธ๋Š” Kubernetes ๊ธฐ๋ฐ˜์˜ ์›Œํฌํ”Œ๋กœ์šฐ ๋ฐ CD๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

2. Argocd์˜ ํ•„์š”์„ฑ

2.1 GitOps ๊ธฐ๋ฐ˜์˜ CD

Argocd๋Š” GitOps ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜์—ฌ ๋ชจ๋“  ๋ฐฐํฌ ๊ตฌ์„ฑ๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅํ•จ์œผ๋กœ์จ, ์ธํ”„๋ผ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ๋ฒ„์ „ ๊ด€๋ฆฌํ•˜๊ณ  ์ถ”์ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

2.2 ์„ ์–ธ์  ๋ฐฐํฌ

YAML ํ˜•์‹์˜ ์„ ์–ธ์ ์ธ ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•˜์—ฌ, ์›ํ•˜๋Š” ์ƒํƒœ๋ฅผ ์„ ์–ธํ•˜๊ณ  Argocd๊ฐ€ ํ•ด๋‹น ์ƒํƒœ๋กœ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

2.3 ๋กค๋ง ์—…๋ฐ์ดํŠธ ๋ฐ ๋กค๋ฐฑ

Argocd๋Š” ๋กค๋ง ์—…๋ฐ์ดํŠธ์™€ ๋กค๋ฐฑ์„ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ, ์•ˆ์ „ํ•˜๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

3.1 ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ์˜ ์‚ฌ์šฉ

Argocd๋Š” ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๊ฑธ์ณ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ํƒ์›”ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์ž…๋‹ˆ๋‹ค.

3.2 GitOps๋ฅผ ํ†ตํ•œ ์ง€์†์ ์ธ ๋ฐฐํฌ

Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅ๋œ YAML ํŒŒ์ผ์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋ฏ€๋กœ, ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ์ถ”์ ํ•˜๊ณ  ๋กค๋ฐฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

4. ์ด์ ๊ณผ ์žฅ๋‹จ์ 

4.1 ์ด์ 

4.1.1 GitOps์˜ ์ด์ 

  • ์ƒํƒœ ์ถ”์ : Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅ๋˜์–ด์ง„ ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜์—ฌ ์–ธ์ œ๋“ ์ง€ ์›ํ•˜๋Š” ์ƒํƒœ๋กœ ๋กค๋ฐฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ํ˜‘์—… ๊ฐ•ํ™”: ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ ํ˜‘์—…์„ ํ†ตํ•ด ๋ฐฐํฌ ๊ตฌ์„ฑ์„ ๊ฒ€ํ† ํ•˜๊ณ  ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.1.2 Kubernetes์™€์˜ ํ†ตํ•ฉ

  • ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ: ์—ฌ๋Ÿฌ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.
  • Kustomize ์ง€์›: Kustomize๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ๋”์šฑ ์œ ์—ฐํ•˜๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.2 ์žฅ๋‹จ์ 

4.2.1 ์žฅ์ 

  • GitOps์˜ ์ผ๊ด€์„ฑ: GitOps ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜์—ฌ ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋ฐฐํฌ๋ฅผ ์‹คํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปค์Šคํ„ฐ๋งˆ์ด์ง•: Kustomize ๋ฐ Helm์„ ํ†ตํ•œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.

4.2.2 ๋‹จ์ 

  • ๋Ÿฌ๋‹ ์ปค๋ธŒ: ์ดˆ๊ธฐ์—๋Š” GitOps ๋ฐ Argocd์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ๊ฒฐ๋ก 

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

๋Œ“๊ธ€