Helm: 'helm install --app-version' ๋ช…๋ น ์ถ”๊ฐ€/์•ฑ ๋ฒ„์ „์— ๋Œ€ํ•œ ์ฐจํŠธ ๋ฒ„์ „ ๊ด€๋ฆฌ

์— ๋งŒ๋“  2018๋…„ 02์›” 22์ผ  ยท  118์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: helm/helm

๋‚ด๊ฐ€ ์•„๋Š” ํ•œ helm install ํ˜„์žฌ --version ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜์—ฌ ์„ค์น˜ํ•  ์ฐจํŠธ ๋ฒ„์ „์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Chart.yaml์˜ 'appVersion' ํ•„๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ Chart์˜ ํŠน์ • ๋ฒ„์ „(๋˜๋Š” ๋ฒ„์ „ ์„ธํŠธ)์— ๋Œ€ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ appVersion ํ•„๋“œ๋ฅผ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋Œ€์‹  ์ด์ „ ๋ฒ„์ „๊ณผ ์—ญํ˜ธํ™˜๋˜๋„๋ก ์ฐจํŠธ๋ฅผ ์ง€์†์ ์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ๋ฒ„์ „์„ ์›ํ•  ๊ฒฝ์šฐ helm install ์‹คํ–‰ํ•  ๋•Œ ์ง€์ •ํ•  ์ฐจํŠธ ๋ฒ„์ „์„ ์–ด๋–ป๊ฒŒ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ(์ด๋Š” ํ›จ์”ฌ ๋” ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค) ์‚ฌ์šฉ์ž๊ฐ€ --set image.tag ์™€ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ๋ฐฐํฌ๋œ ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ๋•Œ ์ข…์ข… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฒ„์ „์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

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

ํ˜„์žฌ ํ˜•ํƒœ์—์„œ๋Š” ์ด APP VERSION ๊ฐ€ ์ „ํ˜€ ์—†๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ˜ผ๋ž€์„ ๊ฐ€์ ธ์˜ฌ ๋ฟ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ™์€ ํˆฌ๊ตฌ ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”> (80) ์„œ๋น„์Šค๋ฅผํ•˜๊ณ  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด์ด APP VERSION ์—์„œ helm upgrade -i ... ๋‚˜๋Š” ์šฐ๋ฆฌ์˜ ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์˜์›ํžˆ ํ•จ๊ป˜์žˆ์„ ๊ฒƒ์„ ๋ณผ 1.0 ์—ฌ๊ธฐ

๋‚˜๋Š” ๋˜ํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ helm list ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด

๋‚˜๋Š” ์ด ๋Œ€ํ™”๋ฅผ ์ฝ์„ ๋•Œ ์ฒ˜์Œ์—๋Š” ๋‚™๊ด€์ ์ด์—ˆ์ง€๋งŒ ๋งˆ์ง€๋ง‰์— ๊ฐ€์„œ ๋‹น์‹ ์ด ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ† ๋ก ํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋‹น์‹ ์˜ ์ƒ๊ฐ์„ ๊ฐ–๋„๋ก ๊ฐ•์š”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด๊ณ  ์ง€๊ธˆ ํฌ๋ง์„ ์žƒ์—ˆ์Šต๋‹ˆ๋‹ค :(.

๋ชจ๋“  118 ๋Œ“๊ธ€

๋‚˜๋„ ๋ฐฉ๊ธˆ ์ด๊ฒƒ์— ๋ถ€๋”ช์ณค๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ฐจํŠธ๋ฅผ ํŒจํ‚ค์ง•ํ•  ๋•Œ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ์•ฑ์—์„œ ๋‹ค๋ฅธ ํƒœ๊ทธ๋กœ ์„ค์น˜๋ฅผ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

90์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ถ€์‹คํ•ด์ง‘๋‹ˆ๋‹ค.
/remove-lifecycle stale ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋ถ€์‹ค ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ฉ๊ณ  ๊ฒฐ๊ตญ ๋‹ซํž™๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close .

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/์ˆ˜๋ช… ์ฃผ๊ธฐ ๋ถ€์‹ค

https://github.com/kubernetes/charts/pull/5919 ์—์„œ ์ œ๊ธฐ๋œ ๋Œ€๋กœ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๊ธฐ

๋‚ด ์ตœ๊ทผ ๋Œ“๊ธ€์˜ ์ผ๋ถ€ ๋ณต์‚ฌ:


์šฐ๋ฆฌ๋Š” ์ฐจํŠธ์˜ ๋ถ€ ๋ฒ„์ „์„ ๋ถ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฒ„์ „๊ณผ ์ •๋ ฌ๋˜๋„๋ก ํŠน๋ณ„ํžˆ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค(ํŒจ์น˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ณ  ์ฐจ์ด๊ฐ€ ๋‚  ์ˆ˜ ์žˆ์ง€๋งŒ).

์ด๋Š” cert-manager์˜ ์ƒˆ ๋ฆด๋ฆฌ์Šค์— ์ƒˆ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ณ  Helm ์ฐจํŠธ์— ์ด์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋ฉด ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” cert-manager์˜ ์ด์ „ ๋ฆด๋ฆฌ์Šค์™€์˜ ํ˜ธํ™˜์„ฑ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ IMO์˜ Helm ์ฐจํŠธ ๋ฒ„์ „ ๊ด€๋ฆฌ์™€ ๊ด€๋ จ๋œ ๋งค์šฐ ๊ธฐ๋ณธ์ ์ธ ์งˆ๋ฌธ์ด๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ์ด์— ๋Œ€ํ•œ ์ข‹์€ ์ด์•ผ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

appVersion์„ ์ฐจํŠธ ๋ฒ„์ „๊ณผ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” Helm ์ฐจํŠธ ๋ฒ„์ „ 0.3.x๋ฅผ cert-manager 0.3.x์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ฐจํŠธ ๋ฒ„์ „ 0.4.x๋ฅผ cert์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค. -๊ด€๋ฆฌ์ž 0.4.x. ํ˜ธํ™˜์„ฑ์€ ๋ถ€ ๋ฒ„์ „ ๋‚ด์—์„œ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

/remove-lifecycle ๋ถ€์‹ค

๋‚˜๋Š” ์ด๊ฒƒ์„ ํ† ๋ก ์„ ์œ„ํ•ด ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋‚ด ์›๋ž˜ ์ œ์•ˆ ๋ณต์‚ฌ:


helm ์ฐจํŠธ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ํ˜„์žฌ ์›Œํฌํ”Œ๋กœ์—๋Š” helm upgrade CLI ๋ช…๋ น์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฐ€๋Šฅํ•œ ์ž‘์—…์ด ํฌํ•จ๋˜๋ฉฐ ๋™์ผํ•œ ์ฐจํŠธ ๋ฒ„์ „์˜ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ appVersion์„ ์„ค์ •ํ•˜๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

appVersion์ด ๋ฆด๋ฆฌ์Šค๊ฐ€ ์•„๋‹Œ ์ฐจํŠธ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋…์ ์œผ๋กœ ์•ฝ๊ฐ„ ์ด์ƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ผ๋ถ€ ์ปจํ…Œ์ด๋„ˆ์— ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์›Œํฌํ”Œ๋กœ์— ์ฐจํŠธ ๋ฒ„์ „ ๋ฐ/๋˜๋Š” ์ฐจํŠธ ์ €์žฅ์†Œ๊ฐ€ ํ†ตํ•ฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„์ง. ์ด๊ฒƒ์€ ๋ฏธ๋ž˜์— ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ์ด ํ•„๋“œ๊ฐ€ ์ˆœ์ „ํžˆ ์ •๋ณด ์ œ๊ณต์šฉ์ด๋ฏ€๋กœ ์„ค์น˜ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ --app-version ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ž์ฒด ๋‚ด๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์•ฑ ์ž์ฒด๋Š” ์•ฑ์„ ๋ฐฐํฌํ•˜๋Š” ์ฐจํŠธ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์†์ ์ธ ๋ฐฐํฌ ๋ช…๋ น์€ helm upgrade ์ด๋ฉฐ --set imageTag=<new_version> (์ปจํ…Œ์ด๋„ˆ ๋ฒ„์ „์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ฐจํŠธ์˜ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ถ„๋ช…ํžˆ ์‚ฌ์šฉ๋จ)๋ฅผ --app-version์œผ๋กœ ๋ฐ”๊พธ๋ฉด ๋‹ค์Œ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ๋œ ์ฐจํŠธ ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ ๋ฐฐํฌ๋œ ์ฝ”๋“œ ๋ฒ„์ „์„ ๋ณด๋ ค๋ฉด helm ls ๋˜ ๋‹ค๋ฅธ ์‹œ๊ฐ์  ์ง€์ ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

์ด๋ฅผ ๋” ์ž˜ ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์„ค์น˜/์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ ์ „๋‹ฌ๋œ imageTag๋กœ ์„ค์ •๋˜๋Š” imageTag ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํƒœ๊ทธ ์„ค์ •์— ๋Œ€ํ•ด ํ‘œ์ค€ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด K8s ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ imageTag๊ฐ€ ํ‘œ์‹œ๋œ Graphana ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ช…๋ น์ค„์„ ๋– ๋‚˜ ๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”

์ด์— ๋Œ€ํ•œ ๋ชจ๋“  ์—…๋ฐ์ดํŠธ. @Eraac์˜ PR์ด ์š”์ฒญํ•œ helm upgrade --set imageTag=<imagetag> ๋„ ์‹คํ–‰ํ•˜์ง€๋งŒ helm ls ์ถœ๋ ฅ์— ๋‚˜์—ด๋œ APP VERSION์€ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. --set app-version ๋˜๋Š” --set version ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด helm ls ๊ฐ€ ๋ฐฐํฌ๋œ ๋ฒ„์ „์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œํ•˜๋„๋ก helm upgrade ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

Aaaaany ์‹œ๊ฐ„์ด ๊ณง ์‚ฌ๋ž‘์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค

๋˜ํ•œ ๊ณตํ†ต ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋ฏ€๋กœ ์„ค์น˜ ์‹œ ์•ฑ ๋ฒ„์ „์„ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

+1

+1

๋งค์šฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค

๊ฐ™์€ ๊ฒƒ์„ ์š”๊ตฌ

์ŠคํŒธ์€ +1๋กœ ๋ง‰์•„์ฃผ์„ธ์š”. ์ด๋ฏธ PR(https://github.com/helm/helm/pull/4961)์ด ์žˆ๊ณ  ์‚ฌ๋žŒ๋“ค์ด ์ œ์•ˆ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๋‹ต์žฅ์€ 2์ผ ์ „์ด์—ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @filipre

์ด๋ฏธ PR(#4961)์ด ์žˆ๊ณ  ์‚ฌ๋žŒ๋“ค์ด ์ œ์•ˆ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ PR์— ๋”ฐ๋ฅด๋ฉด, ์ด๊ฒƒ์€ ์—ฌ๊ธฐ๋กœ ์˜ฎ๊ฒจ์กŒ์Šต๋‹ˆ๋‹ค:
https://github.com/helm/helm/pull/5492
์ด๊ฒƒ์€ #4961์— ๋Œ€ํ•œ ์ตœ์‹  PR์ด๋ฉฐ ๋ฆฌ๋ทฐ๊ฐ€ ๋ณ‘ํ•ฉ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค ...

@filipre ๋ง์”€ํ•ด ์ฃผ ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? PR์€ ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? PR์ด ํ•œ๋‹ฌ ๋ฐ˜ ๋™์•ˆ ์›€์ง์ด์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ฑ ๋ฒ„์ „ 0.6.0์— ๊ณ ์ •ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ ์ฐจํŠธ ๋ฒ„์ „์€ ์•ฑ ๋ฒ„์ „๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๊ฒƒ์ด ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

https://github.com/helm/helm/pull/5492#issuecomment -509662190์„ ์ฐธ์กฐ

๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์žฌ์‚ฌ์šฉํ•  ๊ณ„ํš์ธ Helm ์ฐจํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋™์•ˆ ์ด๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์„ ๋•Œ ์ง€๊ธˆ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์‹ญ์‹œ์˜ค. ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•(์ฆ‰, ์„ค์น˜ ์‹œ ์•ฑ ๋ฒ„์ „์„ ์„ค์ •ํ•˜๋Š” ํ”Œ๋ž˜๊ทธ ์‚ฌ์šฉ)์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ง„์ „์ด ์—†๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ํ˜„์žฌ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ๋Œ€์•ˆ์„ ์ƒ๊ฐํ•ด ๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๋งค์šฐ ๊ฐ„๋‹จ์ด๋‹ค - ๋ฐ”๋กœ ์•Š๋Š” helm fetch ๋จผ์ € ๋‹ค์Œ์˜ ์••์ถ•์„ ํ’‰๋‹ˆ ์˜ต์…˜๊ณผ์™€ helm package ์™€ --app-version ์กด์žฌ๋ฅผ ์ˆ˜ํ–‰ ํ”Œ๋ž˜๊ทธ, ๊ทธ ์ง€์—ญ์˜ ์ฐจํŠธ๋ฅผ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด์ƒ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ helm list ์˜ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ์ •ํ™•ํ•˜๋ฉฐ CI ์„œ๋ฒ„์—์„œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. helm install ๋ฐ helm upgrade --app-version ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

#5492์—์„œ ๋…ผ์˜ํ•œ ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๋ฉด helm package ๋ฐ helm install ์˜ ๋…ผ๋ฆฌ๋ฅผ ๋ž˜ํ•‘ํ•˜๋Š” ๋ช…๋ น์ด ์ด ๋ฌธ์ œ์—์„œ ์›๋ž˜ ์„ค๋ช…๋œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ helm package myapp --app-version 1.0.0
$ helm install myapp-1.0.0.tgz

(์ตœ๊ทผ์— ๋‹ซ์€ PR์˜ ์ฃผ์„์„ ์—ฌ๊ธฐ๋กœ ์ด๋™ - Nirvana์—์„œ ๋๋‚˜์ง€ ์•Š๋„๋ก)

์—ฌ๊ธฐ์— ๋‚ด 2 ์„ผํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
appVersion Y ํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๋Š” chart version X ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

helm ์ฐจํŠธ๋Š” appVersion Y ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” chart version X ์˜ Kubernetes ๋‚ด๋ถ€ ์ธํ”„๋ผ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

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

์ด ํ‹ฐ์ผ“์—์„œ ์ œ์•ˆ๋œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด X ๋ฒ„์ „์—์„œ ์•ˆ์ •์ ์ธ ์กฐํƒ€์ˆ˜ ์ฐจํŠธ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ appVersion Y , Y+1 , Y+N ๋“ฑ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ํ”Œ๋ž˜๊ทธ๊ฐ€ helm ์„ค์น˜ ๋˜๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ ์ค‘์— ์žฌ์ •์˜๋˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  ์˜ˆ๋ฅผ ๋“ค์–ด ํŒจํ‚ค์ง€์—์„œ๋งŒ ํšจ๊ณผ์ ์œผ๋กœ X ๋ฐ Y ํ•จ๊ป˜ ๋ฌถ์–ด ํ•ญ์ƒ ์ƒˆ๋กœ์šด X+1 ๋งŒ๋“ค๋„๋ก ํ•ฉ๋‹ˆ๋‹ค Y+1 . ์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๋ถˆํ•„์š”ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ ์ƒˆ๋กœ์šด appVersion ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์‚ฌ์‹ค์ƒ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ์ˆ˜๋งŽ์€ helm ํŒจํ‚ค์ง€๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „๊ณผ ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ์ธํ”„๋ผ ๋ฒ„์ „์€ ๊ด€๊ณ„๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฒ„์ „์ด ์ง€์ •๋˜์–ด์•ผ ํ•˜๊ฑฐ๋‚˜ ์—ฌ์ „ํžˆ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜๋Š๋ƒ๋Š” ๊ฐ ๊ฐœ๋ฐœํŒ€์— ๋งก๊ฒจ์•ผ ํ•œ๋‹ค.

์š”์•ฝ:

์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ™•์‹คํžˆ ํšจ๊ณผ๊ฐ€ ์žˆ์ง€๋งŒ AppVersion ๋ณ€๊ฒฝ๋œ ๋ถˆํ•„์š”ํ•œ Helm ํŒจํ‚ค์ง€๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
$ helm package myapp --app-version 1.0.0 $ helm install myapp-1.0.0.tgz

๋„ค, ํ•˜์ง€๋งŒ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•˜๋ฉด ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•ฑ ๋ฒ„์ „์ด ์„ค์ •๋˜์ง€ ์•Š์€ ์ฐจํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ(๋˜๋Š” 0.0.0 ๋˜๋Š” ๊ธฐํƒ€)๋กœ ์ฐจํŠธ๋ฅผ ํ‘ธ์‹œํ•œ ๋‹ค์Œ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ helm fetch ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ์•ฑ ๋ฒ„์ „์œผ๋กœ ํŒจํ‚ค์ง•ํ•œ ๋‹ค์Œ ๋กœ์ปฌ .tgz ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ์ฐจํŠธ๋ฅผ ํ‘ธ์‹œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฐจํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ๊นจ๋—ํ•˜๊ฒŒ ์œ ์ง€๋˜๊ณ  ์‹ค์ œ ์ฐจํŠธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฐฐํฌ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์ง€๋งŒ(์˜ˆ: Helm ์ €์žฅ์†Œ์—์„œ ์ง์ ‘ ์„ค์น˜ํ•˜์—ฌ) ํ•ญ์ƒ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ถ”๊ฐ€ ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Charts.yaml ๊ฐ€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฐํฌ ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค.

์—์„œ ๋‚ด ์ƒ๊ฐ์„ _Summarising https://github.com/helm/helm/pull/5492#issuecomment -520029902_

์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ํŒจํ‚ค์ง€, ์ฐจํŠธ ๋ฐ ๋ฒ„์ „์„ ํ•ด์„ํ•˜๋Š” ๋ฐฉ์‹์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. @BenjaminSchiborr , ์ด๊ฒƒ์ด ๋‹น์‹ ์—๊ฒŒ ์˜๋ฏธ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

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

Chart ์—์„œ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค . ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!

์Šคํ…Œ์ด์ง€์— ์•ฑ์„ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— ์ฐจํŠธ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ helm package ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๋ฒ„์ „์„ ๋ชจ๋‘ ์ˆ˜์ •ํ•˜์—ฌ ์ฐจํŠธ์™€ ํ•จ๊ป˜ ์•ฑ์„ ํŒจํ‚ค์ง•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋‹จ๊ณ„์—์„œ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ํŒจํ‚ค์ง€๋ฅผ ์˜ˆ๋ฅผ ๋“ค์–ด QA ๋‹จ๊ณ„์— ์„ค์น˜ํ•˜๊ณ  helm install ์‚ฌ์šฉํ•˜์—ฌ UA ๋ฐ ํ”„๋กœ๋•์…˜์—์„œ ์Šน๊ฒฉํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ํŒจํ‚ค์ง€ ์ง€ํ–ฅ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

ํ˜ผ๋ž€

helm install ์—๋Š” ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€ ์ด๋ฆ„
  2. ํŒจํ‚ค์ง€๊ฐ€ ์ด๋ฏธ ๋‹ค์šด๋กœ๋“œ๋˜์—ˆ๊ฑฐ๋‚˜ ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ ํŒจํ‚ค์ง€ ํŒŒ์ผ ๊ฒฝ๋กœ
  3. HTTP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ํŒจํ‚ค์ง€ URL
  4. ์ฐจํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ

๋„ค ๋ฒˆ์งธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์—ฌ๊ธฐ์—์„œ ๊ฒ€์€ ์–‘์ฒ˜๋Ÿผ ๋Š๊ปด์ง€์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด ppl์ด ํŒจํ‚ค์ง€์™€ ์ฐจํŠธ๋ฅผ ํ˜ผ๋™ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ๋ฌธ์ œ์˜ ๊ทผ์›์ž…๋‹ˆ๋‹ค.

์ถ”๋ฆฌ

์•ผ์ƒ์—๋Š” ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ์•ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Big/Medium - ๋” ๋‚˜์€ ๋‚ด์„ฑ ๋ฐ ํ’ˆ์งˆ ๋ณด์ฆ์„ ์œ„ํ•ด ์„ธ๋ถ€์ ์ด๊ณ  ์„ธ๋ถ„ํ™”๋œ ํ๋ฆ„์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๊ฐ„, ๋ˆ ๋ฐ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.
์†Œ๊ทœ๋ชจ - ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค, ์• ์™„๋™๋ฌผ ํ”„๋กœ์ ํŠธ, PoC, ์ €๋น„์šฉ ํ”„๋กœ์ ํŠธ, DevOps ์ง€์‹์ด ์—†๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์ฃผ๋„ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ์ ํŠธ.

์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ํŒจํ‚ค์ง•์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌํ•  ์‹œ๊ฐ„์ด๋‚˜ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ณ  ํ•˜๋‚˜์˜ ๋ช…๋ น์œผ๋กœ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค !

์ด๊ฒƒ์ด helm install ๊ฐ€ helm package & helm install ์™€ ๊ฐ™์€ ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ --app-version ์™€ ๊ฐ™์€ ์™„์ „ํ•œ helm package ๊ธฐ๋Šฅ์€ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

helm install ๋Š” helm package & helm install ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ helm install ๋ฅผ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค๊ณ  ์ง€์›, ํ…Œ์ŠคํŠธ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋งŒ๋“ค๊ธฐ์— ์ง€์˜ฅ์ž…๋‹ˆ๋‹ค.

์ œ์•ˆ 1

helm install ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค. helm ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฒ ์ด์Šค, ํ…Œ์ŠคํŠธ ๋ฐ ์˜๊ฒฌ์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ํŒจํ‚ค์ง€๋งŒ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ œ์•ˆ 2 - helm run

์ƒˆ๋กœ์šด ๋ช…๋ น ๋„์ž…: helm run . ์ž‘๋™ ํ•ด์•ผ ํ•˜๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ์ž‘์€ ์•ฑ์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค. ๋˜๋Š” ์ค‘ํ˜• ๋ฐ ๋Œ€ํ˜•์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

helm package ์™€ helm install ๊ฒฐํ•ฉํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์˜๋ฏธ๊ฐ€ ์—†๋Š” ๋ช…๋ น์€ ์ œ์™ธํ•˜๊ณ  ๋‘ ๋ช…๋ น์˜ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

helm package go build ๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ helm package ๋Š” ๋นŒ๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. go run ์‚ฌ์šฉํ•˜๋ฉด ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ์—†์ด ์•ฑ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ helm run ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์‹คํ•œ ์ด๋ฆ„์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ณ ๋ คํ•ด์•ผ ํ•  ์ถ”๊ฐ€ ์‚ฌํ•ญ:

  • ๋Œ€์‹  upgrade --install ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
  • ๊ธฐ๋ณธ์ ์œผ๋กœ --atomic ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

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

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

์žฅ๊ธฐ์ ์œผ๋กœ ์ด์ ์ด ์žˆ๋‹ค๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ณด์ง€ ์•Š๋Š”๋‹ค.

@BenjaminSchiborr ์ข‹์•„์š”, ์กฐ๊ธˆ ๋ถ„ํ•ดํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

X ๋ฒ„์ „์˜ Chart(== ์ธํ”„๋ผ)๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Y ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

helm ๊ฐ€ ํ˜„์žฌ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์€ helm package ๋‹จ๊ณ„์—์„œ ์ธํ”„๋ผ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ k8 ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ์—ฐ๊ฒฐํ•˜์—ฌ Release๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ณต์‹์€ package(infra + app) + k8s = Release

์ •๋ง๋กœ ์›ํ•˜๋Š” ๊ฒƒ์€ ์ด ์ค‘๊ฐ„ ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  3๊ฐœ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ชจ๋‘ ํ•œ ๋‹จ๊ณ„์ธ ๋ฆด๋ฆฌ์Šค๋กœ ๋ฌถ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด: infra + app + k8s = Release . ๋‚˜ ๋งž์•„?

์ด๊ฒƒ์ด ํ‘œ๋ฉด์ ์œผ๋กœ helm run ๊ฐ€ ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ํ›„๋“œ ์•„๋ž˜์—์„œ๋Š” ๋™์ผํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ... Helm์˜ ์š”์ ์„ ๋†“์น˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค . ์–ด๋–ค ๋„๊ตฌ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  "๊ธธ"์„ ๋งŒ๋“œ๋Š” ์•„์ด๋””์–ด๊ฐ€ ํ•ญ์ƒ ์žˆ์œผ๋ฏ€๋กœ ๋ง์›๊ฒฝ์€ ๋งฅ์ฃผ๋ฅผ ์–‘์กฐํ•  ์ˆ˜ ์žˆ๋Š” ํ—˜๋จธ๋กœ ๋๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ด€์ ์—์„œ ๊ทธ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ์€ ์ •๋ง ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Helm ์ž์ฒด๋Š” k8s ํ…œํ”Œ๋ฆฟ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ถ”์ƒํ™”ํ•˜๊ณ  ์ข…์†์„ฑ๊ณผ ํ•จ๊ป˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ธํ”„๋ผ๋ฅผ ์—ฐ๊ฒฐํ•˜๋„๋ก ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ์„ ์ˆ˜๋™์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ  K8s์— ์ ์šฉํ•œ ๋‹ค์Œ ์ƒˆ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋Œ€์‹  helm upgrade ๋ช…๋ น ํ•˜๋‚˜๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

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

๋”ฐ๋ผ์„œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋งŽ์€ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์˜ฌ๋ฐ”๋ฅธ ์ผ์ž…๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋Š” ์ธํ”„๋ผ๊ฐ€ ์•„๋‹ˆ๊ณ  ํŒจํ‚ค์ง€๊ฐ€ ์•ฑ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•ฑ์€ ์ธํ”„๋ผ๊ฐ€ ์—†๋Š” K8์—์„œ ์˜๋ฏธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ํŒจํ‚ค์ง€๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋Œ€์‹  ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ €๋Š” CI์—์„œ ๊ทธ๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์•ฑ์„ ๋นŒ๋“œํ•˜๊ณ , ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋กœ ๋ณด๋‚ด๊ณ , ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค๊ณ , ๋ฆด๋ฆฌ์Šค๋ฅผ ์œ„ํ•ด ์•„ํ‹ฐํŒฉํŠธ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. CircleCI, Travis, Azure Pipelines๋Š” ์•„ํ‹ฐํŒฉํŠธ๋กœ ๋นŒ๋“œ์— ์ฒจ๋ถ€๋œ ํŒŒ์ผ ์ƒ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ๋„ ๋˜‘๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์–ด์ฉŒ๋ฉด ๋‚ด๊ฐ€ Helm์˜ ์š”์ ์„ ๋†“์น˜๊ณ  ์žˆ๋Š”์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ Helm์€ ์—ฌ๊ธฐ์„œ ์š”์ ์„ ๋†“์ณค์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ํ‹ฐ์ผ“์ด ๋ฐ”๋กœ ๊ทธ๊ฒƒ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ - ๋˜ํ•œ ๋‚˜์˜ ์ง€ํ‰์„ ๋„“ํžˆ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด :)

๊ทธ๋Ÿฌ๋‚˜ ๋„ค, ์ถ”์ƒ์ ์œผ๋กœ ๋ง์”€ํ•˜์‹  ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” helm ํŒจํ‚ค์ง€/๋ฆด๋ฆฌ์Šค์— ์—ฐ๊ฒฐ๋œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „์„ ์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ณธ์งˆ์ ์œผ๋กœ infra + app + k8s = Release ์ž…๋‹ˆ๋‹ค. ๋‚ด ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „์˜ ์†์„ฑ์ด ๋‚ด helm ํŒจํ‚ค์ง€/๋ฆด๋ฆฌ์Šค์— ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค(๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์ •์ƒ์ ์ธ ๊ธฐ๋ณธ๊ฐ’์€ ์ œ์™ธ).

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

์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ํŒจํ‚ค์ง€๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋Œ€์‹  ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์€ ๋„ˆ๋ฌด ๋งŽ์€ ํŒจํ‚ค์ง€๋œ helm ์ฐจํŠธ(์ด๋ฏธ appVersion์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ)์ž…๋‹ˆ๋‹ค. ์•ˆ์ •์ ์ธ ํ•˜๋‚˜์˜ helm ์ฐจํŠธ ๋ฒ„์ „๊ณผ ํ•˜๋ฃจ์— ์ˆ˜๋ฐฑ ๋ฒˆ ๋ณ€๊ฒฝ๋˜๋Š” appVersion์œผ๋กœ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค. ๋”ฐ๋ผ์„œ ๋‚˜์ค‘์— ์ž๋™ํ™”์— ์˜ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์„œ๋น„์Šค๋‹น ๋งค์ผ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ํŒจํ‚ค์ง€๋œ helm ์ฐจํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

(๋‚ด ํŒŒ์ดํ”„๋ผ์ธ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ท€ํ•˜์˜ ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ์•ฑ ๋นŒ๋“œ --> Docker ์ด๋ฏธ์ง€(๊ฒฐ๊ณผ๋Š” appVersion) --> ํŒจํ‚ค์ง€ ์ฐจํŠธ(์—…๋ฐ์ดํŠธ๋œ appVersion ํฌํ•จ) --> ์ €์žฅ์†Œ๋กœ ํ‘ธ์‹œํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด ํ‹ฐ์ผ“์ด ๋ฐ”๋กœ ๊ทธ๊ฒƒ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

ํ™•์‹คํžˆ! ์ œ ์ƒ๊ฐ์—๋Š” ์ด๋ฏธ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋„ˆ๋ฌด ๋†’๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ์กฐํƒ€ ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋‹ค์†Œ ๋ถ€๋‹ด์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฑด ๋‹ค๋ฅธ ์‹œ๊ฐ„์— ํ•  ์–˜๊ธฐ์ฃ , ํžˆํžˆ.

์•ˆ์ •์ ์ธ ํ•˜๋‚˜์˜ helm ์ฐจํŠธ ๋ฒ„์ „๊ณผ ํ•˜๋ฃจ์— ์ˆ˜๋ฐฑ ๋ฒˆ ๋ณ€๊ฒฝ๋˜๋Š” appVersion์œผ๋กœ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค. ๋”ฐ๋ผ์„œ ๋‚˜์ค‘์— ์ž๋™ํ™”์— ์˜ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์„œ๋น„์Šค๋‹น ๋งค์ผ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ํŒจํ‚ค์ง€๋œ helm ์ฐจํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ํ™•์‹คํžˆ ๋„ˆ๋ฌด ๊ณผํ•œ ๋Š๋‚Œ์ด ๋“ค์ง€๋งŒ ์˜๋„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋นŒ๋“œ ์‹คํ–‰์ด ์žˆ๊ณ  ์ผ๋ถ€ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ ์Šคํ…Œ์ด์ง€์— ๋ฐฐํฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด... ๋นŒ๋“œ ๊ฒฐ๊ณผ๊ฐ€ ์—†๋Š” ๋นŒ๋“œ ์‹คํ–‰์„ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฐฐํฌํ•  ๋•Œ ๋นŒ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ •๋ง ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ CI ํŒŒ์ดํ”„๋ผ์ธ์€ JS ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด ๊ทธ๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

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

๋ฌผ๋ก  docker save ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ๋‚˜์ค‘์— ๋นŒ๋“œ ์ž์‚ฐ ๋ณด์กด ์ •์ฑ…์„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ helm package ํŒŒ์ผ๋กœ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์•ฑ ์ž์ฒด๋Š” ์ธํ”„๋ผ๊ฐ€ ์—†๋Š” k8s ํ™˜๊ฒฝ์—์„œ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค .

์•ฑ์ด ์ผ๋ถ€ ์ธํ”„๋ผ์— ์˜์กดํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๊ธฐ๋ณธ ์˜ˆ - configmap.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์•ฑ์„ ๋กค๋ฐฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
์•ฑ์„ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•˜์ง€๋งŒ ์ธํ”„๋ผ๋„ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ธํ”„๋ผ๋ฅผ ๋กค๋ฐฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ?
์ด์ „ ์ธํ”„๋ผ์—๋Š” ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ์•ฑ ๋ฒ„์ „์— ๋Œ€ํ•œ ๋‹จ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์–ด๋–ค ์•ฑ์ด ์–ด๋–ค ์ธํ”„๋ผ๋ฅผ ์ง€์›ํ•˜๋Š”์ง€ ๊ธฐ์–ตํ•˜๊ณ  ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ •๋ง, ๊ทธ๊ฒƒ์€ ์ง€์˜ฅ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์ด ์กฐํƒ€ ์žฅ์น˜๊ฐ€ ์—†๋Š” ์ง€๊ธˆ์€ ์ง€์˜ฅ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ž˜๋ชป์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ์—๋Š” ํˆฌ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ด์œ ๊ฐ€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๋„ˆ๋ฌด ๋งŽ์€ ์ถ”์ƒํ™” ์ˆ˜์ค€์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋‘ ๋ฉ‹์ง€๊ณ  ๋‹จ์ˆœํ•œ ์œ™ํฌ

๋‚˜๋Š” ๋‹น์‹ ์˜ ๋งˆ์ง€๋ง‰ ์š”์ ์ด ๋งค์šฐ ์„ค๋“๋ ฅ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ์ธํ”„๋ผ์—๋Š” ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ์•ฑ ๋ฒ„์ „์— ๋Œ€ํ•œ ๋‹จ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ๋ถ„๋ฆฌํ•˜๊ณ  Helm ํŒจํ‚ค์ง€/๋ฆด๋ฆฌ์Šค๋ฅผ ์ง„์‹ค์˜ ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

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

ํ•˜์ง€๋งŒ ํ‚ค๋งŒ ๊ฐ€์ง€๊ณ ๋Š” 100% ๋ฌธ์ œ ๐Ÿ’ฃ. ์ด๊ฒƒ์ด ์•„์ด๋””์–ด๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ appVersion ์žฌ์ •์˜๋ฅผ ํ—ˆ์šฉํ•˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

๊ฒฐ๊ตญ ์ฐจํŠธ ๋ฒ„์ „์€ "์Šˆํผ" ๋ฒ„์ „์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

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

๋ฌธ์„œํ™” ๋ชฉ์ (๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ฉ‹์ง„ ์•„์ด๋””์–ด)์„ ์œ„ํ•ด ์ฐจํŠธ ์ •์˜ ์ž์ฒด๋งŒ ์ฐธ์กฐํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ "์ฐจํŠธ ์ „์šฉ" ๋ฒ„์ „์„ ์ง์ ‘ ์†Œ๊ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ํ•„๋ฆฌํ”„๋ ˆ
๋„ต ๋„ต! ์ด๊ฒƒ์ด ํ˜„์žฌ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ๊ฒฐ์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Helm์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณผ ๋•Œ.

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

@BenjaminSchiborr

๊ทธ๋Ÿฌ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ด๊ฒƒ์€ ์•„๋งˆ๋„ ์‚ฌ์‹ค์ด ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค

ํ™•์‹คํžˆ! ์ „์ฒด k8์—์„œ๋„ ์ปจํ…Œ์ด๋„ˆํ™”๋Š” ๋„ˆ๋ฌด ๋งŽ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐํƒ€ ์žฅ์น˜๊ฐ€ ์ƒ์„ฑ๋œ ๋ฌธ์ œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์กฐ๊ธˆ ๋‹ค๋ฅธ ๊ด€์ ์—์„œ ๋ถ„์„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์ธํ”„๋ผ ์ธ์Šคํ„ด์Šค๋Š” ์ „์ฒด ์ œํ’ˆ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค: SaaS ์ธ์Šคํ„ด์Šค, VM ํ’€, k8s ์„ค์ •, ์•ฑ ๋ฒ„์ „(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๊ด€์ฐฐ ๋„๊ตฌ, ๋ผ์šฐํ„ฐ, ์‚ฌ์ด๋“œ์นด ๋ฐ ์ œํ’ˆ ์•ฑ ์ธ์Šคํ„ด์Šค ํฌํ•จ)
  • ์ธํ”„๋ผ ์ธ์Šคํ„ด์Šค์—๋Š” ํ•˜๋‚˜์˜ ์ง„์‹ค ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ Terraform๊ณผ ๊ฐ™์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•œ ํด๋”์— ๋„ˆ๋ฌด ๋งŽ์€ ํ•ญ๋ชฉ = ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ถ„ํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•ˆ๋…•ํ•˜์„ธ์š” Terraform ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ํด๋”์— ์žˆ๋Š” ํ”Œ๋žซํผ๊ณผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ = ํ•˜๋“œ. ๋ถ„ํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•ˆ๋…•ํ•˜์„ธ์š” ํ”Œ๋žซํผ๊ณผ ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค. K8s๊ฐ€ ๋“ค์–ด์˜ต๋‹ˆ๋‹ค.

    1. ๋”ฐ๋ผ์„œ Terraform ๋ชจ๋“ˆ ์€ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋นˆ ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ด์–ด ์ƒ์„ฑ์„ ํฌํ•จํ•˜์—ฌ ํ”Œ๋žซํผ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    2. K8s ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ YAML์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋งŽ์€ K8s ์•ฑ(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ํ•ญ๋ชฉ ํฌํ•จ)์— ๋Œ€ํ•œ ๋งŽ์€ YAML ํŒŒ์ผ = ํ•˜๋“œ. ์•ฑ๋ณ„๋กœ ํด๋”๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

    1. PostgreSQL, Redis, MyPetShop๊ณผ ๊ฐ™์€ ํด๋” ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํŒŒ์ผ์—๋Š” ๋ณด์œ ํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ YAML ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  K8์— ์ ์šฉํ•˜๋ ค๋ฉด ์•ฑ ๋ฒ„์ „์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Hello Helm - ์ด ํด๋”(์ฐจํŠธ๋ผ๊ณ  ํ•จ)๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด์ง€๋งŒ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ํ•จ๊ป˜ ์ ์šฉํ•˜๊ณ  ๋กค๋ฐฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ฐจํŠธ๊ฐ€ ๊ฒฌ๊ณ ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์ง€์›ํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค. ์ด์ œ ์ฐจํŠธ๋Š” ์ธํ”„๋ผ๊ฐ€ ์•„๋‹ˆ๋ผ ์ธํ”„๋ผ ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค.
  • ์ฐจํŠธ๊ฐ€ ๊ต‰์žฅํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ์นœ๊ตฌ๋“ค๊ณผ ๊ณต์œ ํ•ด ๋ด…์‹œ๋‹ค. ์ฐจํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ฐจํŠธ๋ฅผ ํ‘ธ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ์–ด๋–ค ์•ฑ ๋ฒ„์ „์— ์–ด๋–ค ์ฐจํŠธ๊ฐ€ ํ•„์š”ํ•œ์ง€ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์–ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ฐจํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์–ด ์–ด๋–ค ์•ฑ ๋ฒ„์ „์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š”์ง€.

๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์€ "Setup myApp version 1.4.2 as K8s app" ์ž…๋‹ˆ๋‹ค . ๋ชจ๋“  ์œ„ํ—˜, ์ข…์†์„ฑ, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ•˜๋‚˜์˜ ์•„ํ‹ฐํŒฉํŠธ์ธ apps versions + hooks + setup logic + infrastructure to connect it all ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์บก์Šํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ MSI, Deb, RPM, ์‹ฌ์ง€์–ด NPM, Go mod, Pip, Gem๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ํŒจํ‚ค์ง€๊ฐ€ ๋“ฑ์žฅํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒจํ‚ค์ง€๋Š” ์ •์˜์— ๋”ฐ๋ผ CI/CD ํ๋ฆ„ ๋‚ด์—์„œ ์„ค์น˜ ๊ฐ€๋Šฅํ•œ ๋ฆด๋ฆฌ์Šค๋กœ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋ฐ/๋˜๋Š” ์‹œ์Šคํ…œ ์„ค์ •(k8s ํด๋Ÿฌ์Šคํ„ฐ)์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์žฌ๋ฏธ์žˆ๋Š” ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ข…์†์„ฑ ์—…๋ฐ์ดํŠธ = ์ธํ”„๋ผ ํ…œํ”Œ๋ฆฟ(์ฐจํŠธ) ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ
  • ์•ฑ ์—…๋ฐ์ดํŠธ๋จ = ์ž์ฒด ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ ์ธํ”„๋ผ ํ…œํ”Œ๋ฆฟ(์ฐจํŠธ)์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์ธ ํฌํฌ ์ƒ์„ฑ - ํŒจํ‚ค์ง€

๊ทธ๋ž˜๋„ k8s ์šด์˜์ž๋Š” ํ˜„์žฌ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์˜ˆ์ƒํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์šด์˜์ž์ฒ˜๋Ÿผ ์ž‘๋™ํ•ด์•ผ ํ•˜์ง€๋งŒ helm์ด ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‰ฌ์šด ๋ฆด๋ฆฌ์Šค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ•˜๋‚˜์˜ ๋„๊ตฌ๋งŒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒฌ์žˆ๋Š” ์‚ฌ๋žŒ? ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ ๋” ๋‚˜์€

๊ท€ํ•˜๊ฐ€ ์„ค๋ช…ํ•˜๋Š” ๋‚ด์šฉ์€ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ์ธํ”„๋ผ์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•˜๋„๋ก ๋˜์–ด ์žˆ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด ๋งŽ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋ฐ”์œ ์ž‘์—…์ด ๋ฉ๋‹ˆ๋‹ค. ๊ณต์œ  ๋˜๋Š” ์ฟ ํ‚ค ์ปคํ„ฐ ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋˜๊ณ  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ž์ฒด์— ์žˆ๋Š” CI/CD ํŒŒ์ดํ”„๋ผ์ธ ์ •์˜ ๋•๋ถ„์— ์ˆ˜์‹ญ ๊ฐœ์˜ ์ฟ ํ‚ค ์ปคํ„ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. azure-pipelines.yaml)์—์„œ "ํŒจํ‚ค์ง€ ๋ฒ„์ „"์€ ๋งˆ์Šคํ„ฐ ๋ถ„๊ธฐ์˜ ํŠน์ • ๋ฒ„์ „์—์„œ ์ƒ์„ฑ๋œ ๋นŒ๋“œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์˜๋ฏธ, "ํŒจํ‚ค์ง€"๋ฅผ ์•„๋ฌด๋ฐ๋‚˜ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด ๋นŒ๋“œ๋Š” configmaps ๋“ฑ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋™์ผํ•œ ๋น„ํŠธ์™€ ๋™์ผํ•œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์•„์ฃผ ๋“œ๋ฌผ๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ์„œ๋น„์Šค ์ธํ”„๋ผ ๋ณ€๊ฒฝ. Helm์ด ์ด ๊ทธ๋ฆผ์— ์žˆ๋Š” ์ด์œ ๋Š” 1) ์ด๋ฏธ ์ผ๋ถ€ ์ธํ”„๋ผ(์˜ˆ: nginx)๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 2) k8s yaml ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ํœ ์„ ์žฌ๋ฐœ๋ช…ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@wasker

์˜ˆ๋ฅผ ๋“ค์–ด docker์— ํˆฌ์˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Docker ์ด๋ฏธ์ง€๋„ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ OS ์ด๋ฏธ์ง€ = ์ธํ”„๋ผ์™€ ํ•จ๊ป˜ ๋ฌถ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ๋ฅผ ํ•  ๋•Œ๋งˆ๋‹ค docker ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ์ด์œ ๋Š” helm ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์„ ๋„์ปค ์ด๋ฏธ์ง€๋กœ ์ถ”์ƒํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด ๋„์ปค๊ฐ€ ํ•„์š” ์—†๊ณ  ์ผ๋ฐ˜ VM์œผ๋กœ ์‚ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์–ด์จŒ๋“  ์šฐ๋ฆฌ๋Š” ์ž˜๋ชป๋œ ๊ธธ์„ ๊ฐ”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋„ helm์„ ์‚ฌ์šฉํ•˜๊ณ  ์ˆ˜๋™์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๊นŒ? ์ œ ์ƒ๊ฐ์—๋Š” 3๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. helm package chart -> helm install package
  2. helm install chart
  3. helm install -> kubectl set image

@wasker ์–ด๋Š ์ชฝ์ด ๋‹น์‹ ์˜ ๊ฒƒ์ž…๋‹ˆ๊นŒ? 3๋ฒˆ์ด ์•„๋‹ˆ๋ผ ๋ฏฟ์Šต๋‹ˆ๋‹ค. ์ธํ”„๋ผ ๊ตฌ์„ฑ๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‹ค์ œ๋กœ ๋ถ„๋ฆฌํ•˜๋”๋ผ๋„ ์ž‘์—…ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ธํ”„๋ผ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ๋•Œ ๋ชจ๋“  ๋ฒ„์ „์„ ์žƒ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฐจํŠธ์—์„œ ์ˆ˜๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ๊ฐ ๋ฐฐํฌ์— ๋Œ€ํ•ด kubectl set image ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ์šฐ๋ฆฌ๋Š” ๋‘ ๋ฒˆ์งธ helm install chart "w/o ํฌ์žฅ"์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์กฐํƒ€ ์žฅ์น˜๋Š” ํ•ญ์ƒ ๊ทธ๋ฆผ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ๋นŒ๋“œ์ง€๋งŒ ๋Ÿฐํƒ€์ž„์— ์•ฑ์„ ๋ฐฐํฌํ•  ๋•Œ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ CI ๋นŒ๋“œ๋Š” ๋ฐฐํฌํ•ด์•ผ ํ•  ๋•Œ ์•”์‹œ์ ์œผ๋กœ ํŒจํ‚ค์ง€ ์ƒ์„ฑ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  golang์— ํ”„๋กœ์ ์…˜ํ•˜๋ฉด ๋นŒ๋“œํ•˜๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ด๊ณ  docker์—์„œ go run ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํŒจํ‚ค์ง• ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ๋Š” ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ?

์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์ด์•ผ๊ธฐ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ https://github.com/helm/helm/issues/3555#issuecomment -529022699๊ฐ€ ์ œ ์ œ์•ˆ์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€ helm run ํ•˜๊ณ ๋กœ ๋ชจ๋ธ๋ง go run .

์ธํ”„๋ผ์™€ ์•ฑ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ธํ”„๋ผ ๋ฅผ ์—…๋ฐ์ดํŠธ/์‹œ๋“œํ•˜๋Š” ๋ฐ์—๋งŒ helm์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด๊ณ  ์‹ถ์ง€๋งŒ ์—…๋ฐ์ดํŠธ์— ๋‘ํ†ต์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฐฐํฌ ๋ฒ„์ „๊ณผ ๋‚ด์šฉ์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ... ๋„ˆ๋ฌด ์ž˜๋ชป๋œ ๊ฒƒ ๊ฐ™์•„์„œ ๋งŒ๋“œ๋Š” ๋ฐ ์‹œ๊ฐ„ ๋‚ญ๋น„๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด docker์— ํˆฌ์˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Docker ์ด๋ฏธ์ง€๋„ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ OS ์ด๋ฏธ์ง€ = ์ธํ”„๋ผ์™€ ํ•จ๊ป˜ ๋ฌถ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ๋ฅผ ํ•  ๋•Œ๋งˆ๋‹ค docker ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ์ด์œ ๋Š” helm ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

Docker ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ๊ตฌ์„ฑ ์‚ฌ์šฉ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ์—ฌ๊ธฐ์—์„œ ์œ ์‚ฌ์ ์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ Docker ์ด๋ฏธ์ง€์— ์ „๋‹ฌํ•˜๋ฉด ๋Ÿฐํƒ€์ž„์— ์‹คํ–‰๋˜๋Š” ๋ฐฉ์‹์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ ์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€์˜ ๋‚ด์šฉ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” - ๋งค์šฐ ์œ ์‚ฌํ•œ ์ƒํ™ฉ์ด์ง€๋งŒ ์ด ๊ฒฝ์šฐ ๋™์ž‘์€ ๋ฐ”๋žŒ์งํ•˜๊ณ  ์ •์ƒ์ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  golang์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋นŒ๋“œํ•˜๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ด๊ณ  docker์—์„œ go run์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. [...] ๋”ฐ๋ผ์„œ ํŒจํ‚ค์ง• ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ๋Š” ์ง„์งœ ์ด์œ ๋Š” ์—”์ง€๋‹ˆ์–ด์˜ ์ „์ฒด ๊ทธ๋ฆผ์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์Šต๋‹ˆ๊นŒ?

๋‚ด ์ƒ๊ฐ์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์‹ค์ ์œผ๋กœ ์—ฌ๊ธฐ์—์„œ ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ๋žŒ๋“ค์ด ์•ฑ ๋ฒ„์ „์„ "์ฐจํŠธ์˜ ์ผ๋ถ€"๋กœ ๊ณ ๋ คํ•˜๋Š”์ง€ ์—ฌ๋ถ€์™€ Helm ์ฐจํŠธ๋ฅผ ์ฐจํŠธ์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐฐํฌ๋˜๋Š” Docker ์ด๋ฏธ์ง€์™€ ๊ตฌ๋ณ„๋˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋‚˜์˜ ๊ฒฌํ•ด๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฐ”์™€ ๊ฐ™๋‹ค. Docker ์ด๋ฏธ์ง€์—์„œ ์ปดํŒŒ์ผ๋œ Go ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋‹ค๋ฅธ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์œผ๋กœ Helm ์ฐจํŠธ๋ฅผ ์žฌํŒจํ‚ค์ง•ํ•˜๊ณ  ์ฐจํŠธ ๋ฒ„์ „์„ ์ผ์ข…์˜ "์ˆ˜ํผ ๋ฒ„์ „"์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ฃผ์žฅ์€ ์„ค๋“๋ ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค(์ฆ‰, ํ•ญ์ƒ ํ˜ธํ™˜๋˜๋Š” ์•ฑ ๋ฒ„์ „์„ ์ฐจํŠธ - ๊ฐ’์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ).

์ œ ์งˆ๋ฌธ์€ - _๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋ชจ๋‘ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?_ ๊ฐ ์ ‘๊ทผ ๋ฐฉ์‹์—๋Š” ์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉด ์™„๋ฒฝํ•˜๊ฒŒ ์œ ํšจํ•œ ์ผ๋ถ€ ์›Œํฌํ”Œ๋กœ๊ฐ€ ๋” ์–ด๋ ค์›Œ์งˆ ๋ฟ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Flux CD์™€ Helm Operator๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ  Helm ์ฐจํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ(์ฆ‰, ๋งŽ์€ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ๋™์ผํ•œ ํŠน์„ฑ์„ ๊ณต์œ ํ•˜๋Š” ํŠน์ • ์œ ํ˜•์˜ ์„œ๋น„์Šค๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—) ์œ ์šฉํ•œ helm list ์ถœ๋ ฅ์„ ์–ป์œผ๋ ค๋ฉด ์ƒˆ Helm์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์•ฑ์˜ ์ฐจํŠธ์™€ ๊ฐ ๋ฆด๋ฆฌ์Šค์—๋Š” ๊ณ ์œ ํ•œ Helm ์ฐจํŠธ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ๋งŒ์œผ๋กœ๋„ ํŒŒ์ดํ”„๋ผ์ธ์ด ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ์ฐจํŠธ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ฐจํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์„ ๋•Œ๋งŒ ์‹คํ–‰๋˜๋Š” ์ž์ฒด ํŒŒ์ดํ”„๋ผ์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒŒ์ดํ”„๋ผ์ธ์ด ๋‹จ์ผ Helm ๋ช…๋ น์„ ์‹คํ–‰ํ•  ํ•„์š”๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(Flux CD์— ์„ค์น˜/์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ ์ƒˆ ์•ฑ ๋ฒ„์ „ ํ”Œ๋ž˜๊ทธ).

์ œ ์งˆ๋ฌธ์€ - ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋ชจ๋‘ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

์—ฌ์ „ํžˆ Helm ์ฐจํŠธ ์ž์ฒด๋ฅผ ์„ค๋ช…์ ์ธ "์Šˆํผ ๋ฒ„์ „"์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋…ผ์Ÿ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@seeeruk ์˜ ์š”์ ์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ: ๋‘˜ ๋‹ค ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

๋‚ด๊ฐ€ ํˆฌ๊ตฌ๋ฅผ ๋ณด๋Š” ๋ฐฉ๋ฒ•

Helm์ด ์ฐจํŠธ๊ฐ€ ์•„๋‹Œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ด ํ˜„์žฌ ๋…ผ์Ÿ์„ ์ฝ๊ธฐ ์ „๊นŒ์ง€ ๋‚˜๋Š” Helm์ด ์ฃผ๋กœ ๊ด€๋ จ๋œ Kubernetes ๋ฆฌ์†Œ์Šค๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ผ๊ณ  ๋ฏฟ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฏฟ์Œ์€ ์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ Helm ๋ฌธ์„œ์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค.

Helm์€ Kubernetes์— ์ฐจํŠธ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ๊ฐ ์„ค์น˜์— ๋Œ€ํ•œ ์ƒˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ์ฐจํŠธ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด Helm ์ฐจํŠธ ์ €์žฅ์†Œ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํ…์ŠคํŠธ์˜ ๊ฒฝ์šฐ ํ˜„์žฌ ์•ˆ์ •์ ์ธ helm ๋ฌธ์„œ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐจํŠธ๋Š” ํˆฌ๊ตฌ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋„๊ตฌ ๋˜๋Š” ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ์ •์˜๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Homebrew ์ˆ˜์‹, Apt dpkg ๋˜๋Š” Yum RPM ํŒŒ์ผ์— ํ•ด๋‹นํ•˜๋Š” Kubernetes์ฒ˜๋Ÿผ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋ž˜์„œ ์ง€๊ธˆ ์•ฝ๊ฐ„์˜ ํ˜ผ๋ž€์ด ์žˆ์Šต๋‹ˆ๋‹ค! Helm ๋ฌธ์„œ์—๋Š” "์ฐจํŠธ๊ฐ€ ์กฐํƒ€ ์žฅ์น˜ ํŒจํ‚ค์ง€"๋ผ๊ณ  ๋ถ„๋ช…ํžˆ ๋ช…์‹œ๋˜์–ด ์žˆ์ง€๋งŒ, ๊ทธ๋ ‡๋‹ค๋ฉด ๋„๋Œ€์ฒด ์™œ helm install ๊ฐ€ ํŒจํ‚ค์ง€๋˜์ง€ ์•Š์€ ์ฐจํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๊นŒ?

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

Helm์€ _what_์˜ ๊ตฌ์กฐ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ๊ณผ _what properties_ ์‚ฌ์ด์—์„œ ๋งคํผ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์งˆ๋ฌธ์€ "Helm์ด ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?"์ž…๋‹ˆ๋‹ค.

Helm ๋ฐฐํฌ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

helm install release-name ./local_chart ์‹คํ–‰ํ•˜๋ฉด helm์ด ์ง€์ •๋œ ๊ฐ’์œผ๋กœ ๋ชจ๋“  ์ฐจํŠธ ํ…œํ”Œ๋ฆฟ์„ ๋กœ์ปฌ๋กœ ๋ Œ๋”๋งํ•˜๊ณ (๊ธฐ๋ณธ๊ฐ’ ๋˜๋Š” ์žฌ์ •์˜๋ฅผ ํ†ตํ•ด) ๋ Œ๋”๋ง๋œ ๋ฒ„์ „์„ Kubernetes๋กœ ํ‘ธ์‹œํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‚ด๊ฐ€ ๋กค๋ฐฑํ•˜๋Š” ๊ฒฝ์šฐ Helm์ด ์ด์ „์— ๋ฐฐํฌ๋œ Kubernetes ๊ฐœ์ฒด๋ฅผ ์œ ์ง€ํ•  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. (์ผ๋ถ€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ๋‹ค) "๋ Œ๋”๋ง ํ…œํ”Œ๋ฆฟ ์ปฌ๋ ‰์…˜"์˜์ด ๊ฐœ๋…์€ ๋ฆด๋ฆฌ์Šค ๋ฐ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ์ •์˜(๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋”๋ผ๋„)๋Š” ๋ฆด๋ฆฌ์Šค๊ฐ€ ์กด์žฌํ•˜๊ฑฐ๋‚˜ ๋กค๋ฐฑ๋˜๊ธฐ ์œ„ํ•ด _๋ฒˆ๋“ค์— ์„ค๋ช…๋œ ์ƒํƒœ_์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ ๋‚˜๋Š” helm ๋งŒ์ด ์ง„์ •์œผ๋กœ packages ๋ฅผ ๋ฐฐํฌ ํ•œ๋‹ค๊ณ  ์ถ”์ธก

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

์ด ๋•Œ๋ฌธ์— ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์ •๋ฆฌํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ๊ฐœ๋ฐœ์„ ์ œ์™ธํ•˜๊ณ  :latest ์—์„œ ๋ฐฐํฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค . ๋„์ปค ์ด๋ฏธ์ง€์˜ ๋ฆด๋ฆฌ์Šค ํƒœ๊ทธ ๋Œ€์‹  "๋ฉ”ํƒ€ ํƒœ๊ทธ"๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฃผ์–ด์ง„ ๋ฐฐํฌ๋ฅผ ์ฃผ์–ด์ง„ ์ฝ”๋“œ ๋ฒ ์ด์Šค์— ๋ฌถ๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์–ด๋ ต๊ฒŒ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์ด๋ฏธ Helm: packages์— ์˜ํ•ด ์˜๊ฒฌ์ด ์ œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŒจํ„ด ์ด 100% ๋ช…ํ™•ํ•˜์ง€ ์•Š๋”๋ผ๋„ --appVersion ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ œ๊ณต๋˜๋Š” ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ผ๊ด€์„ฑ์ด ์žˆ์–ด ๋ณด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์˜ "์ด์œ "์— ๋‹ตํ•˜๋Š” ๊ฒƒ์ด ์•„๋งˆ๋„ ๋‹ค๋ฅธ ์–ด๋–ค ๊ฒƒ๋ณด๋‹ค ๋” ์ค‘์š”ํ•  ๊ฒƒ์ด๋ฏ€๋กœ ๊ทธ ๋Œ€๋‹ต์œผ๋กœ ์ œ ๊ธฐ์—ฌ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

--appVersion์„ ์ง€์›ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ฐฐํฌ์˜ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํšŒ์‚ฌ์— ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ฒ„์ „์ด ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํšŒ์‚ฌ์˜ ํด๋ผ์ด์–ธํŠธ ์ค‘ ์ผ๋ถ€๋Š” ์ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ตœ์‹  ์ฃผ ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ๋กœ ์•ฝ์ •ํ•˜์ง€ ์•Š์•˜๊ณ  ๋‘˜ ์ค‘ ์ด์ „ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ๋ฃŒ ๊ฐœ๋ฐœ ๊ณ„์•ฝ์œผ๋กœ ์ธํ•ด ๋ผ์ด๋ธŒ ๊ฐœ๋ฐœ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ตฌ ๋ฉ”์ด์ € ๋ฒ„์ „์—์„œ ์ด๋ฃจ์–ด ์ง€์ง€๋งŒ ์ œํ’ˆ์€ "๋™์ผ"ํ•ฉ๋‹ˆ๋‹ค. ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‘ ๋ฒ„์ „์— ๋ฐฐํฌํ•  ์ธํ”„๋ผ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•ฑ ๋ฒ„์ „์€ ์ด๋Ÿฌํ•œ ๋ฐฐํฌ ๊ฐ„์— ํฌ๊ฒŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ด ํšŒ์‚ฌ๋Š” ๋ฌด์—‡์„ ํ• ๊นŒ์š”?

  1. appVersion ๋งŒ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ๋ณ„๋„์˜ ๊ฑฐ์˜ ๋™์ผํ•œ ์กฐํƒ€ ์žฅ์น˜ ์ฐจํŠธ๋ฅผ ๋งŒ๋“œ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
  2. ํ•˜๋‚˜์˜ ํˆฌ๊ตฌ ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ฃผ์š” ์•ฑ ๋ฒ„์ „ ๊ฐ„์— ๊ณ„์†ํ•ด์„œ appVersion ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๊นŒ?
  3. appVersion ๋ฅผ ํ”Œ๋ž˜๊ทธ(ํ˜„์žฌ ์ง€์›๋˜์ง€ ์•Š์Œ)๋กœ ์žฌ์ •์˜ํ•˜์—ฌ ๋ช…๋ น์ค„์—์„œ ์ž ์žฌ์ ์ธ ๊ฐœ๋ฐœ์ž ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
  4. Rescope appVersion ๋ฐ–์œผ๋กœ์˜ Chart.yaml ์™€์— values.yaml ?

์ œ์•ˆ 1์€ ๋‹ค๋ฅธ ์ œ์•ˆ๋ณด๋‹ค ์•ฝ๊ฐ„ ๋” ๋งŽ์€ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋„์ž…ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์— ๋Œ€ํ•œ ์ฐจํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๋ณ„๋„๋กœ ์œ ์ง€ํ•˜๋Š” ์ด์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…ํ™•ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์œผ๋ฉฐ ์•„๋งˆ๋„ ์ด ๋ฌธ์ œ์˜ ๋งŽ์€ ๊ฒฝ์šฐ์— ์ฑ„ํƒ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ์•ˆ 2๋Š” ์ œ์•ˆ 1๋ณด๋‹ค ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์ง€๋งŒ ์ฐจํŠธ์— ๋†’์€ ๋ณ€๋™์„ฑ์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. helm install release-name https://remote-repo.com/chart ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ฐจํŠธ์˜ ์ตœ์‹  ๋ฒ„์ „์ด ์ž˜๋ชป๋œ ๋ฒ„์ „์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ธ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? ์ด๋Ÿฐ. ์•„๋งˆ๋„ ์ตœ์„ ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ์•ˆ 3์€ ํ˜„์žฌ ๋…ผ์˜ ์ค‘์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ด ์˜ต์…˜์„ ์‹ซ์–ดํ•˜์ง€๋งŒ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ํ•ด๊ฒฐ์ฑ… ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ helm install release-name https://remote-repo/chart ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ์ž„์‹œ์ ์ด๋ฉฐ Helm์—์„œ๋งŒ ์œ ์ง€ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์•„์ง ์•„๋ฌด๋„ ์ œ์•ˆ 4 ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์„ ์ œ์•ˆํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ์‚ฌ์‹ค์— ์ƒ๋‹นํžˆ ์ถฉ๊ฒฉ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” appVersion์„ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋กœ ๋งŒ๋“ค๊ณ ( helm run ์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์„ ํ™œ์„ฑํ™”) helm package ์˜ํ•ด ์ƒ์„ฑ๋œ ํŒจํ‚ค์ง€์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์˜ ๊ฐœ๋…์„ ์ง„์ •์œผ๋กœ ํ’€๋ฆฝ๋‹ˆ๋‹ค. appVersion ๊ฐœ๋…์„ ์กฐํƒ€ ์žฅ์น˜ ๋ฐฐํฌ์™€ ๊ฒฐํ•ฉํ•˜๋ฉด์„œ ์ฐจํŠธ ๋ฒ„์ „์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค(appVersion์ด ์–ด๋”˜๊ฐ€์— ๋งž์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ?).

๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๐Ÿ‘€ ์ด๋ฒˆ ํ™๋ณด.

@jrkarnes : ์–ด๋–ค ์˜๋ฏธ์—์„œ 4)๋Š” ์ด๋ฏธ ์ œ์•ˆ๋˜์—ˆ์œผ๋ฉฐ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(https://github.com/helm/helm/pull/5492#issuecomment-517255692 ์ฐธ์กฐ). ์ฐจํŠธ ํ…œํ”Œ๋ฆฟ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{{ default .Values.appVersion .Chart.AppVersion }}

์ด๊ฒƒ์€ ๋‹น์‹ ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  appVersion ์—์„œ Charts.yaml ๋ญ”๊ฐ€์— ๊ธฐ๋ณธ์œผ๋กœํ•˜๊ณ  ์žฌ์ •์˜ Values.yaml (์ „ํ™”๋ฅผ ์„ค์น˜ / ์—…๊ทธ๋ ˆ์ด๋“œ์‹œ ๋ฌด์‹œ ๋  ์ˆ˜์žˆ๋‹ค). ๋‹จ์ ์€ ์˜ˆ๋ฅผ ๋“ค์–ด helm ls ์ˆ˜ํ–‰ํ•  ๋•Œ appVersion ์—†๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@BenjaminSchiborr ์ด์— ๋Œ€ํ•ด helm ์ž‘์—… ๊ณต๊ฐ„์— ์žˆ์—ˆ์œผ๋ฏ€๋กœ ์ด ์‹œ์ ์—์„œ ๋ชจ๋“  ์ง€์‹์€ ์ข‹์€ ์ง€์‹ ์ž…๋‹ˆ๋‹ค.

๋„ค ๋ฒˆ์งธ ์ œ์•ˆ์ด ์•ฝ๊ฐ„ ์˜คํ•ด๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์š”. {{ default .Values.appVersion .Chart.AppVersion}} ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  {{ .Values.Helm.AppVersion}} ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  values.yaml ๋Š” appVersion ๋Œ€์‹  Chart.yaml

@jrkarnes
๊ทธ๊ฒŒ ๋‚ด๊ฐ€ ์ง€๊ธˆ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•ฑ ๋ฒ„์ „์ด ๊ณ ์œ ํ•œ ๋ˆˆ์†ก์ด๋กœ ์ทจ๊ธ‰๋˜์–ด์•ผ ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ์ฐจํŠธ์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.

์ด์œ ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ธํ”„๋ผ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ธํ”„๋ผ์—๋Š” ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ ๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์ž…๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋„ˆ๋ฌด ๋ฐ”๋น ์„œ ์‚ฌ์ด๋“œ ์ผ€์ด์Šค์™€ ํ”„๋กœ์ ์…˜์— ๋Œ€ํ•ด ๋จธ๋ฆฌ๋ฅผ ์‹ธ๋งค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๊ฒƒ์ด ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ๋ชจ๋“  ์ธํ”„๋ผ์ธ๋ฐ ์•ฑ ๋ฒ„์ „์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋˜๋Š” Chart๊ฐ€ ์ธํ”„๋ผ ํ…œํ”Œ๋ฆฟ์ผ ๋•Œ ์ธํ”„๋ผ ๋ฒ„์ „์œผ๋กœ, ์ธํ”„๋ผ์— ์•ฑ ๋ฒ„์ „์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ ์•ฑ ๋ฒ„์ „์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์กฐ๊ธˆ ๋” ์ƒ๊ฐํ•ด๋ณผ๊ฒŒ

@jrkarnes
๊ทธ๊ฒŒ ๋‚ด๊ฐ€ ์ง€๊ธˆ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•ฑ ๋ฒ„์ „์ด ๊ณ ์œ ํ•œ ๋ˆˆ์†ก์ด๋กœ ์ทจ๊ธ‰๋˜์–ด์•ผ ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ์ฐจํŠธ์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.

์ด์œ ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ธํ”„๋ผ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ธํ”„๋ผ์—๋Š” ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ ๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์ž…๋‹ˆ๊นŒ?

๊ธฐ๋ณธ์ ์œผ๋กœ ์ฐจํŠธ ๋ฒ„์ „์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „๊ณผ ๋ณ„๋„๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์  ์ž…๋‹ˆ๋‹ค. ๋น ๋ฅธ ์˜ˆ๋Š” ์•„๋งˆ๋„ ์ด๊ฒƒ์ด ์‚ฌ์‹ค์ž„์„ ์ฆ๋ช…ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ver 1.1.0 ๋ฒ„์ „์˜ ์ฐจํŠธ์—์„œ ์‹คํ–‰ ์ค‘์ธ ver 4.0.0 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐฐํฌ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž‘์—…ํ•˜๋Š” ๋™์•ˆ ์ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ cron ์ž‘์—… ์‹คํ–‰์„ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. cronJob ๊ฐœ์ฒด๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉํ•˜๋Š” ๋Œ€์‹  ์ด ์ฐจํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋„ cron ์ž‘์—…์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ์„ ๊นจ๋‹ซ๊ณ  ์ฐจํŠธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ฐจํŠธ๊ฐ€ ver 1.2.0 ๋˜์—ˆ์ง€๋งŒ ์ฐจํŠธ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†์œผ๋ฉฐ ์—ฌ์ „ํžˆ ver 4.0.0 ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ์—๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ฏธ ์ด PR์—์„œ ๋…ผ์˜์˜ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋„ˆ๋ฌด ๋ฐ”๋น ์„œ ์‚ฌ์ด๋“œ ์ผ€์ด์Šค์™€ ํ”„๋กœ์ ์…˜์— ๋Œ€ํ•ด ๋จธ๋ฆฌ๋ฅผ ์‹ธ๋งค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๊ฒƒ์ด ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ๋ชจ๋“  ์ธํ”„๋ผ์ธ๋ฐ ์•ฑ ๋ฒ„์ „์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋˜๋Š” Chart๊ฐ€ ์ธํ”„๋ผ ํ…œํ”Œ๋ฆฟ์ผ ๋•Œ ์ธํ”„๋ผ ๋ฒ„์ „์œผ๋กœ, ์ธํ”„๋ผ์— ์•ฑ ๋ฒ„์ „์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ ์•ฑ ๋ฒ„์ „์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์กฐ๊ธˆ ๋” ์ƒ๊ฐํ•ด๋ณผ๊ฒŒ

์‚ฌ์ด๋“œ ์ผ€์ด์Šค๋‚˜ ํ”„๋กœ์ ์…˜์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ธฐ๋ณด๋‹ค ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์ง€์›๋˜๋Š” ์„ธ ๊ฐ€์ง€ ์—”์ง„ ๋ฒ„์ „์ด ์žˆ๋Š” MySql๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. [5.6, 5.7, 8.0] . mysql ์ธ์Šคํ„ด์Šค๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌํ•˜๋ ค๋ฉด ํ•ญ์ƒ ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ์„ ํƒํ•œ ๋ฒ„์ „์˜ MySql ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํŒŒ๋“œ
  • ํฌ๋“œ(๋˜๋Š” HA์—์„œ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ ํฌ๋“œ)์— ๋Œ€ํ•œ kube-dns ํ™•์ธ์„ ํ—ˆ์šฉํ•˜๋Š” ์„œ๋น„์Šค
  • Pod๊ฐ€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” PVC์™€ ํ•จ๊ป˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•  PV

MySql 5.6, 5.7 ๋˜๋Š” 8.0 ๋ฐฐํฌ ์ฐจํŠธ๋Š” ๋ชจ๋“  ์—”์ง„(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜) ๋ฒ„์ „์—์„œ ๋น„๊ต์  ๋™์ผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

์•ฑ ๋ฒ„์ „์˜ "ํ•„์š”"์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•ดํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์Šจ ๋ง์ธ์ง€ ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. helm ls ๋˜๋Š” helm inspect ์‹คํ–‰ํ•  ๋•Œ ๊ฐœ๋ฐœ์ž ๋˜๋Š” ์šด์˜ ํŽธ์˜์— ๋‹ฌ๋ ค ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@jrkarnes ๋งˆ์ง€๋ง‰ ๊ฒŒ์‹œ๋ฌผ์— +1. ์ฐจํŠธ ๋ฒ„์ „์ด "์ธํ”„๋ผ ๋ฒ„์ „"์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฐจํŠธ์™€ ์•ฑ ๋ฒ„์ „์„ ๋ณ„๋„์˜ ๊ฐœ๋…์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ๋งŽ์€ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฐจํŠธ๋ฅผ ๊ฒŒ์‹œํ•˜๋Š” ๊ฒฝ์šฐ ์ฐจํŠธ์— ์˜์กดํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ์ธํ”„๋ผ์˜ ์ผ๋ถ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜๋„๋ก ํ•  ์ƒ๊ฐ์ด ์—†๋‹ค๋ฉด ์ฐจํŠธ ์ž์ฒด๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ๋•Œ๋•Œ๋กœ ๋‚ด ์ž์‹ ์˜ ์ฐจํŠธ ๋ฒ„์ „์„ helm install last-known-good-chart-version ํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ๋กค๋ฐฑํ•˜๋Š” ๋Œ€์‹  ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์•Œ๋ ค์ง„ ์–‘ํ˜ธํ•œ ์ปค๋ฐ‹ ID.

@iorlas helm run ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์ œ์•ˆ์„ ์ฝ์—ˆ ์œผ๋ฉฐ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์„ค์น˜/์‹คํ–‰ ์ด๋ถ„๋ฒ•์„ ๊ฐ€์งˆ ํ•„์š” ๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์•ฑ ๋ฒ„์ „์„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ์žˆ์–ด ํ‚ค ์œ ์ง€ ๊ด€๋ฆฌ์ž์˜ ๋งˆ์Œ์„ ํŽธ์•ˆํ•˜๊ฒŒ ํ•ด์ค€๋‹ค๋ฉด ์ €๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. :)

@iorlas ์ด ์ œ์•ˆ์œผ๋กœ ๋ฌด์—‡์„ ํ•˜๊ณ 

{{ default .Values.appVersion .Chart.AppVersion}} ์™€ ๊ด€๋ จ๋œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜: YAML์„ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: yaml: ์ž˜๋ชป๋œ ๋งต ํ‚ค: map[interface {}]interface {}{".Values.appVersion | default \"0.0.1\"":interface {}(nil)}[

๋‚ด Chart.yaml์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

name: demo-helm
version: 0.0.1
appVersion: {{ .Values.appVersion | default "0.0.1" }}
home: http://example.com
description: Demo Helm

@IRobL ์ด ์Šค๋‹ˆํŽซ์„ templates/deployment.yaml ์— ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ version์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. values.yaml ์™€ ๊ฐ™์€ ํŒŒ์ผ์€ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ทจ๊ธ‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@jrkarnes ์ €๋Š” ๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋งˆ์ง€๋ง‰ ๋ง์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ํ•˜๊ฒŒ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด์จŒ๋“  ์ง€๋‚œ ๋ช‡ ์ฃผ ๋™์•ˆ ๋‚˜๋Š” ๊ฝค ๋ฐ”๋นด์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฃผ์— ์ €๋Š” helm ๋ฐ packages ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ˜„์žฌ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์žฌํ‰๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‚ด๊ฐ€ ์„ค๋ช…ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Helm Chart ๋Š” ์•ฑ ์ €์žฅ์†Œ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ ๋Š” ๋‹ค์Œ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ๋„์ปค ์ด๋ฏธ์ง€ -> ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ

    • ์ •์  ํŒŒ์ผ -> CDN ์„œ๋น„์Šค

    • ํˆฌ๊ตฌ ํŒจํ‚ค์ง€ -> CI ๋ณด๊ด€

  • ๋”ฐ๋ผ์„œ Helm ํŒจํ‚ค์ง€๋Š” ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ํ•จ๊ป˜ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ์ฃผ์š” ์•„ํ‹ฐํŒฉํŠธ์ž…๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ ์‹œ install ํŒจํ‚ค์ง€

ํ˜„์žฌ ์šฐ๋ ค ์‚ฌํ•ญ:

  • ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ๋ณต์žก์„ฑ.

    • ๋„์ปค ์ด๋ฏธ์ง€ ๋ฐ ์ •์  ํŒŒ์ผ ๋Œ€์‹  ์ถ”๊ฐ€ ํŒŒ์ผ( helm package ) ์ƒ์„ฑ

    • go build / make install ๊ฒฐ๊ณผ ํŒŒ์ผ ์™ธ์— ํ•„์š”ํ•œ ์ฃผ์š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

    • ๋น„์šฉ์ด ์–ผ๋งˆ์—์š”?

    • ์‹ ์ฒญํ•˜๋Š” ์ด์œ ๋Š”?

    • ์–ธ์ œ ์‹ ์ฒญํ•˜๋‚˜์š”?

  • ๋นŒ๋“œ ๊ธฐ๊ฐ„

    • ๋ฐฐํฌํ•  ํ•„์š”๊ฐ€ ์—†๋”๋ผ๋„ ์—ฌ์ „ํžˆ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์„ ๋‚ญ๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 2-5์ดˆ. ๋งŽ์ง€๋Š” ์•Š์ง€๋งŒ ์˜๋ฏธ ์—†๋Š” ์ผ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  • ์ธํ”„๋ผ ํ…œํ”Œ๋ฆฟ ์—…๋ฐ์ดํŠธ์˜ ๋ณต์žก์„ฑ

    • ์ฐจํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋ฉด ๊ฐ’๋„ ์—…๋ฐ์ดํŠธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ์ฐจํŠธ๋Š” ํ•˜๋‚˜์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์ด๊ณ  ๊ฐ’์€ ๋‹ค๋ฅธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์ด๋ฉฐ ๊ฐ’์— ๋Œ€ํ•œ ๊ฐ ์—…๋ฐ์ดํŠธ๋Š” ์•ฝ๊ฐ„์˜ ๊ณจ์นซ๊ฑฐ๋ฆฌ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌํ•œ ์žฌํ‰๊ฐ€๋Š” ์ถ”๊ฐ€์ ์ธ ๋‹จ์ˆœํ™”์™€ ์•„์ด๋””์–ด๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค :)
๋‹ค์Œ์ฃผ ๊ธˆ์š”์ผ์— ์—…๋ฐ์ดํŠธ๋ฅผ ๋ณด๋‚ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์•„, ๋‹น์‹ ์ด ์ €๋ฅผ ์œ„ํ•ด ์ด๊ฒƒ์„ ์ง€์ ํ•ด ์ฃผ์…”์„œ ์™œ ๊ทธ ํŠธ๋ฆญ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”์ง€ ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์˜ค๋ฒ„ํ—ค๋“œ ์กฐ๊ฐ์œผ๋กœ helm ๋„๊ตฌ๋ฅผ ๊ฐ์‹ธ๋Š” ๊ฒƒ์ด ํŽธํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ Helm 2.x๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ž˜ ์ž‘๋™ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ํŠธ๋ฆญ์ž…๋‹ˆ๋‹ค.

APP_VERSION=0.0.7
sed -i.bak "s/^appVersion:.*\\\$/appVersion: $APP_VERSION/" helm/Chart.yaml
helm install --name helm_demo helm/

@IRobL

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐฐํฌ๋ฅผ sed๋กœ ๋ž˜ํ•‘ํ•˜๋Š” ๊ฒฝ์šฐ ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ ์ด๊ฒƒ์ด ์ด ๋…ผ์˜์˜ ์š”์ ์ž…๋‹ˆ๋‹ค.

gitlab์ด ์ดˆ๊ธฐ ๋‹จ๊ณ„์— ์žˆ๊ณ  ์กฐํƒ€ ์žฅ์น˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ์šฐ๋ฆฌ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์†์œผ๋กœ ๋งŒ๋“  ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์˜ ๋Œ€์ฒด ๋Œ€์ƒ์— ๊ฐ’์„ ์ž…๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์€ ์ผ์— ๋Œ€ํ•œ ๋‚˜์œ ์Šต๊ด€์ด๋ฉฐ ๊ฐ€๋Šฅํ•˜๋ฉด ์ด๋ฅผ ๋ฉ€๋ฆฌํ•  ๊ฒƒ์„ ์ด‰๊ตฌํ•ฉ๋‹ˆ๋‹ค.

2019๋…„ 10์›” 7์ผ ์˜คํ›„ 3์‹œ 33๋ถ„์— IRobL [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์•„, ๋‹น์‹ ์ด ์ €๋ฅผ ์œ„ํ•ด ์ด๊ฒƒ์„ ์ง€์ ํ•ด ์ฃผ์…”์„œ ์™œ ๊ทธ ํŠธ๋ฆญ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”์ง€ ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์˜ค๋ฒ„ํ—ค๋“œ ์กฐ๊ฐ์œผ๋กœ helm ๋„๊ตฌ๋ฅผ ๊ฐ์‹ธ๋Š” ๊ฒƒ์ด ํŽธํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ Helm 2.x๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ž˜ ์ž‘๋™ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ํŠธ๋ฆญ์ž…๋‹ˆ๋‹ค.

์•ฑ_๋ฒ„์ „=0.0.7
sed -i.bak "s/^a ppVersion:. *\\$/appVersion: $APP_VERSION/" helm/Chart.yaml
helm ์„ค์น˜ --name helm_demo helm/
โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ๋ณด๊ฑฐ๋‚˜ ์Šค๋ ˆ๋“œ๋ฅผ ์Œ์†Œ๊ฑฐํ•˜์„ธ์š”.

@jrkarnes , ๋‚˜์œ ์Šต๊ด€์ด๋ผ๊ณ  ํ•˜๋ฉด helm ๋ช…๋ น์„ ์Šคํฌ๋ฆฝํŒ…์œผ๋กœ ๊ฐ์‹ธ์•ผ ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š๋‹ค๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”? ๊ทธ๋ ‡๋‹ค๋ฉด ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. --app-version ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•œ๋‹ค๋Š” ๋ง์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์กฐํƒ€ ์žฅ์น˜์— ๋งค์šฐ ํŽธ๋ฆฌํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ์ด PR์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ๋ฐฐํฌ๋˜๋Š” ์‹ค์ œ ๋นŒ๋“œ์™€ appVersion ๋ณ€์ˆ˜๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜๋ ค๋Š” helm์„ ์‚ฌ์šฉํ•˜๋Š” ์œ ์ผํ•œ ์‚ฌ๋žŒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ๋นŒ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ํ•จ๊ป˜ ๋ž˜ํ•‘ํ•˜๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋Œ€๊ทœ๋ชจ ๊ธฐ์ˆ  ์กฐ์ง์˜ ์ผ๋ฐ˜์ ์ธ ๊ด€ํ–‰์ž…๋‹ˆ๋‹ค. ๋‚ด ์‚ฌ์šฉ์˜ ๊ฒฝ์šฐ, ํŒŒ์ดํ”„ ๋ผ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐœํ–‰์˜ ๊ณ ์ • ํ‘œ์‹œ๊ธฐ ์šฉ๊ธฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ , ๊ถ๊ทน์ ์œผ๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋นŒ๋“œ ํŒŒ์ดํ”„ ๋ผ์ธ์—์„œ ํˆฌ๊ตฌ๋ฅผ ํ†ตํ•ด ๊ทธ๋“ค์„ ๋ฐฐํฌ (์˜ˆ๋ฅผ ๋“ค์–ด, ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฒ„์ „ ๊ณ ๋ ค 1.0.1-pr-3.1 ์˜ ์„ธ ๋ฒˆ์งธ PR์˜ ์ฒซ ๋ฒˆ์งธ ๋นŒ๋“œ๋ฅผ ๋ฒ„์ „ 1.0.1์˜ ์‹œํ—˜ํŒ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์•ฑ).

์ด ๋ฌธ์ œ๊ฐ€ ์šฐ๋ฆฌ ํšŒ์‚ฌ์˜ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ํ•ด๊ฒฐ๋œ ํ›„์—๋„ --app-version ์Šค์œ„์น˜๊ฐ€ Helm์— ๋‚ด์žฅ๋˜์–ด ์žˆ์œผ๋ฉด ํ™•์‹คํžˆ ๋” ํŽธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐฐํฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋” ์œ ์—ฐํ•œ ๋ฐฉ๋ฒ•์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ๋‚ด ๋ง์€, ์‹ค์ˆ˜๋กœ ์ˆซ์ž๋ฅผ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๋นŒ๋“œ ํ”Œ๋žซํผ์—์„œ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์™œ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์ด๋‚˜ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์ฐจํŠธ ํŒŒ์ผ๋กœ ์ด๋™ํ•˜์—ฌ ๋ชจ๋“  ๋ฐฐํฌ ์ „์— yaml์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋‚ด ๊ด€์ ์—์„œ ๋ณด๋ฉด appVersion ๊ธฐ๋Šฅ์€ ์šฐ๋ฆฌ ์กฐ์ง์—์„œ ์™„์ „ํžˆ ํฌ๊ธฐํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ "์—‰์„ฑํ•œ" sed ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ํŒŒ์ดํ”„๋ผ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ณต์œ ํ•  ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ.

@IRobL
์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ์ž์ฒด ์ถ”์ƒํ™” ์ˆ˜์ค€์—์„œ ์ž๊ธ‰์ž์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ถฉ๋ถ„ํ•œ API๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ถ”์ƒํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํˆฌ๊ตฌ๋„ ์˜ˆ์™ธ๋Š” ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž‘๋™ ๋ฐฉ์‹์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋จผ์ € ์งˆ๋ฌธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„ํ‚คํ…์ฒ˜, ๋””์ž์ธ ์›์น™๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ๋†“์นœ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด PR์ด ๊ทธ๋ ‡๊ฒŒ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ์ด์œ ์ž…๋‹ˆ๋‹ค. ์ˆ˜์ •์€ ๋ถ„๋ช…ํ•˜์ง€๋งŒ Helm ๋””์ž์ธ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ž„์‹œ ์†”๋ฃจ์…˜์ด ๊ฑฐ์˜ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ app-version ํ”Œ๋ž˜๊ทธ์— ๋Œ€ํ•ด ์˜ณ์Šต๋‹ˆ๋‹ค. ์ œ๊ณตํ•ด์•ผ ํ•˜๋ฉฐ Helm์€ ๋ชจ๋“  ๊ฒƒ์„ ์ž์ฒด์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์งˆ๋ฌธํ•ด๋„ ๋ ๊นŒ์š”? ์ œํ’ˆ์—์„œ Helm์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•ฉ๋‹ˆ๊นŒ? helm install ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ? ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ? helm package ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

์–ด์ œ ๋ฐค์— helm package ๋‹ค์‹œ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ •๋ง๋กœ ํŒ”๋ฆฌ์ง€ ์•Š์•˜๋‹ค. sed ์€ ๋งค์šฐ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์–ด ์™”์œผ๋ฉฐ ๋งค์šฐ ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  tiller / package / install ํ•˜์œ„ ๋ช…๋ น์€ ์ƒ๋Œ€์ ์œผ๋กœ ์ƒˆ๋กญ๊ณ  ๋œ ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค. ๋‚ด ์š”์ ์„ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๋‹ฌ ์ „์— ๋‚˜๋Š” Tiller์˜ ํ•„์š”์„ฑ์„ ์šฐํšŒํ•˜๋Š” ๋ˆ„๊ตฐ๊ฐ€์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ณด์•˜์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  "๋ถ„๋ช…ํžˆ Tiller๊ฐ€ ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค"๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋œ ์ฃผ๋ฅ˜๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•˜์ง€๋งŒ ๊ทธ ์ดํ›„๋กœ ์Šค์Šค๋กœ๋ฅผ ๊ฑท์–ด์ฐจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ฏฟ์—ˆ๋”๋ผ๋ฉด ์ง€๊ธˆ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋‚˜์€ ์œ„์น˜์— ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Helm์˜ ์œ ์ง€ ๊ด€๋ฆฌ์ž๋Š” ์œ ์ง€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๋””์ž์ธ์ด๋ฉฐ ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฐ„๋‹จํ•œ sed ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด helm package ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ œ ์‹ค์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  package ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‚˜๋Š” helm package ์˜ ์ „์ฒด ๊ฐœ๋…์ด ์›น 2.0/๋ฒ„์ „ ์ œ์–ด ๋ฆด๋ฆฌ์Šค์˜ ์š”์ ์„ ๋†“์น˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๋‚๋‹ˆ๋‹ค. ํ˜„๋Œ€ ๊ธฐ์ˆ  ๊ทธ๋ฃน์ด ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํƒœ๊น…์˜ ํž˜์„ ํ™œ์šฉํ•˜๊ณ  ์žˆ์„ ๋•Œ ์ฒ˜์Œ์—๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ zip์œผ๋กœ ํŒจํ‚ค์ง•ํ•จ์œผ๋กœ์จ ๊ทธ๋Ÿฌ๋‚˜ ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ๊ฐ์‚ฌ ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ.

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

@IRobL

๋‚˜์œ ์Šต๊ด€์ด๋ผ๊ณ  ํ•˜๋ฉด helm ๋ช…๋ น์„ ์Šคํฌ๋ฆฝํŒ…์œผ๋กœ ๊ฐ์‹ธ์•ผ ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š๋‹ค๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”?

์˜ˆ. ์ด๊ฒƒ์€ ์ •ํ™•ํ•˜๊ฒŒ.

๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ํŒŒ์ดํ”„๋ผ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๊ฒŒ์‹œํ•˜๊ณ  ๊ถ๊ทน์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ helm์„ ํ†ตํ•ด ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ์ผ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํšŒ์‚ฌ์˜ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ํ›„์—๋„ Helm์— --app-version ์Šค์œ„์น˜๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์œผ๋ฉด ํ™•์‹คํžˆ ๋” ํŽธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€ appVersion ๊ฐ€ Chart.yaml ํŒŒ์ผ์˜ ์†์„ฑ์ด ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์•„๋งˆ๋„ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š๋‹ค๊ณ  ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ’์„ ์ฆ‰์„์—์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ "๋ถˆ๋ณ€ ๊ฐ’ ์ง‘ํ•ฉ"์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด์ „ ์˜๊ฒฌ์—์„œ ๊ฐ™์€ ๊ฒƒ์„ ์˜นํ˜ธํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ชจ๋“ tiler/package/install ํ•˜์œ„ ๋ช…๋ น์€ ๋น„๊ต์  ์ƒˆ๋กญ๊ณ  ๋œ ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.

FWIW, Tiller ๋Š” Helm 3์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋‚˜์ค‘์— ๋‹น์‹ ์˜ ํฌ์ŠคํŠธ์—์„œ ์ด๊ฒƒ์„ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ "kubernetes ๋ฐ”์ด๋„ˆ๋ฆฌ"๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ Tiller ๋กœ ๋ฐฐ์†กํ•˜๋Š” helm package ๊ตฌ๋ฌธ์ด ์•„๋งˆ๋„ ๋‚˜์œ ์Šต๊ด€์ผ ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฐ„๋‹จํ•œ sed ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด helm ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋‚ด ์‹ค์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ํŒจํ‚ค์ง€์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

์•„๋งˆ๋„ ์‚ฌ๋žŒ๋“ค์ด "๋‚˜๋Š” mysql์„ kubernetes์— ์„ค์น˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์ผ๋ฐ˜์ ์ด์—ˆ๊ณ  helm์€ kubernetes์— ๋Œ€ํ•ด ๊ฑฐ์˜ ์•Œ์ง€ ๋ชปํ•˜๊ณ  ๊ทธ๋ƒฅ ๊ฐ€์ง€๊ณ  ๋…ธ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด (์ƒ๋Œ€์ ์œผ๋กœ) ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ helm package ๋Š” ๊ถ๊ทน์ ์œผ๋กœ _๊ทธ ์ฒญ์ค‘_์ด ์†Œ๋น„ํ•˜๋„๋ก ์˜๋„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” ํŒ€(๋‚ด ์ƒ๊ฐ์—)์ด ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ฑฐ๋‚˜ ์›๋ž˜๋Œ€๋กœ ์‚ฌ์šฉํ•  ์˜๋„๊ฐ€ ์ „ํ˜€ ์—†์—ˆ๋˜ ์˜์—ญ์—์„œ ํ›จ์”ฌ ๋” ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์‚ฌ์šฉ๋ฒ•์€ ๊ฐ€์žฅ ์ž˜ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ณ  ์ ์ ˆํ•œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋„๊ตฌ(์˜ˆ: sed)๋กœ ์ „ํ™˜ํ•˜๋Š” ์œ ๋‹‰์Šค ์ฒ ํ•™์„ ๋” ๋ฐ€์ ‘ํ•˜๊ฒŒ ๋”ฐ๋ฅธ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ awk ์ฒ˜๋Ÿผ Helm์„ kubectl apply -f ๋‹ค์Œ์— ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ธ์  ์˜ค๋ฅ˜๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ž๋™ํ™”๋œ ๋„๊ตฌ๊ฐ€ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ๊ณผ ๋‚˜๋Š” ๊ฐ™์€ ๊ฐ€์น˜๊ด€์„ ๋งŽ์ด ๊ฐ–๊ณ  ์žˆ๊ณ  ๋น„์Šทํ•œ ์ผ์„ ๋งŽ์ด ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@IRobL

๊ฒฝ์šด๊ธฐ

์ €์—๊ฒŒ tiller ๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋…ธ์ถœ ์ง€์ ์ด ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€๋˜๊ณ  ๋ณด์•ˆ ์œ„ํ—˜์ด ์ถ”๊ฐ€๋˜๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‹ค๋ฅธ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ yaml ํŒŒ์ผ์„ ์ ์šฉํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. Tiller๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์šฉํ•˜๋Š” Helm ํŒจํ‚ค์ง€๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์ •๋ ฌํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ ์œ„ํ—˜์ด ๋„ˆ๋ฌด ๋งŽ๊ณ  ์ถ”๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด(๋ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Helm 3rd์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฐ„๋‹จํ•œ sed ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด helm ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋‚ด ์‹ค์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์š”์ ์„ ๋†“์น˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ๋‹ค์‹œ ์‹œ๋„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. sed ๋Š” ๋ฌด์—‡์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๊นŒ? ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€ํ™˜ ๋ฌธ์ œ๋ฅผ ์ถ”์ƒํ™”ํ•˜์—ฌ ์ฃผ์–ด์ง„ ์ž…๋ ฅ์— ๋Œ€ํ•œ API์™€ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

sed ๋ช…๋ น์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“  ๊ฒฝ์šฐ(์ฆ‰, ์ •๊ทœ์‹์— ์‹ค์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ)? ๊ทธ๋ž˜์„œ ๋‹น์‹ ์€ ๊ฒฐ๋ก ์„ ๋‚ด๋ ธ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. sed ๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ํŽ„ ์Šคํฌ๋ฆฝํŠธ๋กœ ํŒŒ์ดํ”„๋ฅผ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  ์†”๋ฃจ์…˜์ด ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. API๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์ž…๋ ฅ์„ ๋ฐ›๊ณ , ์ถœ๋ ฅ์„ ์ œ๊ณตํ•ด์•ผ ํ•˜๋ฉฐ, ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ์ถ”์ƒํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ ๋‹‰์Šค ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.

Helm์— ํˆฌ์˜ํ•˜์—ฌ ๋ฆด๋ฆฌ์Šค ๋ฒ„์ „์„ ์ง€์ •ํ•˜๊ณ  K8์— ํ‘ธ์‹œํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋ฅผ ๊ด€์ฐฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฒ„์ „์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Helm์€ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜๊ณ  ๋นŒ๋“œ ์ž‘๋™ ๋ฐฉ์‹์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ถ”๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋Œ€์‹  ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ?

@jrkarnes

์˜ˆ, ์šฐ๋ฆฌ ๋‘˜ ๋‹ค ๋น„์Šทํ•œ ๊ด€์‹ฌ์‚ฌ๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ์ฃผ๋„๊ถŒ์— ์ ‘๊ทผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. package ๋ช…๋ น์˜ ๋ฟŒ๋ฆฌ๊ฐ€ ํ‹ธ๋Ÿฌ๊ฐ€ ๋งŒ๋“  ์‹ค์ˆ˜์™€ ์–ฝํ˜€ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ „ํ˜€ ๊นจ๋‹ซ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ†ต์ฐฐ๋ ฅ์„ ์ €์™€ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๊ทธ๊ฒƒ์€ ์ด๋ฏธ ์ •์˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ์ด ๊ธฐ๋Šฅ์„ ๋ฐฉ๊ธˆ ์ถ”๊ฐ€๋˜์ง€ ์•Š๋Š” ์ด์œ ์˜ ์—ญ์‚ฌ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ์ด์œ ์— ๋‘ ๊ฐœ์˜ ์ธ์ˆ˜๋ฅผ ๋ณด์•˜๋‹ค, ์‚ฌ๋žŒ ์ด์—ˆ๋‹ค๋Š” ๊ฒƒ์„ package ๊ทธ๋“ค์€ ๋˜ํ•œ ์•ˆ install / upgrade ์—๋„ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ณต๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ธฐ์ˆ  ๋ถ€์ฑ„ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๊ธฐ์ˆ  ๋ถ€์ฑ„๊ฐ€ ์—†๋Š” ๊ณต๊ฐœ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด์œ ๋Š” Chart.yml ํŒŒ์ผ์ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ด๊ณ  ์—…๋ฐ์ดํŠธ๋˜์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์ด์ƒํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค... ์‚ฌ๋žŒ๋“ค์ด ์กฐํƒ€๋ ฅ ์ฐจํŠธ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ, ํ™•์‹คํžˆ ๊ทธ๋“ค์€ ์ƒํ™ฉ์ด ๋ณ€ํ•  ๋•Œ ์ˆ˜๋™์œผ๋กœ ๊ทธ ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•˜๋ฏ€๋กœ ๊ทธ ์ž์ฒด๊ฐ€ ๋ถˆ๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์กฐ์ ์œผ๋กœ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๋ฐฐํฌ ๊ฐœ์ฒด๋ฅผ ๋นŒ๋“œํ•  ๋•Œ helm ๋ฐ”์ด๋„ˆ๋ฆฌ์— ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ Chart.yml ํŒŒ์ผ์„ ๋ณด๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œ ํ”Œ๋žซํผ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ์ž‘์„ฑํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ ์ฝ”๋“œ๋Š” Jenkins๋ฅผ ์œ„ํ•ด ๊ธ€๋กœ๋ฒŒ ํŒŒ์ดํ”„๋ผ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@IRobL ํ•ต์‹ฌ ๋ฌธ์ œ๋Š” Helm์„ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณด๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ—ฌ๋ฆ„์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Helm์€ ์ถ”์ƒํ™” ๊ณ„์ธต์ž…๋‹ˆ๋‹ค. Helm์€ ๋ชจ๋“  ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๊ฐ€์ ธ์™€ ํ•˜๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„๋กœ K8์— ํ”Œ๋žซํผ์œผ๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Helm์€ ํฌ์žฅ์—…์ฒด์ž…๋‹ˆ๋‹ค. Helm์€ ๋ฐฐํฌ๊ฐ€ ์šฉ์ดํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„ํ‹ฐํŒฉํŠธ์—์„œ "์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ"์„ ์ƒ์„ฑํ•˜๋ฏ€๋กœ OS - K8์— "์„ค์น˜"ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

app-version ์—์„œ install ๊ธฐ์ˆ  ๋นš๊ณผ๋Š” ์•„๋ฌด ์ƒ๊ด€์ด ์—†์Šต๋‹ˆ๋‹ค. install ๋˜๋Š” upgrade ์„ ์›ํ•  ๋•Œ ์ „ํ˜€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Chart.yml ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ์ฐจํŠธ ๋ฒ„์ „์ด ํฌํ•จ๋œ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ํŒŒ์ผ์ด์ง€๋งŒ ์ฐจํŠธ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „ํ˜€ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋‹จ์ง€ ๊ทธ๊ฒƒ์„ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๊ด€์ ์—์„œ ์™œ package ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋„ˆ๋ฌด ๋ณต์žกํ•ด ๋ณด์ด์ฃ ?

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ฃจํ”„์—์„œ ์ž ์‹œ ๋ฒ—์–ด๋‚ฌ์ง€๋งŒ ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์š”์ ์ด ๋ช‡ ๋ฒˆ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

Helm์€ ํฌ์žฅ์—…์ฒด์ž…๋‹ˆ๋‹ค. Helm์€ ๋ฐฐํฌ๊ฐ€ ์šฉ์ดํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„ํ‹ฐํŒฉํŠธ์—์„œ "์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ"์„ ์ƒ์„ฑํ•˜๋ฏ€๋กœ OS - K8์— "์„ค์น˜"ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ Helm์€ _์–ด๋–ค ์‹์œผ๋กœ๋“ _ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "๋ฐ”์ด๋„ˆ๋ฆฌ"๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ".deb" ํŒŒ์ผ์ด๋‚˜ ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ธฐ๋ณธ๊ฐ’ ๋ฐ/๋˜๋Š” ์‚ฌ์ „ ์„ค์ • ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ์ผ๋ถ€ ํ…œํ”Œ๋ฆฟ ์•„์นด์ด๋ธŒ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ํ•ด๋‹น Helm ์ฐจํŠธ์— ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•จ๊ป˜ ํฌ์žฅ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ถˆ๋ณ€์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ Helm ์ฐจํŠธ๊ฐ€ Chart๋ฅผ ํ†ตํ•ด ๋ฐฐํฌํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ณด๋‹ค _lot_ ์ ๊ฒŒ ๋ณ€๊ฒฝ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ๊ณต์ •ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด --app-version ๊ฐ€ helm install ๋ฐ helm upgrade ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ทผ๋ณธ์ ์ธ ์ด์œ (์ ์–ด๋„ IMO)์ž…๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฐจํŠธ๋ฅผ ๋‹ค์‹œ ํŒจํ‚ค์ง€ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

์˜ˆ๋ฅผ ๋“ค์–ด Flux์™€ Helm Operator๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ์ด๋ฏธ์ง€ ํƒœ๊ทธ ๊ฐ’์„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐจํŠธ๋Š” ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๊ณ  ๋ฐฐํฌ ์ค‘์ธ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋งŒ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ๊ธฐ๋ณธ๊ฐ’ ๋ฐ/๋˜๋Š” ์‚ฌ์ „ ์„ค์ • ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ์ผ๋ถ€ ํ…œํ”Œ๋ฆฟ ์•„์นด์ด๋ธŒ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ deb ํŒŒ์ผ์€ ๊ตฌ์„ฑ ํŒŒ์ผ, ๋ช…๋ น, ๋งค๋‹ˆํŽ˜์ŠคํŠธ ๋ฐ/๋˜๋Š” ์‚ฌ์ „ ์„ค์ • ๊ฐ’์˜ ๋™์ผํ•œ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. MSI ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋™์ผํ•˜๊ฑฐ๋‚˜ ์  ํ†  ์ด๋จธ์ง• ํŒจํ‚ค์ง€ ์‹œ์Šคํ…œ์˜ ebuild์— ๋” ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Brew ํŒจํ‚ค์ง€์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

K8์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ Helm์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‹น์‹ ์ด ๋ณด๋Š” ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ถˆ๋ณ€์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์™œ ์•ˆ ๋ผ? ํŒจํ‚ค์ง€ ์ƒ์„ฑ ํ›„ ํŒจํ‚ค์ง€๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. install/upgrade ํ”„๋กœ์„ธ์Šค ์ค‘์— ์ถ”๊ฐ€ ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋ฉด ๋ชจ๋“  ํŒจํ‚ค์ง• ์‹œ์Šคํ…œ์—์„œ์™€ ๊ฐ™์ด ์˜๋„๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ๋ฒ„์ „ ์„ค๋ช…์œผ๋กœ Helm ์ฐจํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ GIT๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ํˆฌ๊ตฌ๊ฐ€ ํ•„์š”ํ• ๊นŒ์š”?

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ Helm ์ฐจํŠธ๊ฐ€ Chart๋ฅผ ํ†ตํ•ด ๋ฐฐํฌํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ณด๋‹ค ํ›จ์”ฌ ์ ๊ฒŒ ๋ณ€๊ฒฝ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ๊ณต์ •ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด helm ์„ค์น˜ ๋ฐ helm ์—…๊ทธ๋ ˆ์ด๋“œ์—์„œ --app-version์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ทผ๋ณธ์ ์ธ ์ด์œ (์ ์–ด๋„ IMO)์ž…๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฐจํŠธ๋ฅผ ๋‹ค์‹œ ํŒจํ‚ค์ง€ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด ๋””์ž์ธ์—์„œ appVersion์€ Helm ํŒจํ‚ค์ง€ ๋นŒ๋“œ์˜ ์†์„ฑ์œผ๋กœ ์ทจ๊ธ‰๋˜์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๊ฐ’์—์„œ ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Flux์™€ Helm Operator๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ์ด๋ฏธ์ง€ ํƒœ๊ทธ ๊ฐ’์„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐจํŠธ๋Š” ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๊ณ  ๋ฐฐํฌ ์ค‘์ธ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋งŒ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ์•ฑ ์ธํ”„๋ผ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์™€ ์•ฑ ๋ฒ„์ „์˜ ๊ฒฐํ•ฉ์ด ๋Š์Šจํ•ด์ง‘๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์ƒˆ ์กฐํƒ€ ์žฅ์น˜ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—(Flux ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์ˆ˜์ •ํ•˜์‹ญ์‹œ์˜ค). ์ด ๊ฒฝ์šฐ Helm์„ ๊ตฌ์„ฑ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ --app-version ๊ฐ€ ์ „ํ˜€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ deb ํŒŒ์ผ์€ ๊ตฌ์„ฑ ํŒŒ์ผ, ๋ช…๋ น, ๋งค๋‹ˆํŽ˜์ŠคํŠธ ๋ฐ/๋˜๋Š” ์‚ฌ์ „ ์„ค์ • ๊ฐ’์˜ ๋™์ผํ•œ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. MSI ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋™์ผํ•˜๊ฑฐ๋‚˜ ์  ํ†  ์ด๋จธ์ง• ํŒจํ‚ค์ง€ ์‹œ์Šคํ…œ์˜ ebuild์— ๋” ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Brew ํŒจํ‚ค์ง€์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

.deb ๋ฐ .msi ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์„ค๋ช…์—๋Š” ํ•˜๋‚˜์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. .deb ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด๋ฉด ๋นŒ๋“œ๋œ ์†Œํ”„ํŠธ์›จ์–ด - ์„ค์น˜๋  _THE_ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋งํ•ด์„œ(ํ•ญ์ƒ .deb ?์˜ ๊ฒฝ์šฐ) ๋ฐฐํฌ๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ณธ์งˆ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ํŒจํ‚ค์ง€์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค(brew์˜ ๊ฒฝ์šฐ ์•„๋‹˜).

์–‘์กฐ ํŒจํ‚ค์ง€๋Š” ๋‹ค๋ฅด๋ฉฐ ์‹ค์ œ๋กœ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋น„๊ตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Brew๋Š” ์„ค์น˜ ๋ฐฉ๋ฒ•๊ณผ ์†Œ์Šค/ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ์œ„์น˜์— ๋Œ€ํ•œ ์ง€์นจ์ผ ๋ฟ์ด๋ฏ€๋กœ ์‹ค์ œ๋กœ ํ˜„์žฌ Helm๊ณผ ํ›จ์”ฌ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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

์˜ˆ๋ฅผ ๋“ค์–ด ์•ˆ์ •์ ์ธ ์ฐจํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ’์„ ํ†ตํ•ด ์‚ฌ์šฉ ์ค‘์ธ ์ด๋ฏธ์ง€๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ช‡ ๊ฐœ๋‚˜ ๋ ๊นŒ์š”? (๋งŽ์ด_)

K8์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ Helm์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‹น์‹ ์ด ๋ณด๋Š” ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ํ…œํ”Œ๋ฆฟํ™”ํ•˜๊ณ  ์‰ฝ๊ฒŒ ๋ฐฐํฌ ๋ฐ ์„ค์น˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์€ Helm์ด ๋‹ค๋ฃจ๋Š” ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์ด ์ œ ์š”์ ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ํ•ด๋‹น ๋งค๋‹ˆํŽ˜์ŠคํŠธ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ์–ด๋–ค ์ด์œ ๋กœ๋“  ํ•ด๋‹น ๋งค๋‹ˆํŽ˜์ŠคํŠธ์— ๋Œ€ํ•œ ํ…œํ”Œ๋ฆฟ์ด ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ Helm ์ฐจํŠธ๋ฅผ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ณด๋Š” ์ฃผ์š” ํ•ฉ๋ณ‘์ฆ์€ 2๊ฐ€์ง€ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ํƒ€์‚ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ.
  • ์ž์‚ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ.

ํƒ€์‚ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ Helm ์†Œ๋น„์ž๋กœ์„œ ๊ฐ ์ƒˆ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ Helm ์ฐจํŠธ๊ฐ€ ๋ฆด๋ฆฌ์Šค๋˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•œ ๊ฐ€์ง€ ์ฃผ์š” ์ฐจ์ด์ ์€ ๋ฆด๋ฆฌ์Šค ๋นˆ๋„์ž…๋‹ˆ๋‹ค. MySQL ๋˜๋Š” ๋ฌด์—‡์ด๋“  ๊ฐ„์— ํƒ€์‚ฌ Helm ์ฐจํŠธ๋Š” ํ•˜๋ฃจ์— ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์‹ค์ˆ˜๋กœ ์ƒˆ ๋ฒ„์ „์˜ ์†Œํ”„ํŠธ์›จ์–ด์™€ ํ•จ๊ป˜ ์ด์ „ ๋ฒ„์ „์˜ ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š์€ ์†Œํ”„ํŠธ์›จ์–ด์™€ ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ›จ์”ฌ ์‰ฝ๊ฒŒ ์‹ค์ˆ˜๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์‚ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํด๋ž˜์Šค๋ฅผ ๋ฐฐํฌํ•˜๋Š” ํ‘œ์ค€ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Icelolly์—์„œ๋Š” ๊ฑฐ์˜ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ Go ์„œ๋น„์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์‹ค์ œ๋กœ Kubernetes์— ๋ฐฐํฌ๋œ ๋ชจ๋“  Go ์„œ๋น„์Šค์— ๋Œ€ํ•ด ๋‹จ์ผ ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํ˜„์žฌ helm package ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์‚ฌ์šฉ). ์ž์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์ฐจํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. SemVer๋กœ ์ฐจํŠธ์˜ ๋ฒ„์ „์„ ์ง€์ •ํ•˜๋ฏ€๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๊นŒ์ง€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ์ด ๋ฉ”๋ชจ์—; go-service ์ฐจํŠธ๋Š” ์•ฝ ํ•œ ๋‹ฌ ์ „์— ๋งˆ์ง€๋ง‰์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ธฐ๊ฐ„ ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ์ฐจํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ˆ˜์‹ญ์—์„œ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋‹จ์ˆœํ•จ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ์ œ์–ด ๋ฐ ๊ด€๋ฆฌ ์šฉ์ด์„ฑ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ์•ฑ ์ธํ”„๋ผ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์™€ ์•ฑ ๋ฒ„์ „์˜ ๊ฒฐํ•ฉ์ด ๋Š์Šจํ•ด์ง‘๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์ƒˆ ์กฐํƒ€ ์žฅ์น˜ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—(Flux ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์ˆ˜์ •ํ•˜์‹ญ์‹œ์˜ค). ์ด ๊ฒฝ์šฐ Helm์„ ๊ตฌ์„ฑ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ --app-version์ด ์ „ํ˜€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Flux๋Š” ์‹ค์ œ๋กœ ์ฐจํŠธ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ ๋‹ค์Œ ์ƒˆ ์ด๋ฏธ์ง€ ๊ฐ’์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ธํ”„๋ผ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์™€ ์•ฑ ๋ฒ„์ „์˜ ๊ฒฐํ•ฉ์„ ์žƒ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์š”์ ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ฃผ์žฅํ•˜๋Š” ์š”์ ์€ ์ผ๋ถ€ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ์‹ค์ œ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” --app-version ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ทธ๋ ‡๋‹ค๋ฉด Flux๊ฐ€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์— ์‹ค์ œ๋กœ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

helm list ๋Š” ์œ ์šฉํ•œ ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์ด ๋ฐฐํฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ์™€ ํˆฌ๊ตฌ๋ฅผ ํ†ตํ•ด ์„ค์น˜ ์šฐ๋ฆฌ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ helm package ์šฐ๋ฆฌ๋Š” (๋ฅผ ํ†ตํ•ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฒ„์ „ ์„ค์ • ๋ฐฉ๋ฒ• --app-version ์— helm package ) ์ •๋„์˜ ์ถœ๋ ฅ ๊ฒƒ์„ helm list ์žˆ๋‹ค ์œ ์šฉํ•œ. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— helm install|upgrade ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋” ๊ฐ„๋‹จํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์ฐจํŠธ๋ฅผ ๊ฐ€์ ธ์™€ ๋‹ค์‹œ ํŒจํ‚ค์ง•ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค, helm list ๋ฐ ๋กค๋ฐฑ ์ฒ˜๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ž์‚ฌ ์†Œํ”„ํŠธ์›จ์–ด์— ๋Œ€ํ•ด Helm์„ ์‚ฌ์šฉํ•˜๋Š” ์œ ์ผํ•œ ์ด์œ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์žˆ๋Š” .deb ๋ฐ .msi ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์—๋Š” ํ•˜๋‚˜์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ˆ„๋ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

"์„ค์น˜"๋Š” ๋Œ€์ƒ ํ”Œ๋žซํผ์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ(ํด๋”, ๊ตฌ์„ฑ, ๋ฐ”์ด๋„ˆ๋ฆฌ, db ๊ฐ€์ ธ์˜ค๊ธฐ, ๋ฐ์ดํ„ฐ ์ƒˆ๋กœ ๊ณ ์นจ/์ด์ „)์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

deb๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Helm ํŒจํ‚ค์ง€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. Helm ํŒจํ‚ค์ง€๊ฐ€ "์‹ค์ œ๋กœ ์„ค์น˜"๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์€ ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

.deb ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด๋ฉด ๋นŒ๋“œ๋œ ์†Œํ”„ํŠธ์›จ์–ด, ์ฆ‰ ์„ค์น˜๋  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Brew๋Š” ์„ค์น˜ ๋ฐฉ๋ฒ•๊ณผ ์†Œ์Šค/ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ์œ„์น˜์— ๋Œ€ํ•œ ์ง€์นจ์ผ ๋ฟ์ด๋ฏ€๋กœ ์‹ค์ œ๋กœ ํ˜„์žฌ Helm๊ณผ ํ›จ์”ฌ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ •ํ™•ํžˆ. Brew๊ฐ€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์„ค๋“ํ•˜๋ ค๋Š” ๊ฑด๊ฐ€์š”?

์—ฌ๊ธฐ์—์„œ ์ ˆ๋Œ€์ ์œผ๋กœ ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. Helm ์ฐจํŠธ _๋ณธ์งˆ์ ์œผ๋กœ ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ...
๊ฐ’์„ ํ†ตํ•ด ์‚ฌ์šฉ ์ค‘์ธ ์ด๋ฏธ์ง€๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ช‡ ๊ฐœ๋‚˜ ๋ ๊นŒ์š”? (๋งŽ์ด)

๋„ˆ๊ฐ€ ํ™•์‹คํžˆ ๋งž์•„. Helm์€ k8s ํ…œํ”Œ๋ฆฟ์„ ์œ„ํ•œ ํŽธ๋ฆฌํ•œ ํ…œํ”Œ๋ฆฟ ์—”์ง„์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋Ÿฌํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์กด์žฌ์— ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ๋„์›€์ด ๋˜์ง€๋งŒ ํ˜„๋Œ€์˜ ์ „๋‹ฌ ๋ฐฉ์‹์„ ๋ฐ”๊พธ์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

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

๋‚ด๊ฐ€ ์ฃผ์žฅํ•˜๋Š” ์š”์ ์€ ์ผ๋ถ€ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ์‹ค์ œ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋„ค, ์ด๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์ œํ’ˆ์—๋‚˜ ๋ฐ”๋žŒ์งํ•œ๊ฐ€?

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

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

์˜ˆ์ „์—๋Š” ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๋ช…ํ™•ํ•œ ์ „๋‹ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. FTP๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋งŒ ์—…๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡์ด ์ข‹์€์ง€, ์™œ ์ข‹์€์ง€, ๋ˆ„๊ฐ€ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Helm์ด ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋งŒ์กฑํ• ์ง€ ํ™•์‹ ์ด ์„œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

ํƒ€์‚ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ.

Helm ์ฐจํŠธ๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  PSQL/MySQL ๋ฒ„์ „์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ์ดˆ๋ณด์ž์—๊ฒŒ ์ธํ”„๋ผ๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฐจํŠธ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ๋ฐ›๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ์— ๋Œ€ํ•ด ๊ฐ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•ด ๋งŽ์€ tar.gz ํŒŒ์ผ์ด ์žˆ์ง€๋งŒ Helm ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด ๋™์ผํ•œ tar.gz ํŒŒ์ผ ์„ธํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@iorlas ๋ฐฉ๊ธˆ ์ด ๊ธ€๊ณผ ๊ฑฐ๋ถ€๋œ PR์„ ์ฝ์—ˆ์œผ๋ฉฐ ์•„์ฃผ ์ข‹์€ ์ง€์ ์„ ํ•˜์…จ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋‚ด๊ฐ€ ๋‚ด ๋นŒ๋“œ/๋ฆด๋ฆฌ์Šค์˜ ๋˜ ๋‹ค๋ฅธ ์•„ํ‹ฐํŒฉํŠธ๋กœ์„œ ๋‚ด ํˆฌ๊ตฌ ์ฐจํŠธ๋ฅผ ํŒจํ‚ค์ง•ํ•˜๊ธฐ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ™•์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” helm์— ํŒจํ‚ค์ง€ ๋ช…๋ น์ด ์žˆ๋Š”์ง€์กฐ์ฐจ ๋ชฐ๋ž์œผ๋ฉฐ ํ˜ผ์ž๊ฐ€ ์•„๋‹ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์•„๋งˆ๋„ ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ฐจํŠธ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์„œ์—์„œ๋Š” ๊ฐœ๋…์„ ์‹ค์ œ๋กœ ํŒ๋งคํ•˜๊ฑฐ๋‚˜ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.

package ๋ช…๋ น์€ ๋ถ„๋ช…ํžˆ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์ง€๋งŒ ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ ์—๋Š” ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋งค์šฐ ์ผ๋ฐ˜์ ์ธ ์–ธ๊ธ‰ ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ํŒจํ‚ค์ง€๋ผ๋Š” ๋‹จ์–ด๋Š” ๋น ๋ฅธ ์‹œ์ž‘์— ๋งŽ์ด ํ‘œ์‹œ๋˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ Helm ๋ฐ ๋‹ค๋ฅธ OS ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. . ํฌ์žฅ๋„ ๋ชจ๋ฒ” ์‚ฌ๋ก€์—์„œ ์–ธ๊ธ‰๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ํฌ์žฅ์ด ๋ฌด์—‡์ธ์ง€, ์™œ ์œ ์šฉํ•œ์ง€ ์บก์ฒ˜ํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ฐจํŠธ๋ฅผ ํŒจํ‚ค์ง€ํ™”ํ•˜๋„๋ก ์ œ์•ˆํ•˜๋Š” ๋ฐ ์Šฌ๋ฆผํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” v3 ๋ฌธ์„œ ๋„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋‚˜๋Š” PR์„ ์ œ์ถœํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ ๋ญ”๊ฐ€์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ์ง€ ์•Š์ง€๋งŒ 3.0 ๋ฌธ์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@jonstelly ๋ฌธ์„œ์—๋Š” ํ™•์‹คํžˆ ๊ณต๋ฐฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋„ ์ฒ˜์Œ์—๋Š” --app-version ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋‚˜์ค‘์—๋Š” ์ด์œ  ์—†์ด ๋ˆ„๋ฝ๋œ ์ƒํƒœ๋กœ ๋‘˜ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œ์—๋Š” ํ™•์‹คํžˆ ๋ช‡ ๊ฐ€์ง€ ์„ค๋ช…๊ณผ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ ์†Œ๊ฐœ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Helm ๊ฐœ๋ฐœ ์ฃผ๊ธฐ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŒ€์€ 3์ฐจ ๋ฒ„์ „์œผ๋กœ ๋ฐ”์˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋„ ์ง€๊ธˆ ๋„ˆ๋ฌด ๋ฐ”์ฉ๋‹ˆ๋‹ค :(

"์„ค์น˜"๋Š” ๋Œ€์ƒ ํ”Œ๋žซํผ์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ(ํด๋”, ๊ตฌ์„ฑ, ๋ฐ”์ด๋„ˆ๋ฆฌ, db ๊ฐ€์ ธ์˜ค๊ธฐ, ๋ฐ์ดํ„ฐ ์ƒˆ๋กœ ๊ณ ์นจ/์ด์ „)์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

deb๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Helm ํŒจํ‚ค์ง€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. Helm ํŒจํ‚ค์ง€๊ฐ€ "์‹ค์ œ๋กœ ์„ค์น˜"๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์€ ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

Helm Chart ์ž์ฒด๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. Helm Chart์—๋Š” ๋ฐฐํฌํ•˜๋Š” ์‹ค์ œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Docker ์ด๋ฏธ์ง€๋Š” Helm ์ฐจํŠธ์— ํŒจํ‚ค์ง•๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Kubernetes๊ฐ€ ์™ธ๋ถ€ ์†Œ์Šค์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

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

๋‚ด๊ฐ€ ์•„๋Š” ํ•œ, ์‹ค์ œ๋กœ ๋‹น์‹ ์€ ์—ฌ๊ธฐ์—์„œ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค. .deb ํŒŒ์ผ์€ AR ์•„์นด์ด๋ธŒ์ž…๋‹ˆ๋‹ค. ์••์ถ•์„ ํ’€๊ณ  ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ถ๊ทน์ ์œผ๋กœ ์ผ๋ถ€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์™€ ์ผ๋ถ€ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. .deb ํŒŒ์ผ์€ ์ด๋ก ์ ์œผ๋กœ ํŒจ์น˜๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ข…์ข… ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .deb ํŒŒ์ผ์— ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ์†Œํ”„ํŠธ์›จ์–ด ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ .deb ํŒŒ์ผ์— ์˜ํ•ด ์„ค์น˜๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

์ •ํ™•ํžˆ. Brew๊ฐ€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์„ค๋“ํ•˜๋ ค๋Š” ๊ฑด๊ฐ€์š”?

์•„๋‹ˆ์š”. ๋‚ด๊ฐ€ ๋งํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์€ Helm๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Brew๋ฅผ ํ†ตํ•ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฐ”๋กœ ์Šคํฌ๋ฆฝํŠธ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ณ„๋„๋กœ ๋นŒ๋“œ, ํŒจํ‚ค์ง€ ๋ฐ ๋ฐฐํฌ๋˜๋ฉฐ ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด Helm์„ Kubernetes ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋กœ ๋งŒ๋“ค์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ Brew๋ฅผ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋กœ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ด ๋ฌธ์ œ์˜ ์š”์ ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Helm์ด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ธ์ง€ ์•„๋‹Œ์ง€์— ๋Œ€ํ•ด ํ† ๋ก ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ --app-version ํ”Œ๋ž˜๊ทธ๋ฅผ helm install|upgrade ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค

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

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ ๋ง์”€์ด์‹ ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌ์‹/๋ณต์žก/๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

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

์ด๋ฏธ ์•Œ๊ณ  ๊ณ„์‹œ๊ฒ ์ง€๋งŒ FTP๋ฅผ ํ†ตํ•ด ์ด์ „ ์—…๋กœ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค _๋งŽ์€_ ํ˜œํƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

Docker ์ด๋ฏธ์ง€๋Š” Helm ์ฐจํŠธ๋กœ ํŒจํ‚ค์ง•๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค ๊ทธ๋ ‡๊ฒŒ ๋์œผ๋ฉด ์ข‹๊ฒ ์–ด์š”. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด ๋น„์ „์€ K8์ด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•œ API๋กœ Helm์„ ํ†ตํ•ฉํ•˜๋Š” ํ”Œ๋žซํผ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. deb ํŒŒ์ผ์˜ ๋‹จ์ˆœ์„ฑ์œผ๋กœ ๋Œ์•„๊ฐ€์ง€๋งŒ ์ ์ ˆํ•œ ๊ฒฉ๋ฆฌ ๋ฐ k8 ๋ฆฌ์†Œ์Šค๋ฅผ ์ผ๊ธ‰ ์‹œ๋ฏผ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

.deb ํŒŒ์ผ์€ AR ์•„์นด์ด๋ธŒ์ž…๋‹ˆ๋‹ค.
์ถ”์ถœํ•˜์—ฌ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ถ๊ทน์ ์œผ๋กœ ์ผ๋ถ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ผ๋ถ€ ํŒŒ์ผ

๋งˆ์น˜.... ํˆฌ๊ตฌ ํŒจํ‚ค์ง€!

๋‹ค์Œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ... a .deb๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ .deb๊ฐ€ .deb ํŒŒ์ผ์„ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์˜ ์ผ๋ถ€๋กœ ์„ค์น˜ํ•  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ...

์˜ˆ, ๋‚ด๋ถ€์— ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋Š” ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์žฌ๋ฏธ์žˆ์ง€, ๊ทธ๋ ‡์ง€? ์•ฑ ์ธ์Šคํ„ด์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์ถฉ๋ถ„ ํ•˜๋‹ค๋ฉด ๊ฐ€๋Šฅํ•œ ํ•œ ํ•˜๋‚˜์˜ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์‚ฌ์šฉ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด, ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ์ง„์‹ค์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋•Œ๋กœ๋Š” ์—ฌ๋Ÿฌ ์ถœ์ฒ˜๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • Brew์—๋Š” ํŒจํ‚ค์ง€๋กœ YAML์ด ์žˆ์ง€๋งŒ ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • Emerge(gentoo)๋Š” ์ •์˜๋กœ ebuild๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, git ํด๋ก ๋„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

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

ํ•˜์ง€๋งŒ ์š”์ ์„ ๋†“์น˜์ง€ ๋งˆ์„ธ์š”. ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ! ๋‚ด๋ถ€์— ์ฐธ์กฐ๋งŒ ์žˆ๋Š” ๋นˆ ํŒจํ‚ค์ง€๋„ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ์„ค์น˜๊ธฐ์‚ฌ๋‹˜, ๋‹ค๋ฅธ ์šฉ์–ด๋ฅผ ๋ฐ›์•„๋“ค์ด์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

Helm๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Brew๋ฅผ ํ†ตํ•ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” ์Šคํฌ๋ฆฝํŠธ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ณ„๋„๋กœ ๋นŒ๋“œ, ํŒจํ‚ค์ง€ํ™” ๋ฐ ๋ฐฐํฌ๋˜๋ฉฐ ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋™์ผํ•œ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด helm install|upgrade์— --app-version ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ์—ด์‡ ์•ผ. ํ•˜์ง€๋งŒ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ์งˆ๋ฌธ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ๋„ค
  • ํ•˜๋Š” ๊ฒƒ์ด ์˜ณ์€ ์ผ์ž…๋‹ˆ๊นŒ? ๋„ค? ์•„๋‹ˆ?

ppl์ด ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์ด ์ข‹์€ ์ผ์ด๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ? ์ง„์ „์„ ์ด๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์— ์˜๋ฌธ์„ ์ œ๊ธฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ ๋ง์”€์ด์‹ ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌ์‹/๋ณต์žก/๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Brew๋Š” Helm์— ์ •๋ง ๊ฐ€๊น๊ณ  ์ด๋ฏธ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Brew์— ํ”„๋กœ์ ํŠธ๋ฅผ ๋งก๊ธฐ์‹ญ์‹œ์˜ค. Gentroo Ebuilds ๋˜๋Š” deb์— ํˆฌ์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

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

๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ง์”€๋“œ๋ฆฌ์ง€๋งŒ ์ฐจ์ด์ ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ท€ํ•˜๊ฐ€ ์–ธ๊ธ‰ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ๋ณธ์งˆ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ญ์ƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋„์ปค ์ด๋ฏธ์ง€์—๋Š” SSR BE์™€ CDN์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Dockerfile, ๊ทธ๋ž˜์„œ ๊ทธ ์š”์ ์ด ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒˆ ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋™์ผํ•œ Dockerfile์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ์š”์ ์ž…๋‹ˆ๋‹ค. Dockerfile์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์ง€๋งŒ Dockerfile์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ Dockerfile๋„ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ํ—ฌ๋ฆ„๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š์•„?

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

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

๊ฒฐ๊ตญ ์–ด๋Š ์ชฝ์ด๋“  ์‹ค์ œ๋กœ ํฐ ์ฐจ์ด๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ฏฟ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ๋Š” ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆํ™” ๋ฐœ์ „์„ ์ •์ฒด์‹œํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Docker ์ด๋ฏธ์ง€๋Š” Helm ์ฐจํŠธ๋กœ ํŒจํ‚ค์ง•๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ž์ฒด๋Š” ํŒจํ‚ค์ง•๋˜์ง€ ์•Š์ง€๋งŒ ์ฐธ์กฐ(ํ•€์œผ๋กœ ์ฝ์Œ)๋Š” ํŒจํ‚ค์ง•๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก , ์šฐ๋ฆฌ๋Š” ํ˜„ํ•™์ ์ด์–ด์„œ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ(MB์—์„œ GB๊นŒ์ง€)์˜ ๋ฌธ์ž ์ด๋ฏธ์ง€๊ฐ€ helm package ์˜ ์•„ํ‹ฐํŒฉํŠธ์— ํฌํ•จ๋˜๋Š”์ง€ ์—ฌ๋ถ€(์Šคํฌ์ผ๋Ÿฌ: ๊ทธ๋ ‡์ง€ ์•Š์Œ)์— ๋”ฐ๋ผ์žกํž ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณธ์งˆ์€ "ํŠน์ • ๋ฒ„์ „์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๊ฐ€ helm ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ๋ฌธ์žฅ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ทผ๋ณธ์ ์œผ๋กœ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์— ์–ฝ๋งค์ด๊ธฐ๋ฅผ ์›ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ์˜ ๋‚˜๋ผ๋กœ ๋Œ์•„๊ฐ€์„œ ๋‚ด๋ถ€์ ์œผ๋กœ 1.9.9 ๋กœ ๋ฒ„์ „์ด ์ง€์ •๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด 1.2.5 ๋ฒ„์ „์˜ ์ฐจํŠธ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜ผ๋™์ด ์—†๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆ์˜ Docker ์ด๋ฏธ์ง€ ์ƒค๋Š” fakeshaA ์ž…๋‹ˆ๋‹ค.

ํŒ€์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ 2.0.0 ๋ฒ„์ „์— HTTP๋ฅผ ํ†ตํ•ด ์ฐธ์กฐํ•ด์•ผ ํ–ˆ๋˜ ํŒŒ์ผ์˜ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ฒ„์ „์ด ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ๋‹น์‹ ์—๊ฒŒ ๋ฏธ์น˜๋Š” ๊ฒฐ๊ณผ๋Š” ๋งค์šฐ ์‹ฌ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด pv ๋ฐ pvc ํ•„์š”ํ•˜๋ฏ€๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ์‚ฌ์ด์— ํ˜„์žฌ ๋กœ์ปฌ ํŒŒ์ผ์ด ์†์‹ค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์š”์„ฑ์„ ํ™•์ธํ•˜๋ฉด pv ๋ฐ pvc ๋˜๋„๋ก Helm ์ฐจํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ 2.0.0 ๋กœ์˜ ์ด๋™์ด ํฐ ์ง€์žฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ฐจํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์ „์— Artifact A ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „ 1.9.9 ์„ ์ธํ”„๋ผ ๋ฒ„์ „ 1.2.5 ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ฐจํŠธ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค... _๋‹น์‹ ์˜ ํˆฌ๊ตฌ ์ฐจํŠธ๋Š” ์ด์ œ v. 1.3.0 _์ด๊ณ  1.9.9 ๋ฅผ ์ธํ”„๋ผ ๋ฒ„์ „ 1.3.0 ์—ฐ๊ฒฐํ•˜๋Š” ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ Artifact B ๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

2.0.0 ๋Œ€ํ•œ ์ฝ”๋“œ ๋ฐฐํฌ๊ฐ€ Docker ์ด๋ฏธ์ง€ sha fakeShaB ์™€ ํ•จ๊ป˜ ์‹คํ–‰๋˜๋ฉด 2.0.0 ๋ฅผ ์ธํ”„๋ผ ๋ฒ„์ „ 1.3.0 ์—ฐ๊ฒฐํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Artifact C

์ด์ œ 2.0.0 ๋ฆด๋ฆฌ์Šค์—์„œ ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ๋กค๋ฐฑํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Artifact B ...๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กค๋ฐฑํ•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ Artifact A ๋‹ค์‹œ ๋กค๋ฐฑํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๋ฐœ์ƒํ•˜๋Š” ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ์ฐธ์กฐํ•˜๋Š” Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์—ฌ์ „ํžˆ ํ•ด๋‹น ์•„ํ‹ฐํŒฉํŠธ์—์„œ ์ฐธ์กฐ๋˜๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ์ผ์ด ์žˆ์–ด๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „๊ณผ ์ธํ”„๋ผ ๋ฒ„์ „ ๊ฐ„์—๋Š” ์—ฌ์ „ํžˆ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Helm์˜ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค.

@iorlas :

.deb ๋น„๊ต๋Š” ์ œ์ณ๋‘์ž. ์šฐ๋ฆฌ๋งŒ ๊ณ๊ธธ๋กœ ๋น ์ ธ๋“œ๋Š” ๊ฒƒ ๊ฐ™์•„์š”.

ํ•ญ์ƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋„์ปค ์ด๋ฏธ์ง€์—๋Š” SSR BE์™€ CDN์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ์š”์ ์ž…๋‹ˆ๋‹ค. Dockerfile์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์ง€๋งŒ Dockerfile์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ Dockerfile๋„ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ํ—ฌ๋ฆ„๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š์•„?

๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Š” ํ•ด๋‹น ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค(์˜ˆ: Docker ์ด๋ฏธ์ง€)์˜ ๋ ๋ถ€๋ถ„์— ์žˆ๋Š” ์ œํ’ˆ์ด Dockerfile๊ณผ ์—ฌ๊ธฐ์— ๋„ฃ๋Š” ๊ฒƒ _๋‘˜ ๋‹ค_์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ ์—†์ด๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

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

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

์‚ฌ์‹ค ๊ทธ๋ ‡๊ฒŒ ๋์œผ๋ฉด ์ข‹๊ฒ ์–ด์š”. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์‚ฌ์‹ค์ด๊ณ  Helm Chart๊ฐ€ ์‹ค์ œ๋กœ ๋ฐฐํฌ๋œ ๋ชจ๋“  ๊ฒƒ์„ ํŒจํ‚ค์ง•ํ–ˆ๋‹ค๋ฉด(์•ž์„œ CDN์„ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ Kubernetes์— ๋ฐฐํฌํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์—ฌ์ „ํžˆ ์ฐจํŠธ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค), ์ €๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋Œ€ํ™”๋Š” ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํˆฌ๊ตฌ ์ฐจํŠธ๋Š” Docker ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐฐํฌ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์— ๋ณธ์งˆ์ ์œผ๋กœ _์—ฐ๊ฒฐ๋ _ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ํˆฌ๊ตฌ ์ฐจํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณ€๊ฒฝ๋  ๋•Œ ๋‹ค์‹œ ์ž‘์„ฑ ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด ์‹œ์ ์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์˜ค๋Š˜๋‚  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ Helm์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ํ›จ์”ฌ ๋” ๋ช…ํ™•ํ•ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ํ˜„์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. Helm์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ฉฐ ๊ฒฐ๊ตญ Helm์ด ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ ˆ๋Œ€ ์•ˆ๋œ๋‹ค๊ณ  ํ•˜์ง€๋งˆ, ๊ทธ๋ ‡์ง€?


@jrkarnes :

์ด๋ฏธ์ง€ ์ž์ฒด๋Š” ํŒจํ‚ค์ง•๋˜์ง€ ์•Š์ง€๋งŒ ์ฐธ์กฐ(ํ•€์œผ๋กœ ์ฝ์Œ)๋Š” ํŒจํ‚ค์ง•๋ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก , ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๊ฐ’์„ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํƒ€์‚ฌ ๋ฐ ์ž์‚ฌ ์ฐจํŠธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด ์„ ํƒ ์‚ฌํ•ญ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์šฐ๋ฆฌ๋Š” ํ˜„ํ•™์ ์ผ ์ˆ˜ ์žˆ๊ณ  ๋‹ค์–‘ํ•œ ํฌ๊ธฐ(MB์—์„œ GB๊นŒ์ง€)์˜ ๋ฆฌํ„ฐ๋Ÿด ์ด๋ฏธ์ง€๊ฐ€ helm ํŒจํ‚ค์ง€์˜ ์•„ํ‹ฐํŒฉํŠธ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์žก์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์Šคํฌ์ผ๋Ÿฌ: ๊ทธ๋ ‡์ง€ ์•Š์Œ).

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ˜„ํ•™์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์ง€์ ํ–ˆ๋“ฏ์ด Docker ์ด๋ฏธ์ง€๊ฐ€ "๋นŒ๋“œ๋œ" Helm ์ฐจํŠธ ์•ˆ์— ํŒจํ‚ค์ง€๋˜์–ด ์žˆ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์˜ ์ฃผ์–ด์ง„ ๋ฒ„์ „์ด helm ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค"๋Š” ์—ฌ์ „ํžˆ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ์ฒซ ๋ฒˆ์งธ ์š”์ ์€ ๋ฐ˜๋Œ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐฐํฌ ์ค‘์ธ ํ•ญ๋ชฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์˜ฅ, ๋‹น์‹ ์€ ๋‹น์‹ ์ด ์›ํ•˜๋Š” ๊ฒฝ์šฐ hello-world ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ๋Œ€๋ถ€๋ถ„์˜ ์ฐจํŠธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์“ธ๋ชจ๊ฐ€ ์—†์ง€๋งŒ ๋‚ด ์š”์ ์„ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ฆ๋ช…ํ•ฉ๋‹ˆ๋‹ค. Helm Chart๋Š” ๊ท€ํ•˜์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๋Š” _๊ธฐ๋Œ€_๊ฐ€ ์žˆ์œผ๋ฉฐ, ์•„๋งˆ๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ™•์‹คํžˆ _ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค_ - ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ํŒจํ‚ค์ง•๋œ Helm ์ฐจํŠธ์— ํฌํ•จ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋Š” _์•„๋ฌด๋„_์ž…๋‹ˆ๋‹ค.

์‚ฌ๋ก€์˜ ๋‚˜๋ผ๋กœ ๋Œ์•„๊ฐ€๋ฉด [...] ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

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

๋ฌด์—‡์ด๋“  ๊ฐ„์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „๊ณผ ์ธํ”„๋ผ ๋ฒ„์ „ ๊ฐ„์—๋Š” ์—ฌ์ „ํžˆ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Helm์˜ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ƒํ™ฉ์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋…ผ์Ÿ(์ด์ƒ์ ์œผ๋กœ ๋…ผ์˜)ํ•˜๋Š” ๊ฒƒ์ด ์ข…์ข… ๊ฐœ์„ ์œผ๋กœ ์ด์–ด์ง„๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” Helm์˜ "๋ชฉ์ "์ด ์ฐจํŠธ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ DRY ๋ฐ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ฉด์„œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋” ์‰ฝ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฐจํŠธ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์„ ์—„๊ฒฉํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๊ณณ์€ ์–ด๋””์—๋„ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ, @iorlas ์—๊ฒŒ

... ํ•ด๋‹น ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ์ œํ’ˆ(์˜ˆ: Docker ์ด๋ฏธ์ง€)์€ Dockerfile๊ณผ ์—ฌ๊ธฐ์— ๋„ฃ๋Š” ํ•ญ๋ชฉ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ... ์ด ๋‘ ๊ฐ€์ง€ ์š”์†Œ ์—†์ด๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ... Helm ํŒจํ‚ค์ง€๋Š” ์ฐจํŠธ์™€ ์•ฑ ๋ฒ„์ „(= Docker ์ด๋ฏธ์ง€)์ด ํ•„์š”ํ•˜๋ฉฐ ์ด๊ฒƒ์ด ์—†์œผ๋ฉด ์กด์žฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Helm ์ฐจํŠธ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋นŒ๋“œ๋˜๊ธฐ ์ „์—๋„ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ํ•œ ์ค„์˜ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜๊ธฐ ์ „์ž…๋‹ˆ๋‹ค. ... ํˆฌ๊ตฌ ์ฐจํŠธ๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ด ์—†์ด ์™„์ „ํžˆ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์ด๊ฒƒ์€ ์“ธ๋ชจ๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

๋”ฐ๋ผ์„œ ๋‚ด ๊ฐ€์„ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Helm ํŒจํ‚ค์ง€๋Š” Docker ์ด๋ฏธ์ง€๊ฐ€ ์—†์œผ๋ฉด ๊ฑฐ์˜ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Docker ์ด๋ฏธ์ง€๋Š” ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์—†์œผ๋ฉด ๊ฑฐ์˜ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ฐจ์ด์ ์€ ์ถ”์ƒํ™” ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ํŒจํ‚ค์ง€๋ฅ˜ ๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์ด ์ „ํ˜€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ์ œ ์š”์ ์„ ์„ค๋ช…ํ•˜๋ ค๊ณ  ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜, ๊ทธ๋ž˜! ppl์ด ๋ชจ๋“  ๊ฒƒ์„ ์„ธ๋ถ€์ ์œผ๋กœ ๋…ผ์˜ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ •๋ง ์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์—†์œผ๋ฉด, ์˜ˆ์ธก๊ณผ ์ฃผ์žฅ์ด ์—†์œผ๋ฉด ์šฐ๋ฆฌ๋Š” ๋ฏธ๋ž˜์˜ ๋งฅ์•„์ฆ™์„ ๋งŒ๋“ค์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค ๐Ÿ˜ƒ

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

์‚ฌ์‹ค. ๊ทธ๋Ÿฌํ•œ ๋ณ€ํ™”๋ฅผ ๋ฐ›์•„๋“ค์ด๊ณ  ๋ฐ›์•„๋“ค์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ‰๊ฐ€๋ฅผ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ณ์€ ์ผ ์ž…๋‹ˆ๊นŒ?

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

๋”ฐ๋ผ์„œ ์ €๋Š” ์ด ์ ‘๊ทผ ๋ฐฉ์‹์— ๋ฐ˜๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‚ด ์ˆ˜ ์žˆ๋Š”์ง€ ๋ด…๋‹ˆ๋‹ค( helm run ๋‚ด ์ œ์•ˆ ์ฐธ์กฐ). ๊ทธ๋Ÿฌ๋‚˜ ๋„ˆ๋ฌด ๋Šฆ์ง€ ์•Š์€ ๋™์•ˆ ๊ฐœ์ž…ํ•˜๊ณ  ์ „์ฒด ์‚ฐ์—…์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์žˆ๋Š” ๋™์•ˆ ๊ฐ ์‚ฌ์šฉ์„ ํ‰๊ฐ€ํ•˜๊ณ  ๋‹จ์ ๊ณผ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ Helm ์ฐจํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณ€๊ฒฝ๋  ๋•Œ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ. ์ง€๊ธˆ ๋‹น์žฅ์ด๋ผ๋„ ๊ทธ๋Ÿด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. push ๋Œ€์‹  ๋„์ปค ์ด๋ฏธ์ง€์˜ save / load ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ์ด ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์•„์ฃผ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ทธ๋ ‡๊ฒŒ ๋Š๊ปด์ง€์ง€ ์•Š์ง€๋งŒ ๊ทผ๋ณธ์ ์œผ๋กœ ํ›จ์”ฌ ๊นจ๋—ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” K8์ด "์Šคํƒ€ํ„ฐ" - ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ„์Šค๋กœ ์›๊ฒฉ ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ์—ฌ์ „ํžˆ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ดˆ์ ์„ ์ขํžˆ์ž ์–˜๋“ค์•„

ํˆฌ๊ตฌ ์ฐจํŠธ๋Š” Docker ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐฐํฌ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์— ๋ณธ์งˆ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์—ฌ๊ธฐ์—์„œ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  @seeruk ๋Š” ๊ทธ๊ฒƒ์„ ๋ชป ๋ฐ•์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค๋Œ€๋กœ ๋ฐ”๊พธ์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. Docker ์ด๋ฏธ์ง€๋Š” Helm ํŒจํ‚ค์ง€์™€ ๋ฐ”์ธ๋”ฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋งŒ ํ•˜์„ธ์š”.
  2. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๊ฒฝ๋กœ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ์งˆ๋ฌธ:

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

@seeruk :

๋‹ค์‹œ, @iorlas ์—๊ฒŒ

๋‹น์‹ ์€ ํ›Œ๋ฅญํ•œ ์„ค๋ช…๊ณผ ์š”์ ์„ ๋งŽ์ด ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ Helm์ด ์ ์‘ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. CI/CD๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์ถ• ๋ฐฉ์‹์˜ ๋ฏธ๋ž˜์ด๋ฉฐ ์†”์งํžˆ --atomic ์™€ ๊ฐ™์€ ์ทจ๊ธ‰์œผ๋กœ helm์€ ์ด๋ฏธ ์•ˆ์ •์ ์ธ ๋ฐฐํฌ ๋„๊ตฌ๋กœ ๋”์šฑ ์œ ์—ฐํ•ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ๋Š” ๊ฝค ์˜ค๋ž˜๋œ ๋ฌธ์ œ์ด๋ฏ€๋กœ PR์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์ด ํ”„๋กœ์„ธ์Šค์˜ "๋‹ค์Œ ๋‹จ๊ณ„"๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฒ ์Šต๋‹ˆ๊นŒ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค๋ผ๊ณ  helm-ci-cd ์ด ํŠน์ •์„์œ„ํ•œ ์‹คํ˜„ ๊ฐ€๋Šฅํ•œ --app-version ๊ธฐ๋Šฅ (@jrkarnes๋Š” PR์˜ ๊ธฐ์—ฌ ๋“ฑ์ด ํ•˜๋‚˜์˜ ์ด์•ผ๊ธฐ ์•„๋งˆ๋„ ์ˆ˜)? Tiller๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์š”๊ตฌ๋Š” ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ถœ์‹œ๋œ ํ›„์—์•ผ ์‹ค์ œ๋กœ ์ธ์ •๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Helm์—๋Š” ์‰ฝ๊ฒŒ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. helm-ci-cd ๋Œ€ํ•œ ๋‹ค๋ฅธ ์ข‹์€ ํ›„๋ณด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” install/ upgrade ์ด์ค‘์„ฑ์€ ์šฐ๋ฆฌ CI/CD ppl์ด ์ด๋ฏธ ๋ž˜ํ•‘์„ ํ†ตํ•ด ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค.

--app-version ์Šค์œ„์น˜๊ฐ€ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ๋ณผ ํ•„์š” ์—†์ด k8s ์•ฑ์„ ์„ค์น˜ํ•˜๋ ค๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ง์ ‘์ ์ธ ๋ถ€๊ฐ€ ๊ฐ€์น˜๊ฐ€ ์•„๋‹์ง€๋ผ๋„(btw, ๋‚ด ์ž‘์—… k8s ์ธํ”„๋ผ๋ฅผ ์ค€์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—) ์ตœ์ข… ์‚ฌ์šฉ์ž๋Š” ์—ฌ์ „ํžˆ ๋” ๋งŽ์€ ๊ฐ€์น˜๋ฅผ ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํ•ด๋‹น ์ฐจํŠธ๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ์ด ๋นŒ๋“œ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ๋งŒ๋“œ๋Š” helm ci/cd ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ์ฐจํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋” ์ˆ˜์›”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

groovy๋กœ Chart.yaml์„ ์ฝ์€ ๋‹ค์Œ ์•ฑ ๋ฒ„์ „์„ ์„ค์ •ํ•˜๊ณ  ๋ฐฐํฌ ์‹œ๊ฐ„ ๋™์•ˆ ํŒŒ์ผ์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํˆฌ๊ตฌ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์ด ์กฐํƒ€ ์žฅ์น˜์˜ ์ผ๋ถ€๋ผ๋ฉด ์ข‹๊ฒ ์ง€๋งŒ ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ์˜์กดํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Google'ing์„ ํ†ตํ•ด ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๊ฐ™์€ ๋ฐฐ.

verison: ๊ฐ€ ์ฐจํŠธ ๋ฒ„์ „์ด๋ฉด ์ฐจํŠธ์˜ YAML์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์ด ๋ฒ„์ „์ด ๋ณ€๊ฒฝ๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฐจํŠธ๋Š” ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ๊ฐ’์ด ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ์ด๋ฏ€๋กœ ์ฐจํŠธ์˜ YAML ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ์ฐจํŠธ 1.3์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋ฒ„์ „(1.2, 1.3, 1.6, 1.8 ๋“ฑ)์˜ ์•ฑ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ Chart.yaml ๋‚ด์— ํ•˜๋“œ ์ฝ”๋”ฉ๋œ appVersion: ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธ(๋ฐ ๋ฐ˜์˜)ํ•˜๊ธฐ ์œ„ํ•ด ์ฐจํŠธ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ version: 1.3.0 ์ฐจํŠธ๋กœ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด _application_ ๋ฒ„์ „์„ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด ์ฐจํŠธ ํ…œํ”Œ๋ฆฟ ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” --app-version CLI ์˜ต์…˜์ด ํ™•์‹คํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@seeruk

๋‚˜๋Š” Helm์˜ "๋ชฉ์ "์ด ์ฐจํŠธ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ DRY ๋ฐ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ฉด์„œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋” ์‰ฝ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ๋…ผ์ ์ด๋ฉฐ ๋‚˜๋Š” ์šฐ๋ฆฌ ์ค‘ ์–ด๋Š ์ชฝ๋„ ์ƒ๋Œ€๋ฐฉ์„ ์„ค๋“ํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ์ „๋ฌธ์ ์ธ ํ™˜๊ฒฝ์—์„œ๋Š” ์˜๊ฒฌ ๋ฌธ์ œ์— ์žˆ์–ด์„œ ํ™”ํ•ดํ•  ์ˆ˜ ์—†๋Š” ์ฐจ์ด๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด _๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค_. ๋‚˜๋Š” ํ™•์‹คํžˆ Stallman์ด ๋งํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์— ๋™์˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ์™€ ๋‚ด๊ฐ€ ๋™์˜ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ์ฐธํ˜ธ์— ๋น ์ง€๋ฉด ํ•ฉ์˜์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ์ฃฝ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ํ† ๋ก ์—์„œ ๊ทธ๊ฒƒ์„ ๋” ๋งํ–ˆ๊ณ  ๊ทธ๊ฒƒ์ด ๋ฐ˜๋ณต๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

[...] ๋‚˜๋Š” ๊ทธ helm์ด ์ง„์ •์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋งํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์˜๋ฏธ๋ก ์  ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€๊ฐ€ ๋ฐฐํฌ๋˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ๋…ผ์Ÿ์ด ์‹ค์ œ๋กœ ์ด๋Ÿฌํ•œ ๋…ผ์Ÿ์˜ ๊ทผ๋ณธ ์›์ธ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํŠนํžˆ "์•ฑ ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋ฉด ์ƒˆ ํŒจํ‚ค์ง€๊ฐ€ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๊นŒ?"

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

  • image (๊ธฐ๋ณธ mysql )
  • imageTag (๊ธฐ๋ณธ 5.7.14 )

๊ทธ๋Ÿฐ ๋‹ค์Œ Chart.yaml ํŒŒ์ผ์—์„œ:

apiVersion: v1
name: mysql
version: 1.4.0
appVersion: 5.7.27

appVersion ์™€ ๊ธฐ๋ณธ imageTag ๋Š” ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . helm list ์‹คํ–‰ํ•˜๋ฉด "์•ฑ ๋ฒ„์ „"(์ฝ๊ธฐ, ์—”์ง„ ๋ฒ„์ „)์ด _ํด๋Ÿฌ์Šคํ„ฐ์— ์„ค์น˜๋œ ์‹ค์ œ ์•ฑ ๋ฒ„์ „์„ ๋ฐ˜์˜ํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ๋ผ๋Š” ๋ณด๊ณ ์„œ๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ฐจํŠธ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์„ ์—„๊ฒฉํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๊ณณ์€ ์–ด๋””์—๋„ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ๋””์ž์ธ ๊ฒฐํ•จ์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ, @iorlas ์—๊ฒŒ

์˜ˆ. ์ž ์‹œ ํ›„ ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.


@IRobL

์ด ํŠน์ • --app -version ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด helm-ci-cd์™€ ๊ฐ™์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž์‹ ์˜ ์งˆ๋ฌธ์— ๋‹ตํ•ฉ๋‹ˆ๋‹ค.

--app-version ์Šค์œ„์น˜๊ฐ€ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ๋ณผ ํ•„์š” ์—†์ด k8s ์•ฑ์„ ์„ค์น˜ํ•˜๋ ค๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ง์ ‘์ ์ธ ๋ถ€๊ฐ€ ๊ฐ€์น˜๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ์ตœ์ข… ์‚ฌ์šฉ์ž๋Š” ์—ฌ์ „ํžˆ ๋” ๋งŽ์€ ๊ฐ€์น˜๋ฅผ ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•ˆ์ •์ ์ด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋” ์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” helm ci/cd ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ์ฐจํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์› ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ง€์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ž˜๋ชป๋œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•ž์„œ @seeruk ์—๊ฒŒ appVersion ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” Chart.yaml ํŒŒ์ผ์˜ ๊ณ ์œ  ์†์„ฑ์œผ๋กœ ๋‘๋Š” ๊ฒƒ์€ ์„ค๊ณ„์ƒ์˜ ๊ฒฐํ•จ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. appVersion ์˜ ์†์„ฑ ์ธ image ์ฐจํŠธ๋ฅผ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ์— ์„ค์น˜๋˜๊ณ , ๊ทธ๊ฒƒ์€ ๊ทธ์™€ ํ•จ๊ป˜ ์ฐธ์กฐ ์˜์ƒ์—์„œ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์œ ๋„๋œ๋‹ค tag .

helm-ci ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ๋•Œ ์–ด๋–ค ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์ด๋‚˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ Chart.yaml ์†์„ฑ์—์„œ appVersion ๋ฅผ ํ† ๊ธ€ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋  ๊ฐ€์น˜๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


@IRobL ๊ณผ @seeruk ํ•จ๊ป˜:

๋‚˜๋Š” ์šฐ๋ฆฌ์˜ ๋‹ค๋ฅธ ์˜๊ฒฌ์ด helm์˜ ๋” ์ผ๋ฐ˜์ ์ธ ์ตœ์ข… ์‚ฌ์šฉ์ž๋ฅผ ๋ˆ„๊ตฌ๋ผ๊ณ  ๋ณด๋Š”๊ฐ€์—์„œ ๋น„๋กฏ๋œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์€ ๊ตฌ์„ฑ์„ ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํ…œํ”Œ๋ฆฟ์„ ํŒŒ๊ณ  ๋“ค์ง€ ์•Š๋Š” ์‚ฌ๋žŒ์ด์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ helm ls ๋Š” ํŠนํžˆ ์œ ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์š”์ ์€ ๋ฌด์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ... ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ด€๋ฆฌ ๋„๊ตฌ ๋ฐ ๋„์šฐ๋ฏธ๋กœ helm์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋” ๋งŽ์€ CI/CD ์ปจํ…์ŠคํŠธ์—์„œ Helm์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ --appVersion ์Šค์œ„์น˜๊ฐ€ ํ›จ์”ฌ ๋” ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋” ์œ ์šฉ ํ•˜๋ฏ€๋กœ ๊ด€์‹ฌ ์‚ฌํ•ญ(๋ฐ ๊ตฌ์„ฑ),

์™„๋ฒฝํ•œ ์„ธ์ƒ์—์„œ appVersion ๋Š” ํŒŒ์ƒ ์†์„ฑ์ด์–ด์•ผ ํ•˜๊ณ  ๋„์ปค ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์—์„œ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์กฐํƒ€๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ฆ‰, ๊ฒฝํ•ฉ์˜ ๋ถ€์กฑ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งํ•œ ๊ฒƒ์— ๋Œ€ํ•ด

์˜ˆ. ์ž ์‹œ ํ›„์— ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค...
... helm-ci ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ๋•Œ ์–ด๋–ค ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์ด๋‚˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์‹ญ๋‹ˆ๊นŒ?

์ข‹์€ ์ถœ๋ฐœ์ ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ธ ๋ชฉ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • CICD ๋ชจ๋“œ์—์„œ helm ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ด์ „์— ๋ฆด๋ฆฌ์Šค๋œ ํŒจํ‚ค์ง€์˜ ์ƒํƒœ๋ฅผ ํ˜„์žฌ ์ ์šฉ ์ค‘์ธ ํŒจํ‚ค์ง€์™€ _๋งŒ_๋งŒ_ ๋น„๊ตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. . ๋Œ€์‹  ๋ฆด๋ฆฌ์Šค์˜ ๋ชจ๋“  ๋ฐฐํฌ๋Š” upgrade ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ…œํ”Œ๋ฆฟํ™”๋œ ๋ชจ๋“  ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์™„์ „ํžˆ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • helm-cicd ๋Š” ๊ธฐ๋ณธ Kubernetes ๋ช…๋ น์„ ๋ž˜ํ•‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. helm describe ๋˜๋Š” helm logs ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ํšŸ์ˆ˜๋ฅผ ์…€ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • helm-cicd ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์‹คํ–‰ํ•  ๋•Œ ๋ช…๋ น์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. RBAC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ธ์ฆ๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹œ๋„ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
  • helm-cicd ๋Š” ๋‚˜์ค‘์— ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ์ปฌ๋ ‰์…˜์œผ๋กœ ๋ถ„ํ•ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • helm-cicd ๋Š” ๋ฆด๋ฆฌ์Šค๋ฅผ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ _์ด์‹_ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ๋“ค์€ ํฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค... ๊ทธ๋Ÿฌ๋‚˜ ๋ณธ๊ฒฉ์ ์ธ helm-ci ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์€ (ํ˜„์žฌ) ์ด PR/์ด์Šˆ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ์ž…๋ ฅํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ฝ๊ณ  ๋‚˜๋Š” ๊ทธ ์—ฐ์„ค์— ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์˜ ์‘๋‹ต์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ์ œ ์‹œ๊ฐ„์— ๊ฝค ๋ฐ”์˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์„ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. @jrkarnes

appVersion์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” Chart.yaml ํŒŒ์ผ์˜ ๊ณ ์œ  ์†์„ฑ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๋””์ž์ธ ๊ฒฐํ•จ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง€๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์ด ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” ํ•ญ์ƒ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋‚ด๊ฐ€ ์ฃผ์žฅํ•˜๋Š” ์ด๋…์€ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€ = ํ•˜๋‚˜์˜ ๋นŒ๋“œ, ์ฐจํŠธ = ๋นŒ๋“œ์šฉ ํ…œํ”Œ๋ฆฟ, ํŒจํ‚ค์ง€ = ์•ฑ + ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค.

Helm์€ K8์„ OS๋กœ ์ทจ๊ธ‰ํ•˜๊ณ  ํŒจํ‚ค์ง€๋ฅผ ์•ฑ์˜ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ/์—…๋ฐ์ดํ„ฐ๋กœ ์ทจ๊ธ‰ํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ด๋ฐ์˜ฌ๋กœ๊ธฐ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ๋•Œ๋กœ๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€์ง€๋งŒ ํ™•์‹คํžˆ ๋ฏธ๋ž˜์ž…๋‹ˆ๋‹ค.

_์™œ ๊ทธ๋ ‡๊ฒŒ ๋””์ž์ธ ๋œ ๊ฒƒ ๊ฐ™์•„์š”? ๋™์ผํ•œ helm list ๊ฐ€ ์„ค์น˜๋œ ํ˜„์žฌ ํŒจํ‚ค์ง€ ๋ฒ„์ „์„ ํ‘œ์‹œํ•˜๋„๋ก ์„ค์ •๋ฉ๋‹ˆ๋‹ค._

์ข‹์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ๋งˆ๋‹ค ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ๋นŒ๋“œ๋˜์ง€ ์•Š์€ ๋งŽ์€ ์ฐจํŠธ(mysql๊ณผ ๊ฐ™์€ ๊ณต๊ฐœ ๋ฐ ๋กœ์ปฌ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋†’์€ ์ˆ˜์ค€์˜ ์†”๋ฃจ์…˜์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋†’์ด ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ˆ„๊ตฐ๊ฐ€๋Š” ํŒจํ‚ค์ง€๋ฅผ ๋นŒ๋“œํ•ด์•ผ ํ•˜๋ฉฐ mysql ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฐ ๋นŒ๋“œ์— ๋Œ€ํ•ด Helm ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์„ค๋“ํ•˜๊ธฐ ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

MySQL ์ฐจํŠธ์—๋Š” ์ถ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๋‹ค. helm list ์„ค์น˜๋œ MySQL ๋ฒ„์ „์„ ๋ณด๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์ „์˜ ์ผ๋ถ€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด ํƒœ๊ทธ๋Š” ์•„๋งˆ๋„ ์—ฌ๊ธฐ์— ์žˆ๋Š” ๋ฒ„์ „์˜ ์ผ๋ถ€์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ, @iorlas ์—๊ฒŒ
์˜ˆ. ์ž ์‹œ ํ›„ ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์—๋„ helm run ๋ฅผ ์ถ”๊ฐ€ํ•˜์ž๋Š” ์ œ์•ˆ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘๊ฐ€ ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Is๋Š” Chart๋ฅผ ์ฆ‰์‹œ ํŒจํ‚ค์ง€๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ ๋ฒ„์ „ ๋ฐ ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™„๋ฒฝํ•œ ์„ธ์ƒ์—์„œ ๋‚˜๋Š” appVersion์ด ํŒŒ์ƒ ์†์„ฑ์ด์–ด์•ผ ํ•˜๊ณ  ๋„์ปค ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์—์„œ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์กฐํƒ€๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ฆ‰, ๊ฒฝํ•ฉ์˜ ๋ถ€์กฑ์ž…๋‹ˆ๋‹ค.

๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ตœ์ข… ์ œํ’ˆ์œผ๋กœ, ๋งˆ์ง€๋ง‰ ํŒจํ‚ค์ง€๋กœ ๋ณด๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋งˆ์ง€๋ง‰ ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. Docker ์ด๋ฏธ์ง€ ์™ธ์—๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์—†์œผ๋ฉด ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ๋ฏฟ๋„๋ก ์†์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์— ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•  ๋•Œ ์ด ๋ชจ๋“ˆ์ด ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ๋ฏฟ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

์ข‹์€ ์ถœ๋ฐœ์ ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ธ ๋ชฉ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ๋งŽ์€ ์ œ์•ˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์˜คํžˆ๋ ค ์•ผ์ƒ ํ”Œ๋Ÿฌ๊ทธ์ธ๋ณด๋‹ค๋Š” Helm ํฌํฌ ๊ฐ€ ๋” ์ƒ์ƒํ•˜๊ฒŒ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. CD์˜ CI์™€๋Š” ์ „ํ˜€ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ๋ง์”€๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋Ÿฌํ•œ ํฌํฌ/ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ตฌ์ถ•ํ•˜์ง€ ๋ง๋ผ๊ณ  ์ฃผ์žฅํ•˜๊ณ , ์ ์ ˆํ•œ ์†”๋ฃจ์…˜์„ ๋…ผ์˜ํ•˜๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๊ทธ๋‹ค์ง€ ํฌ์ง€ ์•Š๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ์•„๋ฌด๋„ 3๊ฐœ์˜ Helm ํฌํฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฃผ๋ชฉํ•ด์ฃผ์„ธ์š”!

์ข‹์•„์š”, ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์ €๊ธฐ์„œ ๋งŽ์€ ์ƒ๊ฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ข‹์€ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋จผ์ € ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•  ํ•„์š” ์—†์ด ์•ฑ ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ
  • helm ls ์—์„œ ์ ์ ˆํ•œ ์•ฑ ๋ฒ„์ „์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
  • ๋ชจ๋“  API(์˜ˆ: Helm ์—ฐ์‚ฐ์ž)๊ฐ€ ์ค‘๊ฐ„ ์ƒํƒœ ์—†์ด ์•ฑ ๋ฒ„์ „์„ ์ง€์ •/์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋„๋ก ํ—ˆ์šฉ

๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

  1. helm install ๋Š” ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. Chart ์„ค์น˜๋„ ์ง€์›ํ•˜์ง€๋งŒ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค. helm install ๋‹จ์ˆœํ™”ํ•˜๊ณ  ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ชฉ์ ์— ๋”ฐ๋ผ ๋‘๋„๋ก ํ•ฉ์‹œ๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ helm run ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์˜๋„๋Š” ๊ฐ„์†Œํ™”๋œ ํ๋ฆ„์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Combine helm package ๋ฐ helm run , ๋‘ ๋ช…๋ น ์ธ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์˜๋ฏธ๊ฐ€ ์—†๋Š” ๊ฒƒ์€ ๊ฑธ๋Ÿฌ๋ƒ…๋‹ˆ๋‹ค. .
  2. app-version ๋ฅผ helm install cmd์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด API๋ฅผ ๋ถ€ํ’€๋ ค ํŒจํ‚ค์ง€ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ์ˆจ๊ธธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฐ์˜ฌ๋กœ๊ธฐ๋ฅผ ์ˆจ๊ธธ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ง€๊ธˆ์ฒ˜๋Ÿผ).

์ด ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์ง€๊ธˆ ์šฐ๋ฆฌ๊ฐ€ ๊ฒช๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์–ด๋ ค์›€์„ ํ•ด๊ฒฐํ•  ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์›ํ•˜๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ง€์›ํ•  ์‹œ๊ฐ„์ด ์—†๋Š” ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋ฏ€๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์ธ์ง€ ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Helm์€ K8์„ OS๋กœ ์ทจ๊ธ‰ํ•˜๊ณ  ํŒจํ‚ค์ง€๋ฅผ ์•ฑ์˜ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ/์—…๋ฐ์ดํ„ฐ๋กœ ์ทจ๊ธ‰ํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ด๋ฐ์˜ฌ๋กœ๊ธฐ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ค์˜ค. ์•Œ๊ฒ ์–ด. helm ์ฐจํŠธ[ํŒจํ‚ค์ง€]๋Š” Kubernetes์˜ [๋ง ๊ทธ๋Œ€๋กœ] "rpm"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฐ›์€ ์ธ์ƒ์ด ์ „ํ˜€ ์•„๋‹™๋‹ˆ๋‹ค. helm์€ ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ์ฐจํŠธ/ํŒจํ‚ค์ง€๋Š” "k8s์šฉ์œผ๋กœ ํฌ๋งท๋œ" ์•ฑ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•  ๋•Œ appVersion์„ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋นŒ๋“œ ์„œ๋ฒ„๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋นŒ๋“œ ์ปจํ…Œ์ด๋„ˆ - "v1.2" ํƒœ๊ทธ
  • Chart.yaml ์—…๋ฐ์ดํŠธ - appVersion: "v1.2" --- helm package --app-version ๋ช…๋ น๋„ ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒจํ‚ค์ง€ ์ฐจํŠธ: helm package --app-version v1.2 => ํŒจํ‚ค์ง€[chart]-v1.2.tgz(์˜ˆ: "ํŒจํ‚ค์ง€[chart]-v1.2.rpm")
  • ๋ฐฐํฌ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€ ๋ฐฐํฌ, helm install package[chart]-v1.2(์˜ˆ: apt install [email protected])

์ž, ๋‚ด๊ฐ€ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? package-v1.2๊ฐ€ v1.2 appVersion์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ ์˜๋„๊ฐ€ ์•„๋‹ˆ์—ˆ์„๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด rpm์€ ํŒจํ‚ค์ง€(์ฐจํŠธ)๊ฐ€ ์•„๋‹ˆ๋ผ ์•ฑ์˜ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

ํŽธ์ง‘ํ•˜๋‹ค:

package-v1.2๊ฐ€ v1.2 appVersion์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ ์˜๋„๊ฐ€ ์•„๋‹ˆ์—ˆ์„๊นŒ?

์ด์ œ ์‚ฌ๋žŒ๋“ค์ด Chart.version๊ณผ Chart.appVersion์ด ์กฐํ™”๋ฅผ ์ด๋ฃจ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋…ผํ‰ํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ธ์ˆ˜๋Š” ์—ฌ๊ธฐ์—์„œ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค... ์•ˆ์ •์ ์ธ "์ฐจํŠธ" ๋นŒ๋“œ๊ฐ€ ์žˆ๋Š” ์•ฑ์˜ ๊ฒฝ์šฐ package-v1.2๊ฐ€ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ yaml ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋  ๋•Œ package-v1.2๊ฐ€ ์ฐจํŠธ ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ฃผ์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ๊ฐ€ํ•˜๋Š” ์•ฑ ๋ฒ„์ „(1.6)๊ณผ ์ฐจ๋ณ„ํ™”๋œ ์•ˆ์ •์ ์ธ ์ฐจํŠธ ๋ฒ„์ „(1.2)์„ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๊นŒ? package-[version] ๊ฐ€ 1.2๊ฐ€ ๋ ๊นŒ์š”? ๋˜๋Š” 1.6? Chart ๋ฒ„์ „ 1.2๋ฅผ ๋ฐฐํฌํ–ˆ์ง€๋งŒ ํŒจํ‚ค์ง• ์‹œ appVersion์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. helm package --app-version 1.6 ?

โžœ  chart git:(master) โœ— helm package --app-version 1.5 nginx
Successfully packaged chart and saved it to: /Users/Documents/source/docker/nginx/chart/nginx-0.1.0.tgz

:(

.... ๋„ˆ๋ฌด ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

helm ์ฐจํŠธ[ํŒจํ‚ค์ง€]๋Š” Kubernetes์˜ [๋ง ๊ทธ๋Œ€๋กœ] "rpm"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ •ํ™•ํžˆ! ํ•˜์ง€๋งŒ ๋•Œ๋กœ ๋„ˆ๋ฌด ์—„๊ฒฉํ•˜๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ ๋Š๊ปด์งˆ ๋•Œ๊ฐ€ ์žˆ๋Š”๋ฐ ๋ฐ”๋กœ ์ด ์ง€์ ์ด ๋ฐ”๋กœ ์ง€๋ฆ„๊ธธ์ž…๋‹ˆ๋‹ค.

์ž, ๋‚ด๊ฐ€ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? package-v1.2๊ฐ€ v1.2 appVersion์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ ์˜๋„๊ฐ€ ์•„๋‹ˆ์—ˆ์„๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด rpm์€ ํŒจํ‚ค์ง€(์ฐจํŠธ)๊ฐ€ ์•„๋‹ˆ๋ผ ์•ฑ์˜ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‹ค๋ฅธ ๋…ผ์˜์˜ ๋ฌธ์ œ์ด์ง€๋งŒ ํ˜„์žฌ ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„์€ ์•ฑ ๋ฒ„์ „์ด ์•„๋‹Œ ์ฐจํŠธ ๋ฒ„์ „์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์ด์œ ๋Š” ๋ชจ๋ฅด๊ฒ ๊ณ , ๋ฐ˜๋Œ€๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ์—ญ์‚ฌ์ ์ธ ๋ฌธ์ œ์ด์ง€๋งŒ ์ œ ์ƒ๊ฐ์—๋Š” ๊ท€ํ•˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ package-{app-version}.tgz ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ๋ฉ”์‹œ์ง€์— ๋”ฐ๋ฅด๋ฉด ๋ฒ„์ „์—๋Š” 4๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฐจํŠธ
  • ์•ฑ
  • ํŒจํ‚ค์ง€
  • ํ’€์–ด ์ฃผ๋‹ค

์ด ๋ชจ๋“  ๊ฒƒ์„ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฒ„์ „ํ™”ํ•˜๋Š” ๊ฒƒ์€ ๊ณจ์น˜ ์•„ํ”ˆ ์ผ์ด์ง€๋งŒ ํ˜„์žฌ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์˜ˆ์™ธ: ํŒจํ‚ค์ง€๋Š” ์ฐจํŠธ ๋ฒ„์ „ ์ดํ›„์— ๋ฒ„์ „์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

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

@iorlas

๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ตœ์ข… ์ œํ’ˆ์œผ๋กœ, ๋งˆ์ง€๋ง‰ ํŒจํ‚ค์ง€๋กœ ๋ณด๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋งˆ์ง€๋ง‰ ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. Docker ์ด๋ฏธ์ง€ ์™ธ์—๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์—†์œผ๋ฉด ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ๋ฏฟ๋„๋ก ์†์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์— ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•  ๋•Œ ์ด ๋ชจ๋“ˆ์ด ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ๋ฏฟ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ์ง„์ˆ ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๋Š” ๋ฐ ๋ช‡ ์ฃผ๊ฐ€ ๊ฑธ๋ ธ๊ณ  ๋‚˜๋Š” ๋‹น์‹ ๊ณผ 100% ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋‚˜๋Š” ์ด์ œ ์šฐ๋ฆฌ์˜ ์˜๊ฒฌ ์ฐจ์ด๊ฐ€ ์–ด๋””์—์„œ ๋น„๋กฏ๋˜๋Š”์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค ...

์ €๋Š” ์ผ๋ จ์˜ ์ž‘์—…์„ ๋งค์šฐ ์ž˜ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ์ฒ ํ•™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค(UNIX ์ƒ๊ฐ). ๊ทธ๋Ÿฌ๋‚˜ ํ˜„๋Œ€ ์‹œ์Šคํ…œ์€ "์‘์šฉ ํ”„๋กœ๊ทธ๋žจ"์„ ์ด๋Ÿฌํ•œ ์ž‘์€ ๋„๊ตฌ์˜ ๊ทธ๋ฃน์œผ๋กœ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋„์ปค ์•„ํ‹ฐํŒฉํŠธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ํ•˜์œ„ ๊ตฌ์„ฑ์š”์†Œ(๋„์ปค ์•„ํ‹ฐํŒฉํŠธ์ผ ์ˆ˜๋„ ์žˆ์Œ)์— ์ข…์†๋˜๋Š” ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ "๋ฒ„์ „"์„ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์ปคํ”Œ๋ง์„ ๋˜์ง€๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๊ทธ๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•œ ๋Œ€๋‹ต์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ด ์งˆ๋ฌธ์— ๋‹ตํ•˜๋Š” ๊ฒƒ์€ ์ด ๋ฌธ์ œ/์š”์ฒญ์˜ ๋ฒ”์œ„๋ฅผ ํ›จ์”ฌ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค . ๋ฌธ์ œ์˜ ๊ทผ๋ณธ์œผ๋กœ ๋Œ์•„๊ฐ€๋ ค๋ฉด install ์™€ run ๊ตฌ๋ณ„ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์˜๋ฏธ๋ก ์— ๋”ฐ๋ผ install ๋Š” ํŒจํ‚ค์ง€์—์„œ๋งŒ ์ž‘๋™ํ•ด์•ผ ํ•˜๊ณ  run ๋Š” ํ…œํ”Œ๋ฆฟ์„ ์ƒ์„ฑํ•˜๊ณ  _์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๊ณ  ์ ์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ "์‹คํ–‰"ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ์‹œ๊ฐ„์— helm template ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์žฅ๋ž˜ ์ฐจํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ „๊ฐœ๋ ์ง€ ํ™•์ธํ•ด์•ผ ํ•˜์ง€๋งŒ, vi-ca-vi run ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๊ด€์ฐฐํ•˜๋Š” ๋ฐ๋Š” ๋งŽ์€ ์‚ฌ์šฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์Šคํƒ€๊ฐ€ ๋˜๋Š” ์ด์ค‘ ๋ชฉ์ (์†๋„๊ฐ€ ๋งค์šฐ ๋†’์œผ๋ฉด ๊ฐ€์น˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํŒจํ‚ค์ง€๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ).

MySQL ์ฐจํŠธ์—๋Š” ์ถ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๋‹ค. helm ๋ชฉ๋ก์— ์„ค์น˜๋œ MySQL ๋ฒ„์ „์„ ๋ณด๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์ „์˜ ์ผ๋ถ€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด ํƒœ๊ทธ๋Š” ์•„๋งˆ๋„ ์—ฌ๊ธฐ์— ์žˆ๋Š” ๋ฒ„์ „์˜ ์ผ๋ถ€์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

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

๋‚˜๋Š” ๋ชจ๋“  ์˜๊ฒฌ์„ ์ฝ์—ˆ์œผ๋ฉฐ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์˜๊ฒฌ์ด ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํšŒ์‚ฌ๊ฐ€ ๊ฐœ์ธ Helm ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ์ฐจํŠธ์˜ 90%๊ฐ€ ์ฃผ๋กœ ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์–‘์ด ์žˆ๋Š” ํ•˜๋‚˜์˜ ๋ฐฐํฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ์™”์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ appVersion ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€์˜ ํƒœ๊ทธ๋ฅผ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ณ€์ˆ˜ ์ค‘๋ณต์„ ํ”ผํ•  ์ˆ˜ ์žˆ๊ณ  helm version ์‹คํ–‰ํ•˜๋Š” ์ด ๋ฒ„์ „์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ๊ณ  ๋‚˜๋ฉด ์ด๊ฒƒ์ด ํŽธ๋ฆฌํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋ณ‘ํ•ฉ๋˜๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ง ์ข‹์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์š”์ฒญ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ด์ „ ์Šค๋ ˆ๋“œ์˜ ๋งˆ์ง€๋ง‰ ๋‹ต๋ณ€์„ ํฌํ•จํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


ํ . ์—ฌ๊ธฐ์„œ appVersion ๋ฅผ Docker ํƒœ๊ทธ(๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ)์— ๋ฌถ๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ ์ƒํ™ฉ์ด ์„œ๋กœ ๋ชจ์ˆœ๋˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฐœ๋ฐœ ์‹œ๋‚˜๋ฆฌ์˜ค์ž…๋‹ˆ๋‹ค. version ๋Š” SemVer์—ฌ์•ผ ํ•˜๋ฏ€๋กœ Docker ํƒœ๊ทธ๋ฅผ Chart version ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

appVersion ๊ฐ€ ์ฐจํŠธ์— ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์‹œ๊ฐ์  ๋ฒ„์ „ ์ฐจ์ด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

k8s๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹ ๋•Œ๋ฌธ์—: dev ์„ธ๊ณ„์—์„œ๋Š” ๋ณด๋“œ ์ „์ฒด์— ํƒœ๊ทธ ๋ฒ„์ „์„ ํ—ˆ์šฉํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

SemVer๊ฐ€ ~ ๋˜๋Š” ^ ์—ฐ์‚ฐ์ž ์ธก๋ฉด์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „์ด ์˜๋ฏธ ์ฒด๊ณ„ ์—†์ด ์ˆœ์ „ํžˆ ์ •๋ ฌ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์™œ ์•ˆ ๋ผ? ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ์ด๊ฒƒ์„ php composer ํ•ฉ๋‹ˆ๋‹ค. SemVer๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ฒ„์ „ ์Šคํ‚ค๋งˆ์—์„œ ๋‹จ์ˆœํžˆ ๊ตฌ๋ฌธ ๋ถ„์„๋˜๊ฑฐ๋‚˜ ๋ฌด์‹œ๋˜๋Š” ๋ฌธ์ž์—ด ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด version ๊ฐ€ SemVer ๋ฒˆํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ฉด ~ ๋ฐ ^ ํฌํ•จํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

#7299 ์— ๋Œ€ํ•œ ๋‚ด ์˜๊ฒฌ์„ ์ธ์šฉ

.deb ๋ฐ .rpm ํŒจํ‚ค์ง€์˜ ๊ฒฝ์šฐ ๋ฒ„์ „ ๋ฌธ์ž์—ด์ด ํŠน์ • ๋ฐฉ์‹(ํ•˜์ดํ”ˆ์œผ๋กœ)์œผ๋กœ ๋ถ„ํ• ๋˜์ง€๋งŒ "์ด๊ฒƒ์€ API์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค"์™€ ๊ฐ™์€ ์˜๋ฏธ๋ก ์  ์˜๋ฏธ๊ฐ€ ์—†์œผ๋ฏ€๋กœ "Give ์ตœ์‹  API ํ˜ธํ™˜ ๋ฒ„์ „" ๋˜๋Š” "๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ API๊ฐ€ ํฌํ•จ๋œ ์ตœ์‹  ๋ฒ„์ „ ์ œ๊ณต"๊ณผ ๊ฐ™์ด SemVer์—์„œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Debian๊ณผ RedHat ๋ชจ๋‘ ์ผ๋ฐ˜์ ์œผ๋กœ soversion ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€(๋ฐ ABI ํ˜ธํ™˜์„ฑ)๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํŒจํ‚ค์ง€ ๋ณ„์นญ์„ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŒจํ‚ค์ง€ ์ด๋ฆ„๊ณผ ์ฃผ๋ฌธ ์ „์šฉ ๋น„๊ต๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ์ผ๊ด€๋œ ๋™์ž‘์„ ํ—ˆ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์ฃผ์ œ์—์„œ ์šฐ๋ฆฌ ์ œํ’ˆ์— Helm ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋ฅผ ํŒจํ‚ค์ง•ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Docker ์ด๋ฏธ์ง€๋Š” ๋‹จ์ˆœํ•œ ์•„ํ‹ฐํŒฉํŠธ์ด๋ฉฐ ํ•ด๋‹น ์ด๋ฆ„์€ API๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— SemVer๋ฅผ ์ฑ„ํƒํ•œ ์„œ๋น„์Šค ๋ฒ„์ „์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ CI ํŒŒ์ดํ”„๋ผ์ธ์€ ์ฝ”๋“œ ๋ฐ ๊ด€๋ จ ์Šคํฌ๋ฆฝํŠธ์˜ git repos๋ฅผ ๋ณ€ํ™˜ํ•˜๊ณ  ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๊ณ  Docker ์ด๋ฏธ์ง€๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” Helm ์ฐจํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Docker ์ด๋ฏธ์ง€์˜ ํƒœ๊ทธ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ํฅ๋ฏธ๋กญ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์›๋ณธ git SHA๋กœ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•œ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์— ์‚ฌ์šฉ๋œ ์ด๋ฏธ์ง€์— ํƒœ๊ทธ๋ฅผ ๋‹ค์‹œ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํƒœ๊ทธ ๋‹ค์‹œ ์ง€์ •์˜ ์ฃผ์š” ์ด์ ์€ ํƒœ๊ทธ๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์งง์€ ๊ธฐ๊ฐ„ ํ›„์— git-SHA ๋ฒ„์ „์˜ ํƒœ๊ทธ๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

version ์—๋Š” ์šฐ๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ •ํ™•ํ•œ ๋ฒ„์ „์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ  appVersion ์—๋Š” ๋™์ผํ•œ ๋‚ด์šฉ์ด ์žˆ์ง€๋งŒ ๋ฌธ์ž์—ด๋กœ ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ์•„๋ฌด๋„ ๋ณด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Helm์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋งค์šฐ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. Docker ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ

https://github.com/helm/charts/ ์—์„œ ์ฐจํŠธ์˜ ๋ฒ„์ „์ด ์ง€์ •๋˜๋Š” ๋ฐฉ์‹์— ์•ฝ๊ฐ„ ๋งŒ์กฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์•„๋‹Œ ์ฐจํŠธ์˜ ๋ฒ„์ „์ด ์ง€์ •๋˜์–ด ๊ฐ€๋” ๋งˆ์ด๋„ˆ(์•ˆ์ •์ ์ธ) ์ฐจํŠธ version ๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. version ๋ฅผ ์ฐจํŠธ์— ํฌํ•จ๋œ ํ•ญ๋ชฉ์˜ ๋ฒ„์ „๊ณผ ๋ถ„๋ฆฌํ•  ๋•Œ ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ํ”ผํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฐ๊ณผ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ "์™ธ๋ถ€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์•„ํ‹ฐํŒฉํŠธ" ํŽ˜์ด์ง€์˜ ์•ˆ์ •์ ์ธ/ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ์šด์˜์ž ์ฐจํŠธ์™€ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋‹ค์–‘ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์กฐ๊ฐ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ "ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ๋ฒ„์ „์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?" ํŠนํžˆ "์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•œ๊ฐ€์š”?" ์šฐ๋ฆฌ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ฒ„์ „์„ ์ œ๊ณตํ•˜๋Š” Agones๋ณด๋‹ค ๋‹ต๋ณ€ํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

@jrkarnes

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

์ •๋ง ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด #6932์— ๊ด€๋ จ ๊ธฐ๋Šฅ ์š”์ฒญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ† ๋ก ์„ ๋’ค๋กœ ๋„˜๊ธฐ๋ฉด appVersion ๊ฐ€ Docker ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์€ ์ ์–ด๋„ ์ผ๋ถ€ ์ฐจํŠธ(์‚ฌ์šฉ์ž๊ฐ€ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ์ฐจํŠธ)๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์šฐ๋ฆฌ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Docker ์ด๋ฏธ์ง€๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„ ๊ณต์œ  ๋ฆฌ์†Œ์Šค(์˜ˆ: JWT ๊ณต๊ฐœ ํ‚ค, values.yaml )์™€ ๋‹ค๋ฅธ ์ฐจํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ requirements.yaml ์šฉ ํ˜ธ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

appVersion์ด Docker ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ๊ด€๋ จ๋˜์–ด ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์€ ์ ์–ด๋„ ์ผ๋ถ€ ์ฐจํŠธ์™€ ๊ฐ™์ด ์šฐ๋ฆฌ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ํ™•์‹คํžˆ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด _์˜๋„๋œ ์šฉ๋„๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹จ์ง€ ๊ทธ๊ฒƒ์ด ๋…ผ๋ฆฌ์  ์—ฐ๊ด€์„ฑ์ด๋ผ๊ณ  ๋งํ–ˆ๋‹ค. ์—ฌ์ „ํžˆ appVersion ๋ฅผ ๋‚ด๋ถ€ yaml์˜ "๋…ผ๋ฆฌ์  ์ปจํ…Œ์ด๋„ˆ"๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

SemVer์— version ๋ฅผ ์ž ๊ทธ๋Š” ๊ฒƒ์ด ์–ด๋–ค ์ด์ ์ด ์žˆ๋Š”์ง€ ์•„์ง ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. helm์ด version (๋ฐ appVersion )๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ๊ฑฐ๊ธฐ์—์„œ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด ์š”์ ์€ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„์ด์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค appVersion ๊ฐ€ ์šฐ๋ฆฌ์˜ Chart.yaml์— ์ผ๋ฐ˜์ ์œผ๋กœ ์กด์žฌํ•˜์ง€์˜ ๋ชจ๋“ ์—์„œํ•˜๊ณ ์žˆ์„ ๋•Œ, ๊ทธ๊ฒƒ์€ ๋™์ผ์˜ version .

version ๋ฅผ SemVer์— ๊ณ ์ •ํ•˜๋ฉด ๋‹ค์–‘ํ•œ SemVer ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์•ˆ์ •์ ์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜์—ฌ ์„ค์น˜๋ฅผ ํ†ตํ•ด ์ •๋ ฌ ๋ฐ ์ผ์น˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RPM ๋ฐ DEB ํŒจํ‚ค์ง• ์‹œ์Šคํ…œ์€ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ๋‹ค๋ฅธ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๋ฉด ๋™์ผํ•œ ๊ฒƒ์ด์ง€๋งŒ ์˜๋ฏธ๋ก ์  ๊ตฌ๋ฌธ ๋ถ„์„์„ ์œ„ํ•ด ์—ฌ์ „ํžˆ ์ œํ•œ๋œ ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋˜ํ•œ ๊ทธ๋“ค์ด ๊ด€์‹ฌ์„ ๊ฐ–๋Š” ๋‹ค๋ฅธ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

helm/charts ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์‹คํ–‰๋œ ๋ฐฉ์‹์„ ๊ฐ์•ˆํ•  ๋•Œ DEB ๋˜๋Š” RPM ์Šคํƒ€์ผ ๋ฒ„์ „์ด ์žˆ๋Š” ๋‹จ์ผ version ํ•„๋“œ๊ฐ€ SemVer์— appVersion ๋ฌธ์ž์—ด์„ ๋”ํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์€ ์„ ํƒ์ด์—ˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ด๋ฏธ ํ•ญํ•ดํ•œ ๋ฐฐ์ž…๋‹ˆ๋‹ค. ์–ด๋ฆฐ ์‹œ์ ˆ์— ์—…์ŠคํŠธ๋ฆผ ๊ณต๊ธ‰์—…์ฒด์ด์ž ๋ฐ๋น„์•ˆ ํŒจํ‚ค์ง€ ์ œ์ž‘์ž์˜€๊ธฐ ๋•Œ๋ฌธ์— "์—ฌ๊ธฐ์„œ ์–ด๋–ค ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋‚˜์š”?" ์šฐ๋ฆฌ์˜ " version is one truth" ํŒจํ‚ค์ง€์—์„œ.

"๋•Œ๋•Œ๋กœ SemVer์ž…๋‹ˆ๋‹ค"์˜ ๋ฌธ์ œ๋Š” SemVer๊ฐ€ ํŒŒ์„œ๊ฐ€ ์†์œผ๋กœ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ ‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๋งค์šฐ ํก์‚ฌ ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. .

์•ˆ๋…•. ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋‰ด์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๋Œ“๊ธ€์„ ์ฝ์€ ํ›„, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ •๋ง ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์šฐ๋ฆฌ๋Š” ํŒจํ‚ค์ง€๋œ helm ์ฐจํŠธ๊ฐ€ ํ•œ ์ข…๋ฅ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ์˜ˆ์ƒ๋˜๋Š” kubernetes ๋ฆฌ์†Œ์Šค ๋ฐ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ถ”์ƒํ™” ๊ณ„์ธต์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ๋ฐฐํฌ ์ค‘์—๋งŒ "์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ด๋Ÿฌํ•œ ํŠน์ • ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

helm ๋ชฉ๋ก์—๋Š” ๋ฆด๋ฆฌ์Šค ์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ด ๋ฆด๋ฆฌ์Šค์— ๋ฐฐํฌ๋œ ์•ฑ ๋ฒ„์ „์„ ๋ณผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ๋ฌธ์ œ https://github.com/helm/helm/issues/7517์— ๋Œ“๊ธ€์„ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค.
values.yaml ์—์„œ ์ด๊ฒƒ์„ ์žฌ์ •์˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฌด๋ฃŒ --set ๋ช…๋ น์ค„ ์˜ต์…˜์„ ์–ป์Šต๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ๋™์˜ํ•œ๋‹ค. ํ˜„์žฌ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” _application_ ๊ธฐ๋ฐ˜ ์ฐจํŠธ์— ๋Œ€ํ•ด ์ฐจํŠธ ๋ฐ•๋ฌผ๊ด€์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ฐจ๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฐจํŠธ ๋ฒ„์ „ != ์•ฑ ๋ฒ„์ „์ด๋ฏ€๋กœ ์ฐจํŠธ ๋ฎค์ง€์—„์„ ํ†ตํ•ด ์ถœ์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์œ„์˜ ๋…ผ์˜(์ „๋ถ€๊ฐ€ ์•„๋‹˜)๋ฅผ ๋‹ค ์ฝ์—ˆ์œผ๋ฏ€๋กœ ์ผ๋ถ€ ์š”์ /๊ด€์ ์„ ๋ฐ˜๋ณตํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ์‹ ์ค‘ํ•œ ๋‹ต๋ณ€์„ ๋“œ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” helm ls ํ•  ๋•Œ appVersion์„ ๋ณด๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๊ณ  ๊ฐœ๋…์ ์œผ๋กœ .Values.image.tag ์—์„œ ์ด๋™ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์ผ์ด์ง€๋งŒ ๋ฐฐํฌ ์‹œ๊ฐ„์— ์„ค์ •ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์€ ์ง„์ •ํ•œ ์‡ผ ์Šคํ† ํผ์ด๋ฉฐ ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด.

(์ฐจํŠธ) version ๋Š” ์ฐจํŠธ ๋ฒ„์ „์ด๊ณ  appVersion ๋Š” ๋„์ปค ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค. CI ํ”„๋กœ์„ธ์Šค์—์„œ docker ํƒœ๊ทธ๋Š” git ํƒœ๊ทธ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ฐ€๋Šฅํ•œ ํ•œ DRYํ•œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ java-springboot ์•ฑ์ด ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋กœ์ปฌ ์ฐจํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ผ๋ฐ˜ ์ฐจํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ tomcat ์•ฑ์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ springboot ์•ฑ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค). ๋‹ค๋ฅธ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ํ—น๊ตฌ๊ณ  ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์„ ํ†ตํ•ด ๋ฐฐํฌ๊ฐ€ ์ง„ํ–‰๋จ์— ๋”ฐ๋ผ ํ™˜๊ฒฝ์  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋Ÿฌํ•œ ๊ฐ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋Š” CI/CD๋ฅผ ํ†ตํ•ด ์ผ๋ฐ˜ ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ: helm upgrade release-name private-repo/generic-chart --values <environment>.yaml --set image.tag=<docker tag from build step> --namespace <environment> --install .Values.image.tag ๋ณด๋‹ค .Chart.AppVersion ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜์ง€๋งŒ ์กฐ์ง์— ํšจ์œจ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

helm ls ๋ฅผ ํ•˜๋ฉด CHART ์™€ APP VERSION ์žˆ์œผ๋ฏ€๋กœ ์ „์ฒด ์ฐจํŠธ ๋ฒ„์ „์ด ์•ฑ ๋ฒ„์ „๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ธธ์„ ๊ณ„์† ๊ฐ€๋ฉด ์‚ฌ๋žŒ๋“ค์ด ์†Œ์™ธ๋  ๋ฟ ์•„๋‹ˆ๋ผ ์‚ฌ๊ณ  ๋ฐฉ์‹์ด ๋„ˆ๋ฌด ์—„๊ฒฉํ•˜๊ณ  ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ถ”๊ตฌํ•˜๋Š” ๋ฐ”๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋Š ์‹œ์ ์—์„œ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ถ„๊ธฐ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ " image.* , nameOverride & fullnameOverride . image.*๋Š” deployment.yaml ๋“ฑ์—์„œ ํ•˜๋“œ ์ฝ”๋”ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." ๋งค์šฐ ๋น„์Šทํ•œ ์ด์œ ๋กœ.

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

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

@timothyclarke : ์—ฌ๊ธฐ์— ์„ค๋ช…๋œ helm upgrade ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ helm package ๋จผ์ € --version ๋ฐ --app-version ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค helm install ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ --set ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์„ค์น˜ ์žฌํ˜„์„ฑ์„ ๋†’์ด๋Š” CI ์•„ํ‹ฐํŒฉํŠธ๋กœ ์ฃผ๋ณ€์— ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ์ด๋™ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. "์ผ๋ฐ˜ ์ฐจํŠธ" ์ธก๋ฉด์€ ์—†์ง€๋งŒ ์ฐจํŠธ๊ฐ€ ์ผ๋ฐ˜์ ์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

+g<shortCommitSHA> ์™€ ๊ฐ™์ด Version ์— ๋นŒ๋“œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ธฐํšŒ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

#7517์— ๋”ฐ๋ผ CI ํ…Œ์ŠคํŠธ ํด๋Ÿฌ์Šคํ„ฐ์— ์„ค์น˜ํ•˜๊ธฐ ์ „์— image.tag๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ  ๋‚˜์ค‘์— ํŒจํ‚ค์ง•ํ•  ๋•Œ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋˜ ๋งŽ์€ sed ํ˜ธ์ถœ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‚˜์—๊ฒŒ ์„ค์น˜ ์‹œ ์•ฑ ๋ฒ„์ „(๋˜๋Š” ๋ฒ„์ „)์„ ์žฌ์ •์˜ํ•˜๋Š” ์œ„ํ—˜์€ ์ฐจํŠธ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค๋ ค๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์ด์ง€ ์•Š์•„ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ’ ์ง€์›์— ์–ด๋–ป๊ฒŒ๋“  ํ•ดํ‚น๋˜์ง€ ์•Š๋Š” ํ•œ helm get values -o yaml ์‚ฌ์šฉํ•˜์—ฌ ์ฐจํŠธ์˜ ํ˜„์žฌ ๊ตฌ์„ฑ์„ ์ถ”์ถœํ•  ๋•Œ ๊ฑฐ๊ธฐ์— ์—†์„ ๊ฒƒ์ด๋ฏ€๋กœ ๋ผ์ด๋ธŒ ์ฐจํŠธ ๋ฐฐํฌ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์–ป๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋งŒ๋“œ๋Š” _ํ•˜๋‚˜ ๋”_๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. helm install <some way to specify a particular package> --values <values from helm get values> , ์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ์ŠคํŠธ ์„ค์ •์—์„œ ํ”„๋กœ๋•์…˜์—์„œ ๋ณธ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋ ค๊ณ  ํ•  ๋•Œ.

๋‚˜์—๊ฒŒ ์„ค์น˜ ์‹œ ์•ฑ ๋ฒ„์ „(๋˜๋Š” ๋ฒ„์ „)์„ ์žฌ์ •์˜ํ•˜๋Š” ์œ„ํ—˜์€ ์ฐจํŠธ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค๋ ค๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์ด์ง€ ์•Š์•„ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ’ ์ง€์›์— ์–ด๋–ป๊ฒŒ๋“  ํ•ดํ‚น๋˜์ง€ ์•Š๋Š” ํ•œ helm get values -o yaml ์‚ฌ์šฉํ•˜์—ฌ ์ฐจํŠธ์˜ ํ˜„์žฌ ๊ตฌ์„ฑ์„ ์ถ”์ถœํ•  ๋•Œ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋จธ๋ฆฌ์— ๋ชป์„ ๋ฐ•์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฒซ๋‚ ๋ถ€ํ„ฐ values.yml ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ฒ ํ•™์  ์ฃผ์žฅ์„ ์ดํ•ดํ•˜์ง€๋งŒ ํ˜„์žฅ ์‹ค์Šต์„ ํ†ตํ•ด ์šฐ๋ฆฌ๋ฅผ ํฌํ•จํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ์ž„์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

values.yml ํ†ตํ•ด ์•ฑ ๋ฒ„์ „์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ์ฐจํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์—ฌ๊ธฐ์„œ ์„ค์ •ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋…ผ์˜๋˜์—ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ(๋น ๋ฅธ CTRL+F๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ ํ”์ ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ), ๋Œ€์ฒด ์†”๋ฃจ์…˜์œผ๋กœ appVersion ๋ชจ๋‘ ํ•จ๊ป˜ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ œ ์ƒ๊ฐ์—๋Š” ์ „์ฒด ํ˜ผ๋ž€์„ ํ”ผํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ appVersion ๋Š” ์ผ์ข…์˜ "ํŠน์ˆ˜" ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Prometheus์˜ ์ฐจํŠธ ๋ฒ„์ „ 123.5.6์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ appVersion: 2.17.1์ด ์žˆ์„ ๊ฒƒ์ด๋ฏ€๋กœ ๊ฐ€์‹œ์„ฑ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. helm ls ์‚ฌ์šฉํ•˜์—ฌ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ œ๊ณต๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ ๋ ˆ์ด๋ธ”์„ ํ†ตํ•ด? ์•„๋‹ˆ๋ฉด jsonPath ์ฟผ๋ฆฌ ์ˆ˜์žˆ๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ๋ชจ๋“  ์ž๋ฃŒ, ์ด์ƒ kubectl ์˜ˆ :

kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}'

๊ทธ๋Ÿฐ ๋‹ค์Œ helm ์ž์ฒด์— ์˜ํ•ด ์‹œํ–‰๋˜๋Š” ๋Œ€์‹  ๋ชจ๋ฒ” ์‚ฌ๋ก€๋กœ ์ง€์›์ด ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ๋ณดํ’€ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด appVersion ์˜ ๊ธฐ์กด ๊ตฌํ˜„์— ์˜์กดํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ๋„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ๊ฑธ์Œ ๋ฌผ๋Ÿฌ์„œ์„œ ์ •ํ™•ํžˆ appVersion ๊ฐ€ ์ถ”๊ฐ€๋œ ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ ๊นŒ์š”?

@bokysan ๊ทธ๊ฒƒ์€ ์ด์ „์— ์žˆ์—ˆ๋‹ค values.yaml ๊ทธ๊ฒƒ์€ ์ด๋™ํ–ˆ๋‹ค Chart.yaml I ์ „์ฒด์— ๋Œ€ํ•œ ์ถ”์ธกํ•˜๊ณ ์žˆ์–ด helm ls ์˜คํžˆ๋ ค ๋ช…๋ น ๋“ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ฐจํŠธ์™€ ๊ณ ์ • ํ‘œ์‹œ๊ธฐ ํƒœ๊ทธ๋ฅผ ๋ชจ๋‘ ๋ณด์—ฌ์ฃผ๋Š” ~์ฒ˜๋Ÿผ
kubectl get deployment <release name> -o jsonpath='{.spec.template.spec.containers[0].image}'

@TBBle ๊ท€ํ•˜์˜ ๊ฐ ์š”์ ์— ๋Œ€ํ•ด

initContainers ๋ฐ ์‚ฌ์ด๋“œ์นด ์‚ฌ์šฉ์„ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š” ์ฆ‰์‹œ appVersion์˜ ์ „์ œ๊ฐ€ ์™„์ „ํžˆ ๋ฌด๋„ˆ์ง‘๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ๋ก€๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜์— PHP ์‚ฌ์ด๋“œ์นด๊ฐ€ ์žˆ๋Š” nginx๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. nginx ๋ฐ php ํƒœ๊ทธ๋Š” ์ž์ฃผ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. PHP ์ปจํ…Œ์ด๋„ˆ/๋ฒ„์ „์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๋Š” initContainer ์ž…๋‹ˆ๋‹ค.
appVersion ๋ฅผ initContainer , php ์ปจํ…Œ์ด๋„ˆ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด nginx ๋กœ ์„ค์ •ํ•˜๊ณ  ์ด ์ค‘ ํ•˜๋‚˜๋งŒ ์„ ํƒํ•˜์—ฌ ์†์‹ค๋œ ์ •๋ณด๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์‚ฌ์šฉ์ž์—๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๋ฉด PHP ๋ฒ„์ „์ด์–ด์•ผ ํ•˜์ง€ ์•Š์„๊นŒ์š”? ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์ด ๊ด‘๊ณ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. appVersion์— ์„ธ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ๋„ฃ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์ž์œ  ํ…์ŠคํŠธ ํ•„๋“œ์ž…๋‹ˆ๋‹ค.

appVersion == ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ๊ฐ•์ œ ์ ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์ฐจํŠธ(์˜ˆ: ๋‘˜ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—†๋Š” ์ฐจํŠธ)์—์„œ ์ด๊ฒƒ์ด ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์š”์ ์€ ์•„๋‹ˆ์ง€๋งŒ imageVersion ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ ์—…์ŠคํŠธ๋ฆผ ์•ฑ์„ ํŒจํ‚ค์ง•ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์—ฌ๋Ÿฌ ์—…์ŠคํŠธ๋ฆผ ์•ฑ์˜ ํŒจํ‚ค์ง€๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝ์šฐ prometheus-operator's ์ฐจํŠธ์™€ ๊ฐ™์€ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์„ ํƒ์  ํ•„๋“œ์ด๋ฏ€๋กœ appVersion์„ ๋ฌด์‹œํ•˜์‹ญ์‹œ์˜ค.

์ฐจํŠธ ์†Œ์Šค๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ _์ผ๋ถ€_์ธ ๊ฒฝ์šฐ(์˜ˆ: Agones) appVersion ๋น„์›Œ๋‘๊ฑฐ๋‚˜ ์˜์กดํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ version ์—์„œ ๋ณต์‚ฌํ•˜์‹ญ์‹œ์˜ค.

์ด ์ค‘ ์–ด๋–ค ๊ฒƒ๋„ helm install -์‹œ๊ฐ„ ๊ฒฐ์ •์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด helm package ๋Š” "์„ค์น˜ ์‹œ ํƒ€์‚ฌ ์ฐจํŠธ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์—…์ŠคํŠธ๋ฆผ ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜"์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ์›Œํฌํ”Œ๋กœ์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํžˆ ๋Šฆ๊ณ  --values ๋˜๋Š” --set ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค --set ์ž…๋‹ˆ๋‹ค.

์†”์งํžˆ ๋งํ•ด์„œ, ์‹ค์ œ ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์€ ์•„๋งˆ๋„ " appVersion through tpl "์ผ ๊ฒƒ์ด๋ฏ€๋กœ .Values.image.tag ๋˜๋Š” ๊ท€ํ•˜์—๊ฒŒ ์ ํ•ฉํ•œ ๋ฌด์—‡์ด๋“  ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

appVersion == ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ๊ฐ•์ œ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ

๊ทธ๋Ÿฐ ๋‹ค์Œ ์šฐ๋ฆฌ๋Š” ์•„๋งˆ๋„ https://github.com/helm/helm/issues/7517์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์ด ์–ด๋””์—์„œ ๋น„๋กฏ๋œ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

ํ˜„์žฌ ํ˜•ํƒœ์—์„œ๋Š” ์ด APP VERSION ๊ฐ€ ์ „ํ˜€ ์—†๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ˜ผ๋ž€์„ ๊ฐ€์ ธ์˜ฌ ๋ฟ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ™์€ ํˆฌ๊ตฌ ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”> (80) ์„œ๋น„์Šค๋ฅผํ•˜๊ณ  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด์ด APP VERSION ์—์„œ helm upgrade -i ... ๋‚˜๋Š” ์šฐ๋ฆฌ์˜ ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์˜์›ํžˆ ํ•จ๊ป˜์žˆ์„ ๊ฒƒ์„ ๋ณผ 1.0 ์—ฌ๊ธฐ

๋‚˜๋Š” ๋˜ํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ helm list ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด

๋‚˜๋Š” ์ด ๋Œ€ํ™”๋ฅผ ์ฝ์„ ๋•Œ ์ฒ˜์Œ์—๋Š” ๋‚™๊ด€์ ์ด์—ˆ์ง€๋งŒ ๋งˆ์ง€๋ง‰์— ๊ฐ€์„œ ๋‹น์‹ ์ด ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ† ๋ก ํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋‹น์‹ ์˜ ์ƒ๊ฐ์„ ๊ฐ–๋„๋ก ๊ฐ•์š”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด๊ณ  ์ง€๊ธˆ ํฌ๋ง์„ ์žƒ์—ˆ์Šต๋‹ˆ๋‹ค :(.

helm list , helm history ๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ถœ๋ ฅ "CHART(version)" ๋ฐ "APP VERSION"์ด ์žˆ์œผ๋ฉด ๋งค์šฐ ์œ ์šฉํ•˜๋ฉฐ ๋‹ค์Œ์„ ์–ป๊ธฐ ์œ„ํ•ด ๋ช…๋ น์ค„ ์˜ต์…˜๊ณผ ์ถœ๋ ฅ ๊ตฌ๋ฌธ ๋ถ„์„์„ ๋” ๊นŠ์ด ํŒŒ๊ณ ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์‚ฌ์‹ค.

"CHART(version)"๊ณผ "APP VERSION"์ด ๋นŒ๋“œ ์‹œ ์—ฐ๊ฒฐ๋˜๋ฉด("helm package") ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ–๋Š” ์ „์ฒด ์ด์ ์ด ๋‹ค์†Œ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ์ฐจํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ฐจํŠธ ๋ฒ„์ „์„ ์ฆ๊ฐ€/์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๊ณ  ์•ฑ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋™์ผํ•œ ์ฐจํŠธ ๋ฒ„์ „์ด ๋งค์šฐ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ํฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. :-<

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

๋ฐฉ๊ธˆ ๋ฐฐ์šด ๊ฒƒ์ฒ˜๋Ÿผ "APP VERSION"์€ ์„ ํƒ ์‚ฌํ•ญ์ด๋ฏ€๋กœ ์ผ๋ถ€ ์‚ฌ์šฉ์ž ์ง€์ • ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด {{ Chart.appVersion }} ๋Œ€์‹  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ helm list ๋Š” ๋œ ์œ ์ตํ•ฉ๋‹ˆ๋‹ค. :-<

์‚ฌ์šฉ์ž(๊ฐœ๋ฐœ์ž) ๊ด€์ ์—์„œ:

  • ์„ค์น˜ ์‹œ ์ผ๋ถ€ ๋ฒ„์ „ ์†์„ฑ/ํ”Œ๋ž˜๊ทธ/๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋Šฅ
  • "XX ๋ฒ„์ „" ๋ ˆ์ด๋ธ”์ด ์žˆ๋Š” helm ๋ชฉ๋ก/๊ธฐ๋ก ์ถœ๋ ฅ์—์„œ โ€‹โ€‹ํ•ด๋‹น ๋ฒ„์ „ ์†์„ฑ/ํ”Œ๋ž˜๊ทธ/๊ฐ’์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ

์šฐ๋ฆฌ๊ฐ€ ๊ทธ ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

"CHART(version)"๊ณผ "APP VERSION"์ด ๋นŒ๋“œ ์‹œ ์—ฐ๊ฒฐ๋˜๋ฉด("helm package") ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ–๋Š” ์ „์ฒด ์ด์ ์ด ๋‹ค์†Œ ์†์‹ค๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋ถˆํ˜‘ํ™”์Œ์˜ ํ•ต์‹ฌ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์•ฑ ๋ฒ„์ „์˜ ์ด์ ์€ ํ˜„์žฌ ์„ค์ •์—์„œ ์˜๋„ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์ฐจํŠธ ๋ฒ„์ „์€ ์ „์ฒด ์ฐจํŠธ์˜ ๋ฒ„์ „์ด ์•„๋‹ˆ๋ผ ์ „์ฒด ์ฐจํŠธ์˜ ๋ฒ„์ „์ด๊ธฐ ๋•Œ๋ฌธ์— _ํ•ด๋‹น ์ฐจํŠธ ๋ฒ„์ „์— ๋Œ€ํ•œ ๋ž˜ํ•‘๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฒ„์ „์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฐจํŠธ์˜ ํ…œํ”Œ๋ฆฟ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. "์šฐ๋ฆฌ๋Š” Helm ์ฐจํŠธ์˜ ๋ฒ„์ „ ~XY๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค"์™€ ๊ฐ™์€ ๋ชจ๋“  ๋ฌธ์žฅ์— "์•„, AppVersion์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค์ง€ ๋งˆ์‹ญ์‹œ์˜ค"๋ฅผ ๋์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค.

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

์œ ์Šค ์ผ€์ด์Šค @pniederlag๋ฅผ ๋“ค์–ด์ด ํ•  ์ˆ˜์žˆ๋Š”, ๋ฌ˜์‚ฌํ•˜๊ณ  appVersion ํ• ์„ Values ํ•ญ๋ชฉ์—์„œ ํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ด๋ผ๊ณ  ํ…œํ”Œ๋ฆฟ์„ helm list ์›ํ•˜๋Š” ๋ฌด์—‡, ํ•œ ์ฐจํŠธ ์ง€์›์ด ํ•„์š” ์•Š๋Š” ํ•œ ๊ทธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „(์•„๋งˆ๋„ ์ปจํ…Œ์ด๋„ˆ ํƒœ๊ทธ)์€ ๋‹ค๋ฅธ ๋ชจ๋“  "์„ค์น˜ ์‹œ ๋ณ€๊ฒฝ๋จ" ๊ตฌ์„ฑ ์˜ต์…˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ --set ๋˜๋Š” --values ๋ฅผ ํ†ตํ•ด ์„ค์น˜ ์‹œ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ AppVersion ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์Šค ๋ฒ„์ „๊ณผ AppVersions๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์„ ์„ค์ •ํ•˜๋ ค๋ฉด - ๋‚ด๊ฐ€ ์ „ํ™”๋ฅผํ•ด์•ผํ•˜๋Š” helm package ๋ช…์‹œ ์ ์œผ๋กœ ์‚ฌ์ „์˜ helm upgrade --install ๋‘ ๋ฒ„์ „ ์ธ ์„ธํŠธ์™€ ๋กœ์ปฌ ํƒ€๋ฅด ์•„์นด์ด๋ธŒ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด์ œ helm-secrets ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ณ ...
๊ทธ๋ฆฌ๊ณ  ๋ž˜ํผ๊ฐ€ helm package ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!

๊ทธ๋ž˜์„œ - ์ง€๊ธˆ์€?
๋ชจ๋“  ๋ฒ„์ „์˜ ์ง€์› ๋ฐ ํ๋ฆ„์„ ์ค‘๋‹จํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
๋น„๋ฐ€์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
์–ด๋–ค ์•„์ด๋””์–ด?

์‹ค์ œ๋กœ๋Š” helm-secrets ๋Œ€ํ•œ ๋ฌธ์ œ๊ฐ€ ๋” ๋งŽ์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ๋…ผ์˜๋œ --set app-version ๋Šฅ๋ ฅ๊ณผ๋„ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด - helm package ๋ฅผ ํ˜ธ์ถœํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

UPD ์•„, ์ž ๊น๋งŒ... ์•„์ง helm secrets upgrade chart.tgz -f secrets.yaml ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...
๊ดœ์ฐฎ์•„.
๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ --set app-version ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด +1 ํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋ž˜์„œ - ์ง€๊ธˆ์€?
๋ชจ๋“  ๋ฒ„์ „์˜ ์ง€์› ๋ฐ ํ๋ฆ„์„ ์ค‘๋‹จํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
๋น„๋ฐ€์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
์–ด๋–ค ์•„์ด๋””์–ด?

๋‘ ๊ฐœ์˜ ํŒจํ‚ค์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์ฐจํŠธ๋งŒ ์žˆ๋Š” helm ํŒจํ‚ค์ง€์ด๊ณ  env ๊ฐ’๊ณผ secret ํŒŒ์ผ์€ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ์ฐจํŠธ ๋ฒ„์ „์€ ์šฐ๋ฆฌ์—๊ฒŒ ์•„๋ฌด ์˜๋ฏธ๊ฐ€ ์—†๊ณ  ์ฐจํŠธ ๋ฒ„์ „๋„ ์•ฑ ๋ฒ„์ „ ๊ตฌ๋ฌธ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„์„ chart-{app-version}.tgz ํ•ฉ๋‹ˆ๋‹ค. ์•ฑ ์—…๋ฐ์ดํŠธ์—๋Š” ์ž ์žฌ์ ์ธ ์ฐจํŠธ ์—…๋ฐ์ดํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค(git ํƒœ๊ทธ ์ง€์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๋™์ผํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ).

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ฐจํŠธ tgz, ๊ฐ’ yaml ๋ฐ ์•”ํ˜ธํ™”๋œ ๋น„๋ฐ€ ํŒŒ์ผ์„ ํฌํ•จํ•˜๋Š” ํ™˜๊ฒฝ๋ณ„ ๋‘ ๋ฒˆ์งธ tgz, chart-{app-version}-{env}.tgz ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์—๋Š” helm-secrets ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•  ์ž๋™ํ™”๋œ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ํƒœ๊ทธ, ์•ฑ ๋ฐ ํ™˜๊ฒฝ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ๊ฐ’์ด ํฌํ•จ๋œ "package.yaml"๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

sed -i -E "s/^appVersion: (.*)/appVersion: ${deploy.project.version}/" ${chartPath}/Chart.yaml

๊นŒ๋‹ค๋กญ์ง€๋งŒ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@bvis
ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์˜ ๋ฌธ์ œ๋Š” CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ฐจํŠธ๋ฅผ ํŽธ์ง‘ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ค‘์•™ ์ง‘์ค‘์‹ ์ฐจํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ helm pull repo/chart --untar

Chart.yaml/appVersion์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ฃผ์ž…ํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ? ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ CI/CD Helm์— ์—„์ฒญ๋‚œ ๋ถ€์ŠคํŠธ๋ฅผ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@jakovistuk ๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ, ์ปจํ…Œ์ด๋„ˆ ๋ฒ„์ „์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด appVersion ์„ ์‚ฌ์šฉํ•˜๋Š” nginx-ingress/Chart.yaml ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด Chart.yaml์„ ํ†ตํ•ด ์ง์ ‘ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค...

๊ฝค ์˜ค๋žซ๋™์•ˆ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊นŠ์ด ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์ •๋ง ์–ด๋ฆฌ์„์€ ์งˆ๋ฌธ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ Helm CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ appVersion์„ ์žฌ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด 'appVersion' ํ•„๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฌป๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ์›๋ž˜ ์˜๋„/์š”์ฒญ์€ โ€”version์— ๋Œ€ํ•œ ๋Œ€์ฒดํ’ˆ์œผ๋กœ โ€”app-version์„ ํ—ˆ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ 'helm fetch โ€”app-version=v0.15.0'์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  Helm์ด ์ตœ์‹  ์ฐจํŠธ ๋ฒ„์ „์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. v0.15.0์„ appVersion์œผ๋กœ ์ง€์ •ํ•˜๊ณ  ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ/์ฐจํŠธ(cert-manager)์—์„œ ์šฐ๋ฆฌ๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๋Š”์ง€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฏ€๋กœ ์ฐจํŠธ ๋ฒ„์ „ ๋Œ€์‹  ์•ฑ ๋ฒ„์ „ ์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์ž์—ฐ์Šค๋Ÿฌ์šด ์„ค์น˜ ๊ฒฝํ—˜์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์ด ๋ฌธ์ œ๋Š” 2๋…„ ์ „์— ๊ณต๊ฐœ๋˜์—ˆ์œผ๋ฉฐ ๊ทธ ์ดํ›„๋กœ ์ด ๋‘ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ๋™๊ธฐํ™”/์ž ๊ธˆ ๋‹จ๊ณ„๋กœ ์œ ์ง€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๋…„ ํ›„ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„ ๋†€๋ผ์šธ ์ •๋„๋กœ ์‰ฝ๊ณ  ๊ณ ํ†ต์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ์šด ๊ณต์‹ ๋ฆด๋ฆฌ์Šค๋ฅผ ์œ„ํ•ด ๋ช‡ ์ฃผ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ๋˜ํ•œ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๊ธฐ๋Šฅ์ด ์™ธ๋ถ€ ๋„๊ตฌ๋‚˜ ๋ž˜ํผ๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๊ณ  ์•„๋งˆ๋„ ๊ฐ€์žฅ ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
Helm, ํŠนํžˆ OCI ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•  ๋•Œ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ๋” ๊นŒ๋‹ค๋กญ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€(๋˜๋Š” ๊ทธ๋ ‡์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€) ๋‚ด CI/CD(GitLab)์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•ฑ ๋ฒ„์ „์œผ๋กœ ์ฐจํŠธ๋ฅผ ํŒจํ‚ค์ง•ํ•œ ๋‹ค์Œ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
Chart ๋ฒ„์ „์ด appVersion๊ณผ ๋™์ผํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

deploy:
  image: alpine/helm:3.2.4
  stage: deploy
  environment:
    name: ${ENV}
  script:
    - helm package --app-version=${CI_COMMIT_TAG} --version=${CI_COMMIT_TAG} ${NAMESPACE}
    -  | 
       helm upgrade -i --wait ${CI_PROJECT_NAME} ./${NAMESPACE}-${CI_COMMIT_TAG}.tgz \
       --set image.repository="${CI_REGISTRY_IMAGE}" \
       --set image.tag="${CI_COMMIT_TAG}" \
       --set-string ingress.enabled="${INGRESS}" \
       --set service.port="${CONTAINER_PORT}" \
       --set service.targetPort="${CONTAINER_PORT}" \
       --set dc="${CI_ENVIRONMENT_NAME}" \
       --set project="${CI_PROJECT_NAME}" \
       --namespace ${NAMESPACE}
    - helm history ${CI_PROJECT_NAME} -n ${NAMESPACE}
  tags:
    - kubernetes
  only:
    - tags

image.tag ๋ฅผ {{ .Chart.AppVersion }} ๋กœ ๊ธฐ๋ณธ ์„ค์ •ํ•˜๋ฉด ์„ค์น˜ ์ค‘์— --set ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ์ด๋ฏธ ์ •ํ™•ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” Docker ์ด๋ฏธ์ง€์— SHA1 ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜์–ด AppVersion์ด Docker ์ด๋ฏธ์ง€ ํƒœ๊ทธ์™€ ์ผ์น˜ํ•˜๊ณ  ๋ฒ„์ „์ด ์ž๋™ ๋นŒ๋“œ SemVer์ธ ๊ฒฝ์šฐ ์ž๋™ ๋นŒ๋“œ์—์„œ๋„ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

AppVersion์ด SemVer์ธ ๊ฒฝ์šฐ ๋ฒ„์ „์ด AppVersion๊ณผ ๋™์ผํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํŒ€์—์„œ ์ƒ์‚ฐํ•œ ํŒจํ‚ค์ง€์˜ ๊ฒฝ์šฐ AppVersion์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ Version์œผ๋กœ ์„ค์ •๋˜๋Š” image.tag์™€ ๊ฐ™์ด AppVersion์„ ์ฐพ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํฐ ์ฐจ์ด๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š” ๋ฆด๋ฆฌ์Šค์˜ ๊ฒฝ์šฐ helm package ๋Œ€ํ•œ ์ธ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์ค„์–ด๋“ค ๋ฟ์ด์ง€๋งŒ ์ฐจํŠธ๊ฐ€ ํŒจํ‚ค์ง•ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ SCM์—์„œ ๋นŒ๋“œ๋œ ๊ฒฝ์šฐ์—๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜์œ„ ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” @TBBle

image.tag๊ฐ€ ํ•˜์œ„ ์ฐจํŠธ์— ์žˆ์ง€๋งŒ ์ƒ์œ„ ์ฐจํŠธ์˜ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ๋งค์šฐ ์–ด์ƒ‰ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ https://github.com/googleforgames/open-match/ ์˜ Helm ์ฐจํŠธ์—์„œ ์ด ๋ ˆ์ด์•„์›ƒ์„ ์ •ํ™•ํžˆ ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฌธ์ œ์˜ ํ•˜์œ„ ์ฐจํŠธ๋ฅผ ๋‹ค์‹œ ๊ธฐ๋ณธ ์ฐจํŠธ๋กœ ๋กค๋งํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ฐจํŠธ๋Š” ์ƒ์œ„ ์ฐจํŠธ ๋™์ž‘์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๊ฒฉ๋ฆฌ/์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹จ์œ„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์œ„ ์ฐจํŠธ์—๋Š” ์ž์ฒด ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๊ฐ€ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ•˜์œ„ ์ฐจํŠธ์ธ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Open Match์˜ ๊ฒฝ์šฐ ํ•˜์œ„ ์ฐจํŠธ๊ฐ€ ์‚ฌ์šฉ๋˜์–ด XXX.enable ๋ฅผ values.yaml์˜ ๋ฐ”๋กœ ๊ฐ€๊ธฐ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ ๋ฒˆ์— ๋งŽ์€ ํ•ญ๋ชฉ์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ์  ๋ฌธ์ œ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. . Open Match์˜ ํ•˜์œ„ ์ฐจํŠธ๋Š” ๋ชจ๋‘ ํ…œํ”Œ๋ฆฟ์ด๋ผ๋Š” ์ƒ์œ„ ์ฐจํŠธ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  0.0.0-dev ์˜ ๋กœ์ปฌ ๋ฒ„์ „๋„ ์žˆ์œผ๋ฏ€๋กœ ๋ญ”๊ฐ€ ์ž˜ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์€ ๋‘ ๊ฐ€์ง€ ์ฝ”๋“œ ๋ƒ„์ƒˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ๋‹น์‹ ์ดํ•˜๊ณ ์žˆ๋Š” ๊ด€์ฐฐ์„ ์˜คํ•ดํ–ˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@haimari ๋ถˆํ–‰ํžˆ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(https://github.com/helm/helm/issues/6921 ๊ด€๋ จ ?):

> helm package $DIR/deployment/chart --app-version="1111e8" --version="3454e5" --namespace stage
Error: Invalid Semantic Version

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

> helm package $DIR/deployment/chart --app-version="0.0.0-1111e8" --version="0.0.0-3454e5" --namespace stage
Successfully packaged chart and saved it to: /Users/aws/service-0.0.0-3454e5.tgz

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์กฐ์ฐจ๋„ (๊ทธ๋Ÿฌ๋‚˜ ๋”๋Ÿฌ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค):

> helm package $DIR/deployment/chart --app-version="0-1111e8" --version="0-3454e5" --namespace stage
Successfully packaged chart and saved it to: /Users/aws/service-0-3454e5.tgz

helm ๋ฒ„์ „ version.BuildInfo{๋ฒ„์ „:"v3.4.0", GitCommit:"7090a89efc8a18f3d8178bf47d2462450349a004", GitTreeState:"dirty", GoVersion:"go1.15.3"}

@haimari ์˜ ์†”๋ฃจ์…˜์€ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ CI ํŒŒ์ดํ”„๋ผ์ธ์—์„œ semver ํ˜ธํ™˜ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@a0s : ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

helm package $DIR/deployment/chart --app-version="<container image tag>" --version="<semver version>"

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ํƒœ๊ทธ ๊ฐ’์„ {{ Values.image.tag | default .Chart.AppVersion | default .Chart.Version ์™€ ๊ฐ™๊ฒŒ ํ•˜์—ฌ

๊ท€ํ•˜์˜ ์˜ˆ์—๋Š” ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ git ๋ฒ„์ „์œผ๋กœ ๋ณด์ด๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ? ํ•˜๋‚˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์šฉ์ด๊ณ  ํ•˜๋‚˜๋Š” ์ฐจํŠธ์šฉ์ž…๋‹ˆ๊นŒ?

SemVer๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด semver๋Š” ์ˆœ์„œ ์ง€์ •์„ ์˜๋ฏธํ•˜๊ณ  git commit SHA๋Š” ์ •๋ ฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— git commit SHA๋ฅผ semver์˜ ์˜๋ฏธ ์žˆ๋Š” ๋ถ€๋ถ„์— ๋„ฃ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ 0.0.1-alpha.<build-id>+g<gitcommitsha> ์™€ ๊ฐ™์€ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ <build-id> ๋Š” CI ์‹œ์Šคํ…œ์˜ ํŒŒ์ดํ”„๋ผ์ธ ๋˜๋Š” ์ž‘์—… ID์™€ ๋น„์Šทํ•˜๋ฏ€๋กœ ํ•ญ์ƒ ํ”„๋กœ์ ํŠธ์— ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์š”์ฒญํ•  ๋•Œ ํ•ญ์ƒ ์ตœ์‹  ๋นŒ๋“œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SemVer์—์„œ - ํ•˜๋Š” ๊ฒƒ์€ ํ•ด๋‹น ๋ฒ„์ „์˜ ์‹œํ—˜ํŒ์ž„์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ 0.0.1-<anything> ๋Š” 0.0.0๊ณผ 0.0.1 ๋ฆด๋ฆฌ์Šค ์‚ฌ์ด์— ์žˆ์Šต๋‹ˆ๋‹ค. + ๋’ค์˜ ๋ถ€๋ถ„์€ ๋นŒ๋“œ ์ •๋ณด์ด๋ฉฐ ์ •๋ ฌ์„ ์œ„ํ•ด ๋ฌด์‹œ๋˜๋ฏ€๋กœ git SHA ๋˜๋Š” ๋ถ„๊ธฐ ์ด๋ฆ„ ๋˜๋Š” ๊ธฐํƒ€ ์ •๋ ฌ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ถ”์  ์ •๋ณด๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ํ•จ๊ป˜ 0-3454e5 ๋Š” SHA๊ฐ€ 2 ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ์ปค๋ฐ‹๋ณด๋‹ค ์ตœ์‹  ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค(์˜ˆ: 0-2764e1 .

๊ท€ํ•˜์˜ ์˜ˆ์—๋Š” ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ git ๋ฒ„์ „์œผ๋กœ ๋ณด์ด๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ? ํ•˜๋‚˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์šฉ์ด๊ณ  ํ•˜๋‚˜๋Š” ์ฐจํŠธ์šฉ์ž…๋‹ˆ๊นŒ?

์˜ˆ, ์•ฑ๊ณผ ์ฐจํŠธ - ๋‘ ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์š”์ฒญํ•  ๋•Œ ํ•ญ์ƒ ์ตœ์‹  ๋นŒ๋“œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์›ํ•˜์ง€ ์•Š๋Š”(๊ทธ๋ฆฌ๊ณ  ์ƒ์ƒํ•  ์ˆ˜๋„ ์—†๋Š”) ์ตœ์‹  ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?

0.0.1-alpha.<build-id>+g<gitcommitsha>

์ด ๋ฌธ์ž์—ด(๋ณด๊ฐ„ ํ›„)์€ ํ‘œ์ค€ helm list ์ถœ๋ ฅ์˜ ํ•œ ์—ด์— ๋งž์ถ”๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๊ธด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. :)

๋‚˜๋Š” ํ•ญ์ƒ ์„ค์น˜ํ•˜๋ ค๋Š” ์•ฑ์˜ ๋ฒ„์ „(sha ํ•ด์‹œ)์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค( --set ์ธ์ˆ˜๋กœ ์ „๋‹ฌ). ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ํ•ญ์ƒ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ฐจํŠธ์˜ ๋ฒ„์ „์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค( @haimari๊ฐ€ ์„ค๋ช… git checkout chart && helm pack && helm upgrade .tar.gz ci/cd์—์„œ ๋กœ์ปฌ๋กœ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค)

๋ฌด์—‡์ด ์ž˜๋ชป๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
1) ์ผ๋ฐ˜ helm upgrade ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋‹ค์‹œ ์‹œ๋„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค(์•ฑ์˜ ๋‹ค๋ฅธ sha ์ปค๋ฐ‹ ์‚ฌ์šฉ - 99%)(๋˜๋Š” ๋Œ€์‹  --atomic ์‚ฌ์šฉ)
2) ์ˆ˜๋™ ๋กค๋ฐฑ: helm rollback <RELEASE_NAME> ๋˜๋Š” CI/CD๋ฅผ ํ†ตํ•œ ๋ฐฐํฌ ์ด์ „ ์ƒค ์ปค๋ฐ‹.

๋‚ด๊ฐ€ ๋†“์นœ ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

PS ์†”์งํžˆ ๋งํ•ด์„œ, ๋‚˜๋Š” ์ •๋ณด ๋ชฉ์ ์œผ๋กœ๋งŒ ๋ฒ„์ „๊ณผ ์•ฑ ๋ฒ„์ „์—์„œ ์งง์€ ์ƒค ๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค( helm list ๋™์•ˆ)

๋‹จ์ง€ ์ •๋ณด ์ œ๊ณต์„ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๋ฉด SemVer์—์„œ - ์•„๋‹ˆ๋ผ + ๋’ค์— ์˜ต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค ์ˆœ์„œ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ Helm ์ฐจํŠธ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์— _์ ˆ๋Œ€_ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ์ฐจํŠธ ๋˜๋Š” ์•ฑ์ด ์•„์ง SemVer'd๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 0+g<commitsha> ๋Š” ์œ ํšจํ•œ SemVer์ž…๋‹ˆ๋‹ค(0.0.0์— ํ•ด๋‹น).

์˜ˆ๋ฅผ ๋“ค์–ด Open Match์˜ Helm ์ž๋™ ๋นŒ๋“œ ์ฐจํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ํ˜„์žฌ ๋ชจ๋‘ 0.0.0-dev ์ด๊ณ , ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ์„ค์น˜ํ•œ ๊ฒƒ์„ ๋ณด๊ณ  ์žˆ๋‹ค๋ฉด ์ ์–ด๋„ ๋‹น์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” _what_ ๋งˆ์Šคํ„ฐ ๋นŒ๋“œ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ๊ทธ 0.0.0-dev+g<commitsha> ๋ฅผ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค .

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰