์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ "์Šค๋งˆํŠธ" ์ฒญ์†Œ ๋ฌธ์ œ์™€ werf์˜ ์†”๋ฃจ์…˜

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ "์Šค๋งˆํŠธ" ์ฒญ์†Œ ๋ฌธ์ œ์™€ werf์˜ ์†”๋ฃจ์…˜

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” Kubernetes์— ์ œ๊ณต๋˜๋Š” ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์ตœ์‹  CI/CD ํŒŒ์ดํ”„๋ผ์ธ์˜ ํ˜„์‹ค์—์„œ ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ(Docker Registry ๋ฐ ๊ทธ ์œ ์‚ฌ ํ•ญ๋ชฉ)์— ์ถ•์ ๋œ ์ด๋ฏธ์ง€๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€์˜ ๊ด€๋ จ์„ฑ๊ณผ ๊ทธ์— ๋”ฐ๋ฅธ ์ฒญ์†Œ ์ž๋™ํ™”, ๊ณต๊ฐ„ ์ ˆ์•ฝ ๋ฐ ํŒ€ ์š”๊ตฌ ์‚ฌํ•ญ ์ถฉ์กฑ์˜ ์–ด๋ ค์›€์— ๋Œ€ํ•œ ์ฃผ์š” ๊ธฐ์ค€์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ํŠน์ • ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์–ด๋ ค์›€์„ ์–ด๋–ป๊ฒŒ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์†Œ๊ฐœ

์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ์ด๋ฏธ์ง€ ์ˆ˜๊ฐ€ ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•˜์—ฌ ๋” ๋งŽ์€ ์Šคํ† ๋ฆฌ์ง€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ ๋น„์šฉ์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„์˜ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์ฆ๊ฐ€๋ฅผ ์ œ์–ด, ์ œํ•œ ๋˜๋Š” ์œ ์ง€ํ•˜๋ ค๋ฉด ๋‹ค์Œ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

  1. ์ด๋ฏธ์ง€์—๋Š” ๊ณ ์ •๋œ ์ˆ˜์˜ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์ด๋ฏธ์ง€๋ฅผ ์ •๋ฆฌํ•˜์„ธ์š”.


์ฒซ ๋ฒˆ์งธ ์ œํ•œ์€ ์†Œ๊ทœ๋ชจ ํŒ€์˜ ๊ฒฝ์šฐ ํ—ˆ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ถฉ๋ถ„ํ•œ ์˜๊ตฌ ํƒœ๊ทธ๋ฅผ ๋ณด์œ ํ•œ ๊ฒฝ์šฐ(latest, main, test, boris ๋“ฑ), ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ๋ถ€ํ’€์–ด ์˜ค๋ฅด์ง€ ์•Š์œผ๋ฉฐ ์˜ค๋žซ๋™์•ˆ ์ฒญ์†Œ์— ๋Œ€ํ•ด ์ „ํ˜€ ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๊ด€๋ จ์—†๋Š” ์ด๋ฏธ์ง€๋Š” ๋ชจ๋‘ ์ง€์›Œ์ง€๊ณ  ์ฒญ์†Œํ•  ์ž‘์—…์ด ๋‚จ์ง€ ์•Š์Šต๋‹ˆ๋‹ค (๋ชจ๋“  ์ž‘์—…์€ ์ผ๋ฐ˜ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๊ฐ€ ์ˆ˜ํ–‰ํ•จ).

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

๋ฒ„๊ทธ ์ˆ˜์ •๊ณผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์€ ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰๋˜๊ณ  ๋ฆด๋ฆฌ์Šค๋Š” ํ•˜๋ฃจ์— ์—ฌ๋Ÿฌ ๋ฒˆ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์—๋Š” ์ƒ๋‹นํ•œ ์ˆ˜์˜ ์ปค๋ฐ‹์ด ์ˆ˜๋ฐ˜๋œ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋งŽ์€ ์ˆ˜์˜ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ จ์—†๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋ฏธ์ง€๊ฐ€ ๊ด€๋ จ์„ฑ์ด ์žˆ๋Š”์ง€ ์–ด๋–ป๊ฒŒ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

์ด๋ฏธ์ง€์˜ ๊ด€๋ จ์„ฑ์— ๋Œ€ํ•œ ๊ธฐ์ค€

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ฃผ์š” ๊ธฐ์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ์ฒซ ๋ฒˆ์งธ(๊ฐ€์žฅ ๋ถ„๋ช…ํ•˜๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ) ์ด๋ฏธ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Kubernetes์—์„œ ์‚ฌ์šฉ๋˜๋Š”. ์ด๋Ÿฌํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์ƒ๋‹นํ•œ ์ƒ์‚ฐ ์ค‘๋‹จ ์‹œ๊ฐ„ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜(์˜ˆ: ๋ณต์ œ์— ์ด๋ฏธ์ง€๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ) ๋ฃจํ”„์— ๋Œ€ํ•œ ํŒ€ ๋””๋ฒ„๊น… ๋…ธ๋ ฅ์ด ๋ฌดํšจํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ํŠน๋ณ„ํ•œ ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์ˆ˜์ถœ์—…์ž, Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์ด๋Ÿฌํ•œ ์ด๋ฏธ์ง€๊ฐ€ ์—†์Œ์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.)

2. ๋‘ ๋ฒˆ์งธ(๋œ ๋ช…ํ™•ํ•˜์ง€๋งŒ ๋งค์šฐ ์ค‘์š”ํ•˜๋ฉฐ ๋‹ค์‹œ ์ฐฉ์ทจ์™€ ๊ด€๋ จ๋จ) - ์ด๋ฏธ์ง€ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ ๋ฐœ๊ฒฌ ์‹œ ๋กค๋ฐฑ ํ•„์š” ํ˜„์žฌ ๋ฒ„์ „์—์„œ๋Š”. ์˜ˆ๋ฅผ ๋“ค์–ด Helm์˜ ๊ฒฝ์šฐ ์ €์žฅ๋œ ๋ฒ„์ „์˜ ๋ฆด๋ฆฌ์Šค์— ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. (๊ทธ๋Ÿฐ๋ฐ Helm์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆ˜์ •๋ณธ์ด 256๊ฐœ๋กœ ์ œํ•œ๋˜์–ด ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์ €์žฅํ•ด์•ผ ํ•  ์‚ฌ๋žŒ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋ฒ„์ „์ด ๋งŽ๋‚˜์š”?..) ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋Š” ํŠนํžˆ ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฒ„์ „์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ "๋กค๋ฐฑ"ํ•ฉ๋‹ˆ๋‹ค.

3. ์„ธ ๋ฒˆ์งธ - ๊ฐœ๋ฐœ์ž ์š”๊ตฌ: ํ˜„์žฌ ์ž‘์—…๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, PR์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹, ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ „ ์ปค๋ฐ‹์— ํ•ด๋‹นํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋‚จ๊ฒจ ๋‘๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ ์†ํ•˜๊ฒŒ ๋ชจ๋“  ์ž‘์—…์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ์ตœ์‹  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ๋„ท์งธ - ์ด๋ฏธ์ง€ ์šฐ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฒ„์ „์— ํ•ด๋‹น, ์ฆ‰. ์ตœ์ข… ์ œํ’ˆ์€ v1.0.0, 20.04.01/XNUMX/XNUMX, sierra ๋“ฑ์ž…๋‹ˆ๋‹ค.

์ฃผ์˜: ์—ฌ๊ธฐ์— ์ •์˜๋œ ๊ธฐ์ค€์€ ๋‹ค์–‘ํ•œ ํšŒ์‚ฌ์˜ ์ˆ˜์‹ญ ๊ฐœ ๊ฐœ๋ฐœํŒ€๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•œ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ณต์‹ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌผ๋ก  ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ๊ณผ ์‚ฌ์šฉ๋˜๋Š” ์ธํ”„๋ผ(์˜ˆ: Kubernetes๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ)์— ๋”ฐ๋ผ ์ด๋Ÿฌํ•œ ๊ธฐ์ค€์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž๊ฒฉ ๋ฐ ๊ธฐ์กด ์†”๋ฃจ์…˜

์ผ๋ฐ˜์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ์ธ๊ธฐ ์žˆ๋Š” ์„œ๋น„์Šค๋Š” ์ž์ฒด ์ด๋ฏธ์ง€ ์ •๋ฆฌ ์ •์ฑ…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์„œ๋น„์Šค์—์„œ๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ํƒœ๊ทธ๊ฐ€ ์ œ๊ฑฐ๋˜๋Š” ์กฐ๊ฑด์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์€ ์ด๋ฆ„, ์ƒ์„ฑ ์‹œ๊ฐ„, ํƒœ๊ทธ ์ˆ˜*์™€ ๊ฐ™์€ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์˜ํ•ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

* ํŠน์ • ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ตฌํ˜„์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 2020๋…„ XNUMX์›” ํ˜„์žฌ Azure CR, Docker Hub, ECR, GCR, GitHub ํŒจํ‚ค์ง€, GitLab Container Registry, Harbor Registry, JFrog Artifactory, Quay.io ์†”๋ฃจ์…˜์˜ ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ธํŠธ๋Š” ๋„ค ๋ฒˆ์งธ ๊ธฐ์ค€, ์ฆ‰ ๋ฒ„์ „์— ํ•ด๋‹นํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ธฐ์ค€์— ๋Œ€ํ•ด์„œ๋Š” ๊ธฐ๋Œ€์น˜์™€ ์žฌ์ •์  ๋Šฅ๋ ฅ์— ๋”ฐ๋ผ ์ผ์ข…์˜ ์ ˆ์ถฉ์•ˆ(๋” ์—„๊ฒฉํ•˜๊ฑฐ๋‚˜ ๋ฐ˜๋Œ€๋กœ ๋” ๊ด€๋Œ€ํ•œ ์ •์ฑ…)์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

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

Git์˜ ์›Œํฌํ”Œ๋กœ ๊ทธ๋ฆผ

Git์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ "์Šค๋งˆํŠธ" ์ฒญ์†Œ ๋ฌธ์ œ์™€ werf์˜ ์†”๋ฃจ์…˜

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

์ •๋ฆฌ ์ •์ฑ…์—์„œ ์ด๋ฏธ์ง€ ๋ณด์กด(์‚ญ์ œ ๋ถˆ๊ฐ€)๋งŒ ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ์ฃผ์–ด์ง„ ํƒœ๊ทธ ์ด๋ฆ„์œผ๋กœ?

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ "์Šค๋งˆํŠธ" ์ฒญ์†Œ ๋ฌธ์ œ์™€ werf์˜ ์†”๋ฃจ์…˜

๋ถ„๋ช…ํžˆ ๊ทธ๋Ÿฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋ˆ„๊ตฌ๋„ ํ–‰๋ณตํ•˜๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •์ฑ…์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋„๋ก ํ—ˆ์šฉํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ์ฃผ์–ด์ง„ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ/๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹ ์ˆ˜์— ๋”ฐ๋ผ?

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ "์Šค๋งˆํŠธ" ์ฒญ์†Œ ๋ฌธ์ œ์™€ werf์˜ ์†”๋ฃจ์…˜

๊ฒฐ๊ณผ๋Š” ํ›จ์”ฌ ์ข‹์•„์กŒ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋ฒ„๊ทธ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์œ„ํ•ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ด๋ฏธ์ง€๊ฐ€ ํ•„์š”ํ•œ(๋˜๋Š” K8์— ๋ฐฐํฌ๋œ) ๊ฐœ๋ฐœ์ž๊ฐ€ ์—ฌ์ „ํžˆ ์žˆ์Šต๋‹ˆ๋‹ค...

ํ˜„์žฌ ์‹œ์žฅ ์ƒํ™ฉ์„ ์š”์•ฝํ•˜์ž๋ฉด, ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์€ ์ฒญ์†Œ ์‹œ ์ถฉ๋ถ„ํ•œ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๊ทธ ์ฃผ๋œ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€ ์„ธ๊ณ„์™€ ๊ต๋ฅ˜ํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. ์ด๋Ÿฌํ•œ ์œ ์—ฐ์„ฑ์ด ํ•„์š”ํ•œ ํŒ€์€ Docker Registry API(๋˜๋Š” ํ•ด๋‹น ๊ตฌํ˜„์˜ ๊ธฐ๋ณธ API)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "์™ธ๋ถ€์—์„œ" ์ด๋ฏธ์ง€ ์‚ญ์ œ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

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

๋ณดํŽธ์ ์ธ ์ด๋ฏธ์ง€ ์ •๋ฆฌ๋ฅผ ํ–ฅํ•œ ์šฐ๋ฆฌ์˜ ๊ธธ

์ด๋Ÿฌํ•œ ํ•„์š”๋Š” ์–ด๋””์—์„œ ์˜ค๋Š”๊ฐ€? ์‚ฌ์‹ค ์šฐ๋ฆฌ๋Š” ๋ณ„๋„์˜ ๊ฐœ๋ฐœ์ž ๊ทธ๋ฃน์ด ์•„๋‹ˆ๋ผ ๋‹ค์ˆ˜์˜ ๊ฐœ๋ฐœ์ž๋ฅผ ๋™์‹œ์— ์ง€์›ํ•˜์—ฌ CI/CD ๋ฌธ์ œ๋ฅผ ์ข…ํ•ฉ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋Š” ํŒ€์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ์ฃผ์š” ๊ธฐ์ˆ  ๋„๊ตฌ๋Š” ์˜คํ”ˆ ์†Œ์Šค ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. ์›Œํ”„. ๊ทธ ํŠน์ง•์€ ๋‹จ์ผ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์กฐ๋ฆฝ๋ถ€ํ„ฐ ๋ฐฐํฌ๊นŒ์ง€ ๋ชจ๋“  ๋‹จ๊ณ„์—์„œ ์ง€์†์ ์ธ ์ „๋‹ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜๋ฐ˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

* ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ž์ฒด๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ(Docker Registry, GitLab Container Registry, Harbor ๋“ฑ) ์‚ฌ์šฉ์ž๋Š” ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ณดํŽธ์ ์ธ ์†”๋ฃจ์…˜์€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ตฌํ˜„์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์™ธ๋ถ€์—์„œ ์‹คํ–‰๋˜๋ฉฐ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๋™์ผํ•œ ๋™์ž‘์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Werf๋ฅผ ์˜ˆ์ œ ๊ตฌํ˜„์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์‚ฌ์šฉ๋œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์œ ์‚ฌํ•œ ์–ด๋ ค์›€์— ์ง๋ฉดํ•œ ๋‹ค๋ฅธ ํŒ€์—๋„ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋ฐ”๋น ์กŒ์–ด ์™ธ๋ถ€ ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ด๋ฏธ ๋‚ด์žฅ๋œ ๊ธฐ๋Šฅ ๋Œ€์‹  ์ด๋ฏธ์ง€ ์ •๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” Docker Registry API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒœ๊ทธ ์ˆ˜์™€ ํƒœ๊ทธ ์ƒ์„ฑ ์‹œ๊ฐ„(์œ„์—์„œ ์–ธ๊ธ‰)์— ๋Œ€ํ•œ ๋™์ผํ•œ ๊ธฐ๋ณธ ์ •์ฑ…์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋จ ๋ฐฐํฌ๋œ ์ธํ”„๋ผ์— ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํ—ˆ์šฉ ๋ชฉ๋ก, ์ฆ‰. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค. ํ›„์ž์˜ ๊ฒฝ์šฐ Kubernetes API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ  ๊ฐ’ ๋ชฉ๋ก์„ ์–ป๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค. image.

์ด ์‚ฌ์†Œํ•œ ํ•ด๊ฒฐ์ฑ…์€ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฌธ์ œ(๊ธฐ์ค€ 1)๋ฅผ ํ•ด๊ฒฐํ–ˆ์ง€๋งŒ, ์ด๋Š” ์ฒญ์†Œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ์ •์˜ ์‹œ์ž‘์ผ ๋ฟ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์ด์ž ํ›จ์”ฌ ๋” ํฅ๋ฏธ๋กœ์šด ๋‹จ๊ณ„๋Š” ๊ฒฐ์ •์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œ๋œ ์ด๋ฏธ์ง€๋ฅผ Git ๊ธฐ๋ก๊ณผ ์—ฐ๊ฒฐ.

ํƒœ๊ทธ ์ง€์ • ๋ฐฉ์‹

์šฐ์„ , ์šฐ๋ฆฌ๋Š” ์ตœ์ข… ์ด๋ฏธ์ง€๊ฐ€ ์ •๋ฆฌ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํƒํ•˜๊ณ  ํƒœ๊ทธ ์ง€์ • ๋ฐฉ์‹์— ๋”ฐ๋ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ๊ฒŒ์‹œํ•  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํƒœ๊ทธ ์ง€์ • ์˜ต์…˜(git-branch, git-commit ๋˜๋Š” git-tag) ํ•ด๋‹น ๊ฐ’์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. CI ์‹œ์Šคํ…œ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ฐ’์ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค์€ ์ตœ์ข… ์ด๋ฏธ์ง€๋Š” ํŠน์ • Git ๊ธฐ๋ณธ ์š”์†Œ์™€ ์—ฐ๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค., ์ฒญ์†Œ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ผ๋ฒจ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ด Git์„ ๋‹จ์ผ ์ •๋ณด ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ จ์˜ ์ •์ฑ…์ด ํƒ„์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Git์—์„œ ๋ธŒ๋žœ์น˜/ํƒœ๊ทธ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ๊ด€๋ จ ์ด๋ฏธ์ง€๊ฐ€ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Git ํƒœ๊ทธ ๋ฐ ์ปค๋ฐ‹๊ณผ ์—ฐ๊ฒฐ๋œ ์ด๋ฏธ์ง€ ์ˆ˜๋Š” ์„ ํƒํ•œ ์Šคํ‚ค๋งˆ์— ์‚ฌ์šฉ๋œ ํƒœ๊ทธ ์ˆ˜์™€ ์—ฐ๊ฒฐ๋œ ์ปค๋ฐ‹์ด ์ƒ์„ฑ๋œ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ์ œ์–ด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜

์™œ? ์ฝ˜ํ…์ธ  ๊ธฐ๋ฐ˜ ํƒœ๊ทธ ์ง€์ •์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ํƒœ๊ทธ๊ฐ€ Git์˜ ์—ฌ๋Ÿฌ ์ปค๋ฐ‹์„ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ์ •๋ฆฌํ•  ๋•Œ ๋” ์ด์ƒ ๊ฐ€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ ์ƒˆ ํƒœ๊ทธ๊ฐ€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ถ”๊ฐ€๋œ ์ปค๋ฐ‹์—์„œ.

์ƒˆ๋กœ์šด ์ •๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฝ์šฐ ํƒœ๊ทธ ์ง€์ • ๋ฐฉ์‹์—์„œ ๋ฒ—์–ด๋‚˜ ๋นŒ๋“œํ•˜๊ธฐ๋กœ ๊ฒฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”ํƒ€ ์ด๋ฏธ์ง€ ํ”„๋กœ์„ธ์Šค, ๊ฐ๊ฐ์€ ๋‹ค์Œ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฒŒ์‹œ๊ฐ€ ์ˆ˜ํ–‰๋œ ์ปค๋ฐ‹(์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์ด๋ฏธ์ง€๊ฐ€ ์ถ”๊ฐ€, ๋ณ€๊ฒฝ ๋˜๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Œ)
  • ๊ทธ๋ฆฌ๊ณ  ์กฐ๋ฆฝ๋œ ์ด๋ฏธ์ง€์— ํ•ด๋‹นํ•˜๋Š” ๋‚ด๋ถ€ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์ œ๊ณต๋˜์—ˆ๋‹ค. ๊ฒŒ์‹œ๋œ ํƒœ๊ทธ๋ฅผ Git์˜ ์ปค๋ฐ‹๊ณผ ์—ฐ๊ฒฐ.

์ตœ์ข… ๊ตฌ์„ฑ ๋ฐ ์ผ๋ฐ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

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

  • ๋งŽ์€ ์ฐธ์กฐ, ์ฆ‰ ์Šค์บ” ์ค‘์— ์‚ฌ์šฉ๋˜๋Š” Git ํƒœ๊ทธ ๋˜๋Š” Git ๋ถ„๊ธฐ.
  • ๊ทธ๋ฆฌ๊ณ  ์„ธํŠธ์˜ ๊ฐ ์ฐธ์กฐ์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰๋œ ์ด๋ฏธ์ง€์˜ ํ•œ๊ณ„.

์„ค๋ช…์„ ์œ„ํ•ด ๊ธฐ๋ณธ ์ •์ฑ… ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

cleanup:
  keepPolicies:
  - references:
      tag: /.*/
      limit:
        last: 10
  - references:
      branch: /.*/
      limit:
        last: 10
        in: 168h
        operator: And
    imagesPerReference:
      last: 2
      in: 168h
      operator: And
  - references:  
      branch: /^(main|staging|production)$/
    imagesPerReference:
      last: 10

์ด ๊ตฌ์„ฑ์—๋Š” ๋‹ค์Œ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ์ •์ฑ…์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ตœ๊ทผ 10๊ฐœ์˜ Git ํƒœ๊ทธ์— ๋Œ€ํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(ํƒœ๊ทธ ์ƒ์„ฑ ๋‚ ์งœ ๊ธฐ์ค€).
  2. ์ง€๋‚œ ์ฃผ์— ํ™œ๋™์ด ์žˆ๋Š” ์Šค๋ ˆ๋“œ๋Š” 2๊ฐœ ์ดํ•˜๋กœ, ์ง€๋‚œ ์ฃผ์— ๊ฒŒ์‹œ๋œ ์ด๋ฏธ์ง€๋Š” 10๊ฐœ ์ดํ•˜๋กœ ์ €์žฅํ•˜์„ธ์š”.
  3. ์ง€์ ์šฉ ์ด๋ฏธ์ง€ 10๊ฐœ ์ €์žฅ main, staging ะธ production.

์ตœ์ข… ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค.

  • ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  • Kubernetes์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฏธ์ง€๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ K8s API๋ฅผ ํด๋งํ•˜์—ฌ ์‚ฌ์ „ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Git ๊ธฐ๋ก์„ ์Šค์บ”ํ•˜๊ณ  ์ง€์ •๋œ ์ •์ฑ…์— ๋”ฐ๋ผ ์ด๋ฏธ์ง€๋ฅผ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚จ์€ ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆผ์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉด, werf์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ "์Šค๋งˆํŠธ" ์ฒญ์†Œ ๋ฌธ์ œ์™€ werf์˜ ์†”๋ฃจ์…˜

๊ทธ๋Ÿฌ๋‚˜ werf๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ ํ•˜๋‚˜์˜ ๊ตฌํ˜„ ๋˜๋Š” ๋‹ค๋ฅธ ๊ตฌํ˜„์—์„œ(์ด๋ฏธ์ง€ ํƒœ๊น…์— ๋Œ€ํ•ด ์„ ํ˜ธํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์— ๋”ฐ๋ผ) ๊ณ ๊ธ‰ ์ด๋ฏธ์ง€ ์ •๋ฆฌ์— ๋Œ€ํ•œ ์œ ์‚ฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ/์œ ํ‹ธ๋ฆฌํ‹ฐ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์Šคํƒ์—์„œ ์†”๋ฃจ์…˜์„ ์ตœ๋Œ€ํ•œ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์—ฌํ–‰ํ•œ ๊ธธ์ด ๊ท€ํ•˜๊ฐ€ ์ƒˆ๋กœ์šด ์„ธ๋ถ€ ์‚ฌํ•ญ๊ณผ ์ƒ๊ฐ์œผ๋กœ ๊ท€ํ•˜์˜ ํŠน์ • ์‚ฌ๋ก€๋ฅผ ๋ณด๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

  • ์กฐ๋งŒ๊ฐ„ ๋Œ€๋ถ€๋ถ„์˜ ํŒ€์€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์†”๋ฃจ์…˜์„ ๊ฒ€์ƒ‰ํ•  ๋•Œ ๋จผ์ € ์ด๋ฏธ์ง€์˜ ๊ด€๋ จ์„ฑ์— ๋Œ€ํ•œ ๊ธฐ์ค€์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋น„์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด "์™ธ๋ถ€ ์„ธ๊ณ„", ์ฆ‰ Kubernetes์— ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฏธ์ง€์™€ ํŒ€ ์›Œํฌํ”Œ๋กœ์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ ์ •๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์œ ์—ฐํ•˜๊ณ  ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ CI/CD ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ Docker ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋กœ๋งŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

PS

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

์ถœ์ฒ˜ : habr.com

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