GitOps๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ฉ”๋ชจ. ๋ฒˆ์—ญ: ์ตœ๊ทผ ์ถœํŒ ์ดํ›„ ์ž๋ฃŒ GitOps์˜ ํ’€ ๋ฐ ํ‘ธ์‹œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์šฐ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ๋ชจ๋ธ์— ๋Œ€ํ•œ ๊ด€์‹ฌ์„ ๋ณด์•˜์ง€๋งŒ ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ๋Ÿฌ์‹œ์•„์–ด ์ถœํŒ๋ฌผ์€ ๊ฑฐ์˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค(Habrรฉ์— ๊ด€ํ•œ ์ถœํŒ๋ฌผ์€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค). ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๋น„๋ก ๊ฑฐ์˜ XNUMX๋…„ ์ „์ด์ง€๋งŒ ๋‹ค๋ฅธ ๊ธฐ์‚ฌ์˜ ๋ฒˆ์—ญ์„ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ด€์‹ฌ์— ์ œ๊ณตํ•˜๊ฒŒ ๋œ ๊ฒƒ์„ ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค! โ€” "GitOps"๋ผ๋Š” ์šฉ์–ด๋ฅผ ๋งŒ๋“  Weaveworks์—์„œ. ๋ณธ๋ฌธ์—์„œ๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์˜ ๋ณธ์งˆ๊ณผ ๊ธฐ์กด ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ์˜ ์ฃผ์š” ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

XNUMX๋…„ ์ „์— ์šฐ๋ฆฌ๋Š” ์ถœํŒํ–ˆ์Šต๋‹ˆ๋‹ค. GitOps ์†Œ๊ฐœ. ๋‹น์‹œ ์šฐ๋ฆฌ๋Š” Weaveworks ํŒ€์ด ์™„์ „ํžˆ Kubernetes๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ SaaS๋ฅผ ์ถœ์‹œํ•˜๊ณ  ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ์—์„œ ๋ฐฐํฌ, ๊ด€๋ฆฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ๊ทœ๋ฒ”์ ์ธ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๊ฐœ๋ฐœํ•œ ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ธฐ์‚ฌ๊ฐ€ ์ธ๊ธฐ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ GitOps์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  GitOps๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋„๊ตฌ๋ฅผ ๊ฒŒ์‹œํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. git push, ๋ฐœ์ „, ๋น„๋ฐ€, ๊ธฐ๋Šฅ๋“ค, ์ง€์†์ ์ธ ํ†ตํ•ฉ ๋“ฑ๋“ฑ. ์šฐ๋ฆฌ ์›น์‚ฌ์ดํŠธ์— ๋“ฑ์žฅํ–ˆ์–ด์š” ๋‹ค์ˆ˜ ์ถœํŒ๋ฌผ ๋ฐ GitOps ์‚ฌ์šฉ ์‚ฌ๋ก€. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹โ€‹โ€‹์งˆ๋ฌธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ ๊ธฐ์กด ๋ชจ๋ธ๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š”? ์ฝ”๋“œ๋กœ์„œ์˜ ์ธํ”„๋ผ ์ง€์†์ ์ธ ์ „๋‹ฌ(์ง€์†์ ์ธ ๋ฐฐ๋‹ฌ)? Kubernetes๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜์š”?

์šฐ๋ฆฌ๋Š” ๊ณง ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์„ค๋ช…์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

  1. ์ˆ˜๋งŽ์€ ์‚ฌ๋ก€์™€ ์ด์•ผ๊ธฐ;
  2. GitOps์˜ ๊ตฌ์ฒด์ ์ธ ์ •์˜
  3. ๊ธฐ์กด ์ง€์†์  ์ „๋‹ฌ๊ณผ ๋น„๊ต.

์ด ๊ธฐ์‚ฌ์—์„œ ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃจ๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. GitOps์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋œ ์†Œ๊ฐœ์™€ ๊ฐœ๋ฐœ์ž ๋ฐ CI/CD ๊ด€์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์ด ์ผ๋ฐ˜ํ™”๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ฃผ๋กœ Kubernetes์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.

GitOps๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”

์•จ๋ฆฌ์Šค๋ฅผ ์ƒ์ƒํ•ด ๋ณด์„ธ์š”. ๊ทธ๋…€๋Š” ๋„ˆ๋ฌด ๋ฐ”๋น ์„œ ๊ณ„์•ฝ ๋‚ด์šฉ์„ ์ง์ ‘ ํŒŒ์•…ํ•  ์ˆ˜ ์—†๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฑด๊ฐ•, ์ž๋™์ฐจ, ์ฃผํƒ ๋ฐ ์—ฌํ–‰ ๋ณดํ—˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์กฑ ๋ณดํ—˜(Family Insurance)์„ ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋…€์˜ ์‚ฌ์—…์€ Alice๊ฐ€ ์€ํ–‰์—์„œ ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž๋กœ ์ผํ•  ๋•Œ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋กœ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ๋‚  ๊ทธ๋…€๋Š” ๊ณ ๊ธ‰ ์ปดํ“จํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ๋ณดํ—˜ ํŒจํ‚ค์ง€๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ํˆฌ์ž์ž๋“ค์ด ์ด ํ”„๋กœ์ ํŠธ์— ์ž๊ธˆ์„ ์ง€์›ํ–ˆ๊ณ , ์ด์ œ ๊ทธ๋…€์˜ ํšŒ์‚ฌ๋Š” ์—ฐ๊ฐ„ 20์ฒœ๋งŒ ๋‹ฌ๋Ÿฌ ์ด์ƒ์„ ๋ฒŒ์–ด๋“ค์ด๋ฉฐ ๋น ๋ฅด๊ฒŒ ์„ฑ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋‹ค์–‘ํ•œ ์ง์œ„์—์„œ 180๋ช…์˜ ์ง์›์„ ๊ณ ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์›น ์‚ฌ์ดํŠธ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐœ๋ฐœ, ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ๊ณ ๊ฐ ๊ธฐ๋ฐ˜์„ ๋ถ„์„ํ•˜๋Š” ๊ธฐ์ˆ  ํŒ€์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. 60๋ช…์œผ๋กœ ๊ตฌ์„ฑ๋œ ํŒ€์€ ํšŒ์‚ฌ์˜ ๊ธฐ์ˆ  ์ด์‚ฌ์ธ Bob์ด ์ด๋Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Bob์˜ ํŒ€์€ ํด๋ผ์šฐ๋“œ์— ํ”„๋กœ๋•์…˜ ์‹œ์Šคํ…œ์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ GKE์—์„œ ์‹คํ–‰๋˜๋ฉฐ Google Cloud์˜ Kubernetes๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ทธ๋“ค์€ ์—…๋ฌด์— ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๋ฐ ๋ถ„์„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Family Insurance๋Š” ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ์— ์ฐฉ์ˆ˜ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ Docker ์—ด์ •์— ์‚ฌ๋กœ์žกํ˜”์Šต๋‹ˆ๋‹ค. ํšŒ์‚ฌ๋Š” GKE๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ณง ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด CI ๋ฐ Quay์šฉ Jenkins๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ, ์ƒˆ ์ปจํ…Œ์ด๋„ˆ์™€ ๊ตฌ์„ฑ์„ GKE์— ํ‘ธ์‹œํ•˜๋Š” Jenkins์šฉ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„์ด ์ข€ ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค. Alice์™€ Bob์€ ์ž์‹ ๋“ค์ด ์„ ํƒํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์„ฑ๊ณผ์™€ ๊ทธ๊ฒƒ์ด ๋น„์ฆˆ๋‹ˆ์Šค์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์— ์‹ค๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์ž…ํ•ด๋„ ํŒ€์ด ๊ธฐ๋Œ€ํ–ˆ๋˜ ๋งŒํผ ์ƒ์‚ฐ์„ฑ์ด ํ–ฅ์ƒ๋˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ๋ฐฐํฌ๊ฐ€ ์ค‘๋‹จ๋˜๊ณ  ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์›์ธ์ธ์ง€ ์—ฌ๋ถ€๊ฐ€ ๋ถˆ๋ถ„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๋Š” ๊ฒƒ๋„ ์–ด๋ ค์šด ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ƒˆ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ทธ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋Š”๋ฐ, ์ด๊ฒƒ์ด ์‹œ์Šคํ…œ์˜ ํ˜ผ๋ž€์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Alice๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ฐœ๋ฐœ๋จ์— ๋”ฐ๋ผ ์ƒํ™ฉ์ด ๋”์šฑ ์•…ํ™”๋  ๊ฒƒ์„ ๋‘๋ ค์›Œํ–ˆ์Šต๋‹ˆ๋‹ค(๋˜ํ•œ ๊ธฐ๊ณ„ ํ•™์Šต์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๊ฐ€ ์ค€๋น„ ์ค‘์ด์—ˆ์Šต๋‹ˆ๋‹ค). Bob์€ ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์„ ์ž๋™ํ™”ํ–ˆ๋Š”๋ฐ ์™œ ํŒŒ์ดํ”„๋ผ์ธ์ด ์—ฌ์ „ํžˆ ๋ถˆ์•ˆ์ •ํ•˜๊ณ , ํ™•์žฅ์ด ์ž˜ ์•ˆ ๋˜๊ณ , ์ฃผ๊ธฐ์ ์œผ๋กœ ์ˆ˜๋™ ๊ฐœ์ž…์ด ํ•„์š”ํ•œ์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜์…จ๋‚˜์š”?

๊ทธ๋Ÿฐ ๋‹ค์Œ GitOps์— ๋Œ€ํ•ด ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฐ์ •์€ ๊ทธ๋“ค์ด ์ž์‹ ๊ฐ ์žˆ๊ฒŒ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๋ฐ ๊ผญ ํ•„์š”ํ•œ ๊ฒฐ์ •์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Alice์™€ Bob์€ ์ˆ˜๋…„ ๋™์•ˆ Git, DevOps ๋ฐ ์ฝ”๋“œ ์›Œํฌํ”Œ๋กœ๋กœ์„œ์˜ ์ธํ”„๋ผ์— ๋Œ€ํ•ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค. GitOps์˜ ๋…ํŠนํ•œ ์ ์€ Kubernetes์˜ ๋งฅ๋ฝ์—์„œ ์ด๋Ÿฌํ•œ ์•„์ด๋””์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ๋ช…ํ™•ํ•˜๊ณ  ๊ทœ๋ฒ”์ ์ธ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํ…Œ๋งˆ ๋ฐ˜๋ณตํ•ด์„œ ์žฅ๋ฏธ, ํฌํ•จ ์œ„๋ธŒ์›์Šค ๋ธ”๋กœ๊ทธ.

Family Insurance๋Š” GitOps๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํšŒ์‚ฌ๋Š” Kubernetes์™€ ํ˜ธํ™˜๋˜๊ณ  ๋‹ค์Œ์„ ๊ฒฐํ•ฉํ•œ ์ž๋™ํ™”๋œ ์šด์˜ ๋ชจ๋ธ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์†๋„ ๊ณผ ์•ˆ์ •์™œ๋ƒํ•˜๋ฉด ๊ทธ๋“ค์€:

  • ๋ˆ„๊ตฌ๋„ ๋ฏธ์ณ๋ฒ„๋ฆฌ์ง€ ์•Š๊ณ  ํŒ€์˜ ์ƒ์‚ฐ์„ฑ์ด ๋‘ ๋ฐฐ๋กœ ์ฆ๊ฐ€ํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์Šคํฌ๋ฆฝํŠธ ์ œ๊ณต์„ ์ค‘์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ด์ œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ์ง‘์ค‘ํ•˜๊ณ  ์—”์ง€๋‹ˆ์–ด๋ง ๋ฐฉ๋ฒ•์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์นด๋‚˜๋ฆฌ์•„ ์ถœ์‹œ ๋ฐ ํ…Œ์ŠคํŠธ ๊ฐœ์„  ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฑฐ์˜ ์ค‘๋‹จ๋˜์ง€ ์•Š๋„๋ก ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ถ€๋ถ„์ ์ธ ์‹คํŒจ ํ›„ ์ˆ˜๋™ ๊ฐœ์ž… ์—†์ด ๋ฐฐํฌ๋ฅผ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ตฌ์ž…ํ•œ ์ค‘๊ณ ะพ๋ฐฐ์†ก ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋„๊ฐ€ ๋†’์•„์กŒ์Šต๋‹ˆ๋‹ค. Alice์™€ Bob์€ ํŒ€์„ ๋ณ‘๋ ฌ๋กœ ์ž‘์—…ํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํŒ€์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ๊ทธ๋ฃน์˜ ๋…ธ๋ ฅ์„ ํ†ตํ•ด ๋งค์ผ ํ”„๋กœ์ ํŠธ๋ฅผ 30~50๊ฐœ ๋ณ€๊ฒฝํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ช‡ ์‹œ๊ฐ„ ๋‚ด์— ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๋•์…˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ถœ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ๊ฐ€์ง„ ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์ž๋ฅผ ํ”„๋กœ์ ํŠธ์— ์‰ฝ๊ฒŒ ์œ ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • SOC2 ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด์—์„œ ์‰ฝ๊ฒŒ ๊ฐ์‚ฌ๋ฅผ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. (์„œ๋น„์Šค ์ œ๊ณต์—…์ฒด์˜ ์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ์š”๊ตฌ ์‚ฌํ•ญ ์ค€์ˆ˜๋ฅผ ์œ„ํ•ด, ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— - ๋Œ€๋žต. ๋ฒˆ์—ญ).

๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ์ฃ ?

GitOps๋Š” ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  1. Kubernetes ๋ฐ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ๋ฅผ ์œ„ํ•œ ์šด์˜ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆํ™”๋œ ํด๋Ÿฌ์Šคํ„ฐ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌ, ๊ด€๋ฆฌ, ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ˜•์‹์˜ ์šฐ์•„ํ•œ ์ •์˜ ์Šฌ๋ผ์ด๋“œ ํ•˜๋‚˜ ๋ถ€ํ„ฐ ๋ฃจ์ด์Šค ํŒŒ์„ธ์ด๋ผ:
  2. ๊ฐœ๋ฐœ์ž ์ค‘์‹ฌ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ฆฌ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์šด์˜๊ณผ ๊ฐœ๋ฐœ ๋ชจ๋‘์— Git ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹จ์ง€ Git ํ‘ธ์‹œ์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ „์ฒด CI/CD ๋ฐ UI/UX ๋„๊ตฌ ์„ธํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Git์— ๋Œ€ํ•œ ๋ช‡ ๋งˆ๋””

๋ฒ„์ „ ์ œ์–ด ์‹œ์Šคํ…œ๊ณผ Git ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ์šฐ์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์ด์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ธŒ๋žœ์น˜ ๋ฐ ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ ์ž‘์—…์€ ์ฒ˜์Œ์—๋Š” ํ‘๋งˆ๋ฒ•์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋…ธ๋ ฅํ•œ ๋งŒํผ์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์ข‹์€ ๊ธฐ์‚ฌ ์‹œ์ž‘ํ•œ๋‹ค.

Kubernetes ์ž‘๋™ ๋ฐฉ์‹

์šฐ๋ฆฌ ์ด์•ผ๊ธฐ์—์„œ Alice์™€ Bob์€ ํ•œ๋™์•ˆ Kubernetes๋กœ ์ž‘์—…ํ•œ ํ›„ GitOps๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ GitOps๋Š” Kubernetes์™€ ๋ฐ€์ ‘ํ•œ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Kubernetes ๊ธฐ๋ฐ˜ ์ธํ”„๋ผ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์šด์˜ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

Kubernetes๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌด์—‡์„ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ?

๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

  1. Kubernetes ๋ชจ๋ธ์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์„ ์–ธ์  ํ˜•์‹์œผ๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. Kubernetes API ์„œ๋ฒ„๋Š” ์ด ์„ ์–ธ์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„๋“ค์ธ ๋‹ค์Œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ ์–ธ์— ์„ค๋ช…๋œ ์ƒํƒœ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ง€์†์ ์œผ๋กœ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  3. ์„ ์–ธ์€ ๋‹ค์–‘ํ•œ ์›Œํฌ๋กœ๋“œ, ์ฆ‰ "์• ํ”Œ๋ฆฌ์ผ€์ด์…˜"์„ ์„ค๋ช…ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๋ณ€๊ฒฝ;
    • ์„ ์–ธ์  ์‚ฌ์–‘ ๋ณ€๊ฒฝ
    • ํ™˜๊ฒฝ ์˜ค๋ฅ˜(์˜ˆ: ์ปจํ…Œ์ด๋„ˆ ์ถฉ๋Œ)

Kubernetes์˜ ๋›ฐ์–ด๋‚œ ์œตํ•ฉ ๊ธฐ๋Šฅ

๊ด€๋ฆฌ์ž๊ฐ€ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋ฉด Kubernetes ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๋Š” ์ƒํƒœ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•œ ์ด๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ์— ๊ทผ์ ‘ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ ๋ชจ๋“  Kubernetes ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์ž‘๋™ํ•˜๋ฉฐ CRD(์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌ์†Œ์Šค ์ •์˜)๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Kubernetes ๋ฐฐํฌ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ›Œ๋ฅญํ•œ ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์˜คํ† ๋ฉ”์ด์…˜: Kubernetes ์—…๋ฐ์ดํŠธ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์‹œ์— ์ ์ ˆํ•˜๊ฒŒ ์ ์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ˆ˜๋ ด: Kubernetes๋Š” ์„ฑ๊ณตํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉฑ๋“ฑ์„ฑ: ์œตํ•ฉ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ ์šฉํ•˜๋ฉด ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.
  • ๊ฒฐ์ •๋ก : ๋ฆฌ์†Œ์Šค๊ฐ€ ์ถฉ๋ถ„ํ•˜๋ฉด ์—…๋ฐ์ดํŠธ๋œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋Š” ์›ํ•˜๋Š” ์ƒํƒœ์—๋งŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

GitOps ์ž‘๋™ ๋ฐฉ์‹

GitOps์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด Kubernetes์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํžˆ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

Family Insurance์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํŒ€์œผ๋กœ ๋Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋ณดํ†ต ๋ฌด์—‡์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์•„๋ž˜ ๋ชฉ๋ก์„ ์‚ดํŽด๋ณด์„ธ์š”. (ํ˜น์‹œ ๋‚ฏ์„ค๊ฑฐ๋‚˜ ๋‚ฏ์„ค๊ฒŒ ๋ณด์ด๋Š” ํ•ญ๋ชฉ์ด ์žˆ์œผ๋ฉด ๋น„ํŒ์„ ์ž ์‹œ ๋ฉˆ์ถ”๊ณ  ํ•จ๊ป˜ํ•ด์ฃผ์„ธ์š”.) ์ด๋Š” Jenkins ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ์˜ ์˜ˆ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋„๊ตฌ๋กœ ์ž‘์—…ํ•  ๋•Œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋„ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

1.์ž‘์—… ๊ณผ์ •: "Jenkins ๋นŒ๋“œ - ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜".
์ž‘์—… ๋ชฉ๋ก:

  • Jenkins๋Š” ํƒœ๊ทธ๋œ ์ด๋ฏธ์ง€๋ฅผ Quay์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • Jenkins๋Š” ๊ตฌ์„ฑ ๋ฐ Helm ์ฐจํŠธ๋ฅผ ๋งˆ์Šคํ„ฐ ์Šคํ† ๋ฆฌ์ง€ ๋ฒ„ํ‚ท์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์€ ๋งˆ์Šคํ„ฐ ์Šคํ† ๋ฆฌ์ง€ ๋ฒ„ํ‚ท์˜ ๊ตฌ์„ฑ๊ณผ ์ฐจํŠธ๋ฅผ ๋งˆ์Šคํ„ฐ Git ์ €์žฅ์†Œ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • GitOps ์šด์˜์ž๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

2. Jenkins ๋นŒ๋“œ - ๋ฆด๋ฆฌ์Šค ๋˜๋Š” ํ•ซํ”ฝ์Šค ๋ถ„๊ธฐ:

  • Jenkins๋Š” ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ์ด๋ฏธ์ง€๋ฅผ Quay๋กœ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • Jenkins๋Š” ๊ตฌ์„ฑ ๋ฐ Helm ์ฐจํŠธ๋ฅผ ์Šคํ…Œ์ด์ง• ์Šคํ† ๋ฆฌ์ง€ ๋ฒ„ํ‚ท์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์€ ์Šคํ…Œ์ด์ง• ์Šคํ† ๋ฆฌ์ง€ ๋ฒ„ํ‚ท์˜ ๊ตฌ์„ฑ ๋ฐ ์ฐจํŠธ๋ฅผ ์Šคํ…Œ์ด์ง• Git ์ €์žฅ์†Œ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • GitOps ์šด์˜์ž๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

3. Jenkins ๋นŒ๋“œ - ๋ธŒ๋žœ์น˜ ๊ฐœ๋ฐœ ๋˜๋Š” ๊ธฐ๋Šฅ:

  • Jenkins๋Š” ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ์ด๋ฏธ์ง€๋ฅผ Quay๋กœ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • Jenkins๋Š” ๊ตฌ์„ฑ ๋ฐ Helm ์ฐจํŠธ๋ฅผ ๊ฐœ๋ฐœ ์Šคํ† ๋ฆฌ์ง€ ๋ฒ„ํ‚ท์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์€ ๊ฐœ๋ฐœ ์Šคํ† ๋ฆฌ์ง€ ๋ฒ„ํ‚ท์˜ ๊ตฌ์„ฑ ๋ฐ ์ฐจํŠธ๋ฅผ ๊ฐœ๋ฐœ Git ์ €์žฅ์†Œ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • GitOps ์šด์˜์ž๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

4. ์ƒˆ ํด๋ผ์ด์–ธํŠธ ์ถ”๊ฐ€:

  • ๊ด€๋ฆฌ์ž(LCM/ops)๋Š” Gradle์„ ํ˜ธ์ถœํ•˜์—ฌ ์ดˆ๊ธฐ์— ๋„คํŠธ์›Œํฌ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ(NLB)๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • LCM/ops๋Š” ์—…๋ฐ์ดํŠธ ๋ฐฐํฌ๋ฅผ ์ค€๋น„ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ๊ตฌ์„ฑ์„ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.
  • GitOps ์šด์˜์ž๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

GitOps์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…

  1. ๊ฐ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์„ ์–ธ์  ์‚ฌ์–‘์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์›ํ•˜๋Š” ์ƒํƒœ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค(์ด ์ด์•ผ๊ธฐ์—์„œ๋Š” Bob์˜ ํŒ€์ด Git์—์„œ ์ „์ฒด ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค).
    • Git ์ €์žฅ์†Œ๋Š” ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์›ํ•˜๋Š” ์ƒํƒœ์— ๊ด€ํ•œ ๋‹จ์ผ ์ •๋ณด ์†Œ์Šค์ž…๋‹ˆ๋‹ค.
    • ์›ํ•˜๋Š” ์ƒํƒœ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ์€ Git์˜ ์ปค๋ฐ‹์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
    • ์›ํ•˜๋Š” ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์ž์ฒด์—์„œ๋„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์ด ์ผ์น˜ํ•˜๋Š”์ง€(์ˆ˜๋ ด, ๋ชจ์ด๋‹ค) ๋˜๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค (๋ฐœ์‚ฐ, ๋ถ„๊ธฐํ•˜๋‹ค) ์›ํ•˜๋Š” ์ƒํƒœ์™€ ๊ด€์ฐฐ๋œ ์ƒํƒœ.
  2. ์›ํ•˜๋Š” ์ƒํƒœ์™€ ๊ด€์ฐฐ๋œ ์ƒํƒœ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ:
    • ์กฐ๋งŒ๊ฐ„ ๋Œ€์ƒ ์ƒํƒœ์™€ ๊ด€์ฐฐ๋œ ์ƒํƒœ๋ฅผ ์ž๋™์œผ๋กœ ๋™๊ธฐํ™”ํ•˜๋Š” ์ˆ˜๋ ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ Kubernetes๋Š” ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค๋Š” "๋ณ€๊ฒฝ ์ปค๋ฐ‹" ๊ฒฝ๊ณ ์™€ ํ•จ๊ป˜ ์ฆ‰์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
    • ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์ผ์ • ๊ธฐ๊ฐ„์ด ์ง€๋‚œ ํ›„ ์ƒํƒœ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ "diff" ๊ฒฝ๊ณ ๊ฐ€ ์ „์†ก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ Git์˜ ๋ชจ๋“  ์ปค๋ฐ‹์€ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•ด ๊ฒ€์ฆ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฉฑ๋“ฑ์ ์ธ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
    • ๋กค๋ฐฑ์€ ์ด์ „์— ์›ํ•˜๋Š” ์ƒํƒœ๋กœ ์ˆ˜๋ ดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  4. ์ˆ˜๋ ด์€ ์ตœ์ข…์ ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ฐœ์ƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
    • ํŠน์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ์ฐจ์ด ์•Œ๋ฆผ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • "์ˆ˜๋ ดํ˜•" ๊ฒฝ๊ณ (์˜ˆ: ์›นํ›…, Git ์“ฐ๊ธฐ ์ €์žฅ ์ด๋ฒคํŠธ).

๋‹ค์ด๋ฒ„์ „์Šค๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๋‹ค์‹œ ๋ฐ˜๋ณตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ์†์„ฑ์€ ํด๋Ÿฌ์Šคํ„ฐ ์ž์ฒด์—์„œ ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค..

๋ฐœ์‚ฐ์˜ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ:

  • Git์˜ ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ์œผ๋กœ ์ธํ•ด ๊ตฌ์„ฑ ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • GUI ํด๋ผ์ด์–ธํŠธ์˜ Git ์ปค๋ฐ‹์œผ๋กœ ์ธํ•ด ๊ตฌ์„ฑ ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Git์˜ PR๋กœ ์ธํ•ด ์›ํ•˜๋Š” ์ƒํƒœ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณ€๊ฒฝ๋œ ํ›„ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๊ฐ€ ๋นŒ๋“œ๋˜๊ณ  ๊ตฌ์„ฑ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ค๋ฅ˜๋กœ ์ธํ•œ ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ ๋ณ€๊ฒฝ, "์ž˜๋ชป๋œ ๋™์ž‘"์„ ์ดˆ๋ž˜ํ•˜๋Š” ๋ฆฌ์†Œ์Šค ์ถฉ๋Œ ๋˜๋Š” ๋‹จ์ˆœํžˆ ์›๋ž˜ ์ƒํƒœ์—์„œ ๋ฌด์ž‘์œ„๋กœ ๋ฒ—์–ด๋‚œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์ˆ˜๋ ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ช‡ ๊ฐ€์ง€ ์˜ˆ :

  • ์ปจํ…Œ์ด๋„ˆ์™€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฒฝ์šฐ Kubernetes์—์„œ ์ˆ˜๋ ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋™์ผํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ๋””์ž์ธ(์˜ˆ: Istio ๋ฐ Kubeflow)์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Kubernetes, ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ ๋ฐ Git ๊ฐ„์˜ ์šด์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋‹ค์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. GitOps ์šด์˜์ž Weave Flux, ์ด๋Š” ์ผ๋ถ€์ž…๋‹ˆ๋‹ค ์œ„๋ธŒ ํด๋ผ์šฐ๋“œ.
  • ๊ธฐ๋ณธ ๋จธ์‹ ์˜ ๊ฒฝ์šฐ ์ˆ˜๋ ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์„ ์–ธ์ ์ด๊ณ  ์ž์œจ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ž์‹ ์˜ ๊ฒฝํ—˜์„ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ๋ผ ํผ ์ด ์ •์˜์— ๊ฐ€์žฅ ๊ฐ€๊น์ง€๋งŒ ์—ฌ์ „ํžˆ ์ธ๊ฐ„์˜ ํ†ต์ œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜๋ฏธ์—์„œ GitOps๋Š” ์ฝ”๋“œํ˜• ์ธํ”„๋ผ์˜ ์ „ํ†ต์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

GitOps๋Š” Git๊ณผ Kubernetes์˜ ํƒ์›”ํ•œ ์œตํ•ฉ ์—”์ง„์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํ™œ์šฉ ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

GitOps๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค๋ช…ํ•˜๊ณ  ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ๋งŒ ์ž๋™ํ™”ํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค..

GitOps๋Š” ์ „์ฒด ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์Šคํƒ(์˜ˆ: Terraform ๋“ฑ)์„ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

GitOps๋Š” ๋‹จ์ˆœํ•œ Kubernetes๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ „์ฒด ์‹œ์Šคํ…œ์ด ์„ ์–ธ์ ์œผ๋กœ ๊ตฌ๋™๋˜๊ณ  ์ˆ˜๋ ด์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ์‹œ์Šคํ…œ์ด๋ž€ Kubernetes์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ํ™˜๊ฒฝ ๋ชจ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: "๊ฐœ๋ฐœ ํด๋Ÿฌ์Šคํ„ฐ 1", "ํ”„๋กœ๋•์…˜" ๋“ฑ). ๊ฐ ํ™˜๊ฒฝ์—๋Š” ์‹œ์Šคํ…œ, ํด๋Ÿฌ์Šคํ„ฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฌผ๋ก  ๋ฐ์ดํ„ฐ, ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ œ๊ณตํ•˜๋Š” ์™ธ๋ถ€ ์„œ๋น„์Šค์šฉ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋“ฑ๋“ฑ

์ด ๊ฒฝ์šฐ ๋ถ€ํŠธ์ŠคํŠธ๋ž˜ํ•‘ ๋ฌธ์ œ์— Terraform์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€ ํ™•์ธํ•˜์„ธ์š”. Kubernetes๋Š” ์–ด๋”˜๊ฐ€์— ๋ฐฐํฌ๋˜์–ด์•ผ ํ•˜๋ฉฐ Terraform์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋™์ผํ•œ GitOps ์›Œํฌํ”Œ๋กœ๋ฅผ ์ ์šฉํ•˜์—ฌ Kubernetes์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋’ท๋ฐ›์นจํ•˜๋Š” ์ œ์–ด ๊ณ„์ธต์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์œ ์šฉํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

Kubernetes ์œ„์— ์žˆ๋Š” ๋ ˆ์ด์–ด์— GitOps ๊ฐœ๋…์„ ์ ์šฉํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Istio, Helm, Ksonnet, OpenFaaS ๋ฐ Kubeflow๋ฅผ ์œ„ํ•œ GitOps ์œ ํ˜• ์†”๋ฃจ์…˜์ด ์žˆ์œผ๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ณ„์ธต์„ ์ƒ์„ฑํ•˜๋Š” Pulumi์šฉ ์†”๋ฃจ์…˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes CI/CD: GitOps์™€ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹ ๋น„๊ต

์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด GitOps๋Š” ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  1. ์œ„์—์„œ ์„ค๋ช…ํ•œ Kubernetes ๋ฐ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ์˜ ์šด์˜ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.
  2. ๊ฐœ๋ฐœ์ž ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ฆฌ ํ™˜๊ฒฝ์œผ๋กœ ๊ฐ€๋Š” ๊ธธ.

๋งŽ์€ ๊ฒฝ์šฐ GitOps๋Š” ์ฃผ๋กœ Git ํ‘ธ์‹œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์›Œํฌํ”Œ๋กœ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋„ ๊ทธ๋ฅผ ์ข‹์•„ํ•ด์š”. ํ•˜์ง€๋งŒ ๊ทธ๊ฒŒ ๋‹ค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด์ œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

GitOps๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Kubernetes์— ๋Œ€ํ•œ CD(์ง€์†์  ๋ฐฐํฌ)๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

GitOps๋Š” ๋ณ„๋„์˜ "๋ฐฐํฌ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ"์ด ํ•„์š” ์—†๋Š” ์ง€์†์ ์ธ ๋ฐฐํฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Kubernetes๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด Git์—์„œ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์›ํ•˜๋Š” ์ƒํƒœ์— ๋Œ€ํ•œ ํŠธ๋žœ์žญ์…˜ ์—…๋ฐ์ดํŠธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์—…๋ฐ์ดํŠธ๋œ ์„ค๋ช…์„ ๊ธฐ๋ฐ˜์œผ๋กœ Kubernetes ์ž์ฒด์— ์˜ํ•ด ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ "๋ฐฐํฌ"๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  • Kubernetes ์ž‘๋™ ๋ฐฉ์‹์˜ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ์ด๋Ÿฌํ•œ ์—…๋ฐ์ดํŠธ๋Š” ์ˆ˜๋ ด๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋“  ์—…๋ฐ์ดํŠธ๊ฐ€ ์›์ž์„ฑ์ธ ์ง€์†์ ์ธ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ฐธ๊ณ  : ์œ„๋ธŒ ํด๋ผ์šฐ๋“œ Git๊ณผ Kubernetes๋ฅผ ํ†ตํ•ฉํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์˜ ์›ํ•˜๋Š” ์ƒํƒœ์™€ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์กฐ์ •ํ•˜์—ฌ CD๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” GitOps ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

kubectl ๋ฐ ์Šคํฌ๋ฆฝํŠธ ์—†์ด

ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด Kubectl์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•ด์•ผ ํ•˜๋ฉฐ, ํŠนํžˆ kubectl ๋ช…๋ น์„ ๊ทธ๋ฃนํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  GitOps ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ Git์„ ํ†ตํ•ด Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜œํƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์˜ค๋ฅธ์ชฝ. ์ผ๋ จ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ ์šฉํ•˜๊ณ  ์ˆ˜๋ ดํ•˜๊ณ  ์ตœ์ข…์ ์œผ๋กœ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์–ด ์›์ž ๋ฐฐํฌ ๋ชฉํ‘œ์— ๋” ๊ฐ€๊นŒ์›Œ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์กฐ์ ์œผ๋กœ, ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜๋ ด์ด ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ์ฐธ์กฐ).
  2. ะ‘ะตะทะพะฟะฐัะฝะพัั‚ัŒ. ์ธ์šฉ Kelsey Hightower: "Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ž๋™ํ™” ๋„๊ตฌ์™€ ๋””๋ฒ„๊น… ๋˜๋Š” ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๊ด€๋ฆฌ์ž๋กœ ์ œํ•œํ•˜์„ธ์š”." ๋˜ํ•œ๋ณด์‹ญ์‹œ์˜ค ๋‚ด ์ถœํŒ๋ฌผ ์•ˆ์ „ ๋ฐ ๊ธฐ์ˆ  ์‚ฌ์–‘ ์ค€์ˆ˜์— ๊ด€ํ•œ ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Homebrew ํ•ดํ‚น์— ๊ด€ํ•œ ๊ธฐ์‚ฌ ๋ถ€์ฃผ์˜ํ•˜๊ฒŒ ์ž‘์„ฑ๋œ Jenkins ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ํ›”์ณ์„œ.
  3. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜. Kubectl์€ ์ƒ๋‹นํžˆ ๋ณต์žกํ•œ Kubernetes ๊ฐœ์ฒด ๋ชจ๋ธ์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋” ๋†’์€ ์ถ”์ƒํ™” ์ˆ˜์ค€์—์„œ ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹ค์‹œ Kelsey๋ฅผ ์–ธ๊ธ‰ํ•˜๊ณ  ์‹œ์ฒญ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ด๋ ฅ์„œ.

CI์™€ CD์˜ ์ฐจ์ด์ 

GitOps๋Š” ๊ธฐ์กด CI/CD ๋ชจ๋ธ์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ตœ์‹  CI ์„œ๋ฒ„๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ CI ํŒŒ์ดํ”„๋ผ์ธ์„ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ํŠธ๋ ํฌ๋กœ ๋ณ‘ํ•ฉ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. CI ์„œ๋ฒ„๋Š” ๋ณต์žกํ•œ ๋‹ค๋‹จ๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ ๊ด€๋ฆฌ๋ฅผ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์œ ํ˜น์€ Kubernetes ์—…๋ฐ์ดํŠธ ์„ธํŠธ๋ฅผ ์Šคํฌ๋ฆฝํŒ…ํ•˜๊ณ  ์ด๋ฅผ ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ผ๋ถ€๋กœ ์‹คํ–‰ํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํด๋Ÿฌ์Šคํ„ฐ์— ํ‘ธ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋งŽ์€ ์ „๋ฌธ๊ฐ€๋“ค์ด ์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ์ตœ์ ์ด ์•„๋‹ˆ๋ฉฐ ๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

CI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋ฅผ ํŠธ๋ ํฌ์— ํ‘ธ์‹œํ•ด์•ผ ํ•˜๋ฉฐ, Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋Š” ํ•ด๋‹น ์—…๋ฐ์ดํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž์ฒด์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ CD๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋ถ€๋ฅธ๋‹ค CD์šฉ ํ’€ ๋ชจ๋ธ, CI ํ‘ธ์‹œ ๋ชจ๋ธ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. CD๋Š” ์ผ๋ถ€ ๋Ÿฐํƒ€์ž„ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜.

CI ์„œ๋ฒ„๊ฐ€ Kubernetes์˜ ์ง์ ‘ ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด CD๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 

CI ์ž‘์—… ์„ธํŠธ๋กœ Kubernetes์— ๋Œ€ํ•œ ์ง์ ‘ ์—…๋ฐ์ดํŠธ๋ฅผ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด CI ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๋งํ•˜๋Š” ์•ˆํ‹ฐํŒจํ„ด์ด๋‹ค ์ด๋ฏธ ๋งํ–ˆ๋‹ค ๋‹น์‹ ์˜ ๋ธ”๋กœ๊ทธ์—.

์•จ๋ฆฌ์Šค์™€ ๋ฐฅ์˜ ์ด์•ผ๊ธฐ๋กœ ๋Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ์–ด๋–ค ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๊นŒ? Bob์˜ CI ์„œ๋ฒ„๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ Bob์€ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์–ด๋–ค ์ƒํƒœ์ธ์ง€(๋˜๋Š” ์žˆ์–ด์•ผ ํ•˜๋Š”์ง€) ๋˜๋Š” ์ด๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์„ฑ๊ณตํ•  ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

Bob์˜ ํŒ€์ด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์ถ•ํ•œ ๋‹ค์Œ ๋ฐฐํฌ๋ฅผ ํŒจ์น˜ํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(๋ชจ๋‘ CI ํŒŒ์ดํ”„๋ผ์ธ์—์„œ).

์ด๋ฏธ์ง€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋นŒ๋“œ๋˜์—ˆ์ง€๋งŒ ํŒŒ์ดํ”„๋ผ์ธ์ด ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ ํŒ€์€ ๋‹ค์Œ ์‚ฌํ•ญ์„ ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์—…๋ฐ์ดํŠธ๊ฐ€ ์ถœ์‹œ๋˜์—ˆ๋‚˜์š”?
  • ์ƒˆ๋กœ์šด ๋นŒ๋“œ๋ฅผ ์ถœ์‹œํ•˜๋‚˜์š”? ์ด๋กœ ์ธํ•ด ๋™์ผํ•œ ๋ถˆ๋ณ€ ์ด๋ฏธ์ง€์˜ ๋‘ ๋นŒ๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ๊ณผ ํ•จ๊ป˜ ๋ถˆํ•„์š”ํ•œ ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?
  • ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๊นŒ?
  • ์ •ํ™•ํžˆ ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋‚˜์š”? ์–ด๋–ค ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ(๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ด๋„ ์•ˆ์ „ํ•ฉ๋‹ˆ๊นŒ)?

Git ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ๋ฅผ ์„ค์ •ํ•œ๋‹ค๊ณ  ํ•ด์„œ Bob์˜ ํŒ€์ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ณด์žฅ์€ ์—†์Šต๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ํ‘ธ์‹œ, ํƒœ๊ทธ ๋˜๋Š” ๊ธฐํƒ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ์ „ํžˆ ์‹ค์ˆ˜๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋ช…์‹œ์ ์ธ ์ „๋ถ€ ์•„๋‹ˆ๋ฉด ์ „๋ฌด ์ ‘๊ทผ ๋ฐฉ์‹์— ํ›จ์”ฌ ๋” ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

์š”์•ฝํ•˜๋ฉด CI ์„œ๋ฒ„๊ฐ€ CD๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์—…๋ฐ์ดํŠธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•ญ์ƒ ๊ฒฐ์ •์ ์ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ˆ˜ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
  • CI ์„œ๋ฒ„๋Š” ์„ ์–ธ์  ํด๋Ÿฌ์Šคํ„ฐ ๋ชจ๋ธ๋กœ ์ˆ˜๋ ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ฉฑ๋“ฑ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์‹œ์Šคํ…œ์˜ ๊นŠ์€ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ถ€๋ถ„์ ์ธ ์‹คํŒจ๋กœ๋ถ€ํ„ฐ ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

Helm์— ๋Œ€ํ•œ ์ฐธ๊ณ  ์‚ฌํ•ญ: Helm์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ GitOps ์—ฐ์‚ฐ์ž์™€ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿญ์Šคํ—ฌ๋ฆ„. ์ด๋Š” ์ˆ˜๋ ด์„ ๋ณด์žฅํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. Helm ์ž์ฒด๋Š” ๊ฒฐ์ •์ ์ด์ง€๋„ ์›์ž์ ์ด์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.

Kubernetes์šฉ ์ง€์†์  ์ „๋‹ฌ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ธ GitOps

Alice์™€ Bob์˜ ํŒ€์€ GitOps๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์†Œํ”„ํŠธ์›จ์–ด ์ œํ’ˆ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ๋†’์€ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฌ์›Œ์กŒ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ์ƒˆ๋กœ์šด ์ ‘๊ทผ ๋ฐฉ์‹์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๊ทธ๋ฆผ์œผ๋กœ ์ด ๊ธฐ์‚ฌ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ฃผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์ง€๋งŒ GitOps๋Š” ์ „์ฒด ํ”Œ๋žซํผ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์„ธ์š”.

Kubernetes์˜ ์šด์˜ ๋ชจ๋ธ

๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์„๋ณด์‹ญ์‹œ์˜ค. ์ด๋Š” Git๊ณผ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ๋ฅผ ๋‘ ๊ฐ€์ง€ ์กฐ์ •๋œ ์ˆ˜๋ช… ์ฃผ๊ธฐ์— ๋Œ€ํ•œ ๊ณต์œ  ๋ฆฌ์†Œ์Šค๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

์ฃผ์š” ๊ฒฐ๊ณผ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

  1. ์šฐ๋ ค์˜ ๋ถ„๋ฆฌ: ๋‘ ํŒŒ์ดํ”„๋ผ์ธ ๋ชจ๋‘ Git ๋˜๋Š” ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ๋งŒ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, CI์™€ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ์‚ฌ์ด์— ๋ฐฉํ™”๋ฒฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ "๋ถˆ๋ณ€์„ฑ ๋ฐฉํ™”๋ฒฝ"์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. (๋ถˆ๋ณ€์„ฑ ๋ฐฉํ™”๋ฒฝ), ๋ชจ๋“  ์ €์žฅ์†Œ ์—…๋ฐ์ดํŠธ๋Š” ์ƒˆ ๋ฒ„์ „์„ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์Šฌ๋ผ์ด๋“œ 72-87์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด ํ”„๋ ˆ์  ํ…Œ์ด์…˜.
  2. ๋ชจ๋“  CI ๋ฐ Git ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.: GitOps๋Š” ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ์™€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์„ ํ˜ธํ•˜๋Š” CI ๋ฐ Git ์„œ๋ฒ„, ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ, ํ…Œ์ŠคํŠธ ์ œํ’ˆ๊ตฐ์„ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ค‘์— ๋‚˜์™€ ์žˆ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๋‹ค๋ฅธ Continuous Delivery ๋„๊ตฌ์—๋Š” ์ž์ฒด CI/Git ์„œ๋ฒ„ ๋˜๋Š” ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐœ๋ฐœ์— ์ œํ•œ ์š”์†Œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitOps๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์นœ์ˆ™ํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ํ†ตํ•ฉ ๋„๊ตฌ๋กœ์„œ์˜ ์ด๋ฒคํŠธ: Git์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋Š” ์ฆ‰์‹œ Weave Flux(๋˜๋Š” Weave Cloud ์šด์˜์ž)๊ฐ€ ๋Ÿฐํƒ€์ž„์— ์ด๋ฅผ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. Kubernetes๊ฐ€ ๋ณ€๊ฒฝ ์„ธํŠธ๋ฅผ ์ˆ˜๋ฝํ•  ๋•Œ๋งˆ๋‹ค Git์ด ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด GitOps์˜ ์›Œํฌํ”Œ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ํ†ตํ•ฉ ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

GitOps๋Š” ์ตœ์‹  CI/CD ๋„๊ตฌ์— ํ•„์š”ํ•œ ๊ฐ•๋ ฅํ•œ ์—…๋ฐ์ดํŠธ ๋ณด์žฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์˜คํ† ๋ฉ”์ด์…˜;
  • ์ˆ˜๋ ด;
  • ๋ฉฑ๋“ฑ์„ฑ;
  • ๊ฒฐ์ •๋ก .

์ด๋Š” ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์šด์˜ ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•œ ๊ธฐ์กด ๋„๊ตฌ๋Š” Runbook ๋‚ด์—์„œ ์šด์˜๋˜๋Š” ์šด์˜ ํŒ€๊ณผ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. (์ผ๋ จ์˜ ์ ˆ์ฐจ ๋ฐ ์ž‘์—… ์„ธํŠธ - ๋Œ€๋žต์ ์ธ ๋ฒˆ์—ญ), ํŠน์ • ๋ฐฐํฌ์™€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ด€๋ฆฌ์—์„œ ๊ด€์ฐฐ ๊ฐ€๋Šฅ์„ฑ ๋„๊ตฌ๋Š” ๊ฐœ๋ฐœ ํŒ€์ด ์‹ ์†ํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐฐํฌ ๊ฒฐ๊ณผ๋ฅผ ์ธก์ •ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ž์ฒด ํŒ€๊ณผ ๋ฐฐํฌ ๊ณ„ํš์„ ๊ฐ–์ถ˜ ๋‹ค์–‘ํ•œ ํด๋ผ์šฐ๋“œ์™€ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค์— ๋ถ„์‚ฐ๋œ ๋งŽ์€ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์ƒํ•ด ๋ณด์„ธ์š”. GitOps๋Š” ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ’๋ถ€ํ•จ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ๋ชจ ๋ถˆ๋ณ€ ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฒˆ์—ญ๊ฐ€์˜ ์ถ”์‹ 

๋ธ”๋กœ๊ทธ์—์„œ๋„ ์ฝ์–ด๋ณด์„ธ์š”.

๋“ฑ๋ก๋œ ์‚ฌ์šฉ์ž๋งŒ ์„ค๋ฌธ ์กฐ์‚ฌ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์ œ๋ฐœ

์ด ๋‘ ๊ฐ€์ง€ ๋ฒˆ์—ญ์ด Habrรฉ์— ๊ฒŒ์žฌ๋˜๊ธฐ ์ „์— GitOps์— ๋Œ€ํ•ด ์•Œ๊ณ  ๊ณ„์…จ๋‚˜์š”?

  • ์‘, ๋‚œ ๋‹ค ์•Œ๊ณ  ์žˆ์—ˆ์–ด

  • ํ‘œ๋ฉด์ ์œผ๋กœ๋งŒ

  • ์•„๋‹ˆ

35๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํˆฌํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. 10๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๊ถŒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€