[k8s] gitops ์ „๋žต

gitops๋Š” git ๊ธฐ๋ฐ˜์œผ๋กœ ์ธํ”„๋ผ ์ „์ฒด์˜ ์ƒํ™ฉ์„ ์ œ์–ดํ•œ๋‹ค๋Š” ์ ‘๊ทผ๋ฐฉ๋ฒ•์ด๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ๋Œ€๋ถ€๋ถ„ ์ด ์ ‘๊ทผ๋ฒ•์„ ๊ธฐ๋ณธ์œผ๋กœ ๊น”๊ณ  ์‹œ์ž‘ํ•œ๋‹ค.

์ผ๋‹จ ์ด ์ „๋žต์—์„œ ๊ธฐ๋ณธ์ด ๋˜๋Š”๊ฒŒ ArgoCD ๊ฐ™์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ „์šฉ yaml ๋ฐฐํฌ ๋„๊ตฌ๋‹ค.
๋ณธ์ ์ด ์—†๊ฑฐ๋‚˜ ์ž˜ ๋ชจ๋ฅธ๋‹ค๋ฉด ๋ณ„๋„ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.
https://blog.naver.com/sssang97/223112272539

์ €๊ฑธ ์‚ฌ์šฉํ•ด์„œ git ๊ธฐ๋ฐ˜์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฆฌ์†Œ์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ์ˆ˜์ •-๊ด€๋ฆฌํ•˜๋Š”๊ฒŒ ํ•ต์‹ฌ ์›๋ฆฌ ์ค‘ ํ•˜๋‚˜๋‹ค.

  1. github ๊ฐ™์€ git ๊ธฐ๋ฐ˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— yaml๋“ค์„ ์ •์˜ํ•ด๋†“๊ณ 
  2. ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๋ฉด ArgoCD์—์„œ ๊ทธ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์ด๋ ‡๋‹ค.
์ •ํ™•ํ•˜๊ฒŒ ๋”ฐ์ง€๋ฉด ArgoCD๊ฐ€ github์„ ๋ฐ”๋ผ๋ณด๋Š”๊ฑฐ๊ธด ํ•œ๋ฐ... ์•„๋ฌดํŠผ ์ˆœ์„œ์™€ ํ๋ฆ„์œผ๋กœ ๋ณด๋ฉด ์ด๋ ‡๋‹ค.

์—ฌ๊ธฐ์„œ Github๊ฐ™์€๊ฑธ ๋‹จ์ผ Truth ์†Œ์Šค(SSOT)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
๋ณ„ ์˜๋ฏธ๋Š” ์—†๋Š” ์„ค์ •๋†€์ด์ธ๋ฐ, ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋‹จ์ผ ์ง€์ ์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ์ธก๋ฉด์„ ๋ถ€๊ฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.




์•ฑ ๋ฐฐํฌ

๋‹จ์ˆœํ•œ ์ธํ”„๋ผ ์ฐจ์›์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ๊ทธ๋ƒฅ infra ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์„œ ArgoCD๋ฅผ ํƒ€๊ฒŒ ํ•œ๋‹ค๊ณ  ์น˜์ž.
๊ทธ๋Ÿฌ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฐํฌ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ข‹์„๊นŒ?

์ผ๋‹จ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๊ฐ€ ๊ธฐ๋ณธ์ด ๋œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด Github Action ๊ฐ™์€ ํŒŒ์ดํ”„๋ผ์ธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ docker๋กœ ๋ง์•„์„œ, ๋„์ปค ์ €์žฅ์†Œ์— pushํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋ฏธ์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” docker ๊ณต์‹, AWS ECR, github ๋“ฑ๋“ฑ์ด ๋งŽ์€๋ฐ, ์š”์ฆ˜์€ github์—์„œ ์ œ๊ณตํ•˜๋Š” ghcr๊ฐ€ ํ•ซํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ์ €๋ ดํ•˜๊ณ  ํ˜ธํ™˜์„ฑ๋„ ์ข‹๋‹ค๋‚˜.

๊ทผ๋ฐ ์ด๋ฏธ์ง€๋ฅผ ์˜ฌ๋ ธ๋‹ค ์น˜์ž. ๊ทธ๋Ÿฌ๋ฉด ์ด๋ฏธ์ง€์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— ์–ด๋–ป๊ฒŒ ๋ฐ˜์˜ํ•ด์•ผํ• ๊นŒ?
์—ฌ๊ธฐ์—๋Š” ๊ด€์ ์— ๋”ฐ๋ผ 2๊ฐ€์ง€ ์ ‘๊ทผ๋ฒ•์ด ์žˆ๋Š”๋“ฏํ•˜๋‹ค.




๋ฐฉ๋ฒ•1: CI์—์„œ ํ†ตํ•ฉ์ฒ˜๋ฆฌํ•˜๊ธฐ

์ด๊ฑธ Push ๋ฐฉ์‹์˜ gitops๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

Github Action ๋“ฑ์˜ CI ํ”„๋กœ์„ธ์Šค์—์„œ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ํ‘ธ์‹œํ•˜๊ณ , ํ‘ธ์‹œ๊ฐ€ ๋๋‚˜๋ฉด infra ์ฝ”๋“œ์˜ ๋„์ปค ์ด๋ฏธ์ง€ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•ด์„œ ์ƒˆ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐฐํฌ๋˜๋„๋ก ์œ ๋„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทผ๋ฐ ๋ญ... CI๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒƒ์„ ์ œ์–ดํ•œ๋‹ค๋Š” ์ ์—์„œ ๋ณด์•ˆ์ ์œผ๋กœ ์ข‹์ง€ ์•Š๋‹ค๋Š” ์‹œ๊ฐ๋„ ์žˆ๋Š”๋“ฏํ•˜๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค์Œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.




๋ฐฉ๋ฒ•2: ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜๊ธฐ

์ด๊ฑธ Pull ๋ฐฉ์‹์˜ gitops๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์ง์ ‘ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๋ณ€๊ฒฝ์„ ์ง์ ‘ ๊ฐ์‹œํ•ด์„œ, ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
์ด๋Ÿฐ๊ฑธ ํ•ด์ฃผ๋Š” ๋„๊ตฌ๋กœ๋Š” ArgoCD Image Update ๋“ฑ์ด ์žˆ๋‹ค.

๊ทผ๋ฐ ๋ญ ์ƒํƒœ๊ด€๋ฆฌ๊ฐ€ ๋ฌด์กฐ๊ฑด ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€ ๋ฒ„์ „์ผ ํ•„์š”๋„ ์—†๊ณ , ์ง์ ‘ ๋งŒ๋“ค์–ด๋„ ๋˜๊ธด ํ•œ๋‹ค.

์ด๊ฑธ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์ด๋Ÿฐ ์‹์ด ๋œ๋‹ค.

docker registry๋ผ๋Š” ์ƒํƒœ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋‘๊ณ  CI์™€ CD๊ฐ€ ๋…์ž์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”๊ฒŒ ๋‹ค๋ฅธ ์ ์ด๋‹ค.
๊ทธ๋ž˜์„œ ๋ณด์•ˆ์ ์œผ๋กœ๋Š” ์กฐ๊ธˆ ๋” ๋‚˜์€ ๊ตฌ์„ฑ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

gitops๋ผ๋Š” ๊ฐœ๋…์„ ์ฒ˜์Œ ์ œ์•ˆํ•œ weavework์—์„œ๋„ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ๊ถŒ์žฅํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.



์ฐธ์กฐ
https://www.samsungsds.com/kr/insights/gitops.html
https://www.youtube.com/watch?v=XvOSZY9-Tzw