Helm ์žฅ์น˜์™€ ๊ทธ ํ•จ์ •

Helm ์žฅ์น˜์™€ ๊ทธ ํ•จ์ •
Typhon ํ™”๋ฌผ ์šด์†ก์ฐจ ์ปจ์…‰, Anton Swanepoel

์ œ ์ด๋ฆ„์€ Dmitry Sugrobov์ด๊ณ  Leroy Merlin์˜ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” Helm์ด ํ•„์š”ํ•œ ์ด์œ , Helm์ด Kubernetes ์ž‘์—…์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•, ์„ธ ๋ฒˆ์งธ ๋ฒ„์ „์—์„œ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ, ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„ ์—†์ด ํ”„๋กœ๋•์…˜์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํšŒ์˜์—์„œ์˜ ์—ฐ์„ค์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ์š”์•ฝ์ž…๋‹ˆ๋‹ค. @Kubernetes ์ปจํผ๋Ÿฐ์Šค by Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ - ์ฝ๊ธฐ ์‹ซ์œผ์‹œ๋ฉด ์˜์ƒ์„ ์‹œ์ฒญํ•ด์ฃผ์„ธ์š”.

ํ”„๋กœ๋•์…˜์—์„œ Kubernetes๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

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

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

Kubernetes์˜ ๋Œ€์šฉ๋Ÿ‰ YAML ํŒŒ์ผ์˜ ์ €์ฃผ

Kubernetes์—์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฐํฌ, ์„œ๋น„์Šค, Ingress, ConfigMap, Secrets์šฉ์œผ๋กœ ์ตœ์†Œ XNUMX๊ฐœ์˜ YAML ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋‹ค์Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๋™์ผํ•œ jambs ํŒจํ‚ค์ง€๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์„ธ ๋ฒˆ์งธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•˜๋Š” ์‹์œผ๋กœ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ ์ˆ˜์— ํ™˜๊ฒฝ ์ˆ˜๋ฅผ ๊ณฑํ•˜๋ฉด ์ด๋ฏธ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ํŒŒ์ผ์„ ์–ป๊ฒŒ ๋˜๋ฉฐ ์ด๋Š” ์•„์ง ๋™์  ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Helm ์žฅ์น˜์™€ ๊ทธ ํ•จ์ •
Helm์˜ ํ•ต์‹ฌ ๊ด€๋ฆฌ์ž์ธ Adam Reese๋Š” "Kubernetes์˜ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ"๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. YAML ๋ณต์‚ฌ - YAML ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  2. YAML ๋ถ™์—ฌ๋„ฃ๊ธฐ - ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.
  3. ๋“ค์—ฌ์“ฐ๊ธฐ ์ˆ˜์ • - ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฐ˜๋ณต - ๋‹ค์‹œ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์ด ์˜ต์…˜์€ ์ž‘๋™ํ•˜์ง€๋งŒ YAML ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณต์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฃผ๊ธฐ๋ฅผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด Helm์ด ๋ฐœ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ—ฌ๋ฆ„์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋จผ์ € ํ—ฌ๋ฆ„ - ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž, ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ๊ณ  ์„ค์น˜ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด MongoDB๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด ๊ณต์‹ ์›น ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•˜์—ฌ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. helm install stable/mongodb.

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

์…‹์งธ, ํ—ฌ๋ฆ„ - ๋ฐฐํฌ ๋งˆ์Šคํ„ฐ. ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค์น˜, ๋กค๋ฐฑ ๋ฐ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Helm ์žฅ์น˜์™€ ๊ทธ ํ•จ์ •

Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•

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

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

๋˜ํ•œ value.yaml ๊ฐ’์ด ์žˆ๋Š” ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ…œํ”Œ๋ฆฟ์— ์‚ฝ์ž…๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋„ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.

Helm ์žฅ์น˜์™€ ๊ทธ ํ•จ์ •
Helm์˜ ๋‘ ๋ฒˆ์งธ ๋ฒ„์ „์—๋Š” Tiller๋ผ๋Š” ์ถ”๊ฐ€ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. Kubernetes ์™ธ๋ถ€์— ๋งค๋‹ฌ๋ ค Helm ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ , ํ˜ธ์ถœ๋˜๋ฉด ํ•„์š”ํ•œ ๊ฐ’์„ ํ…œํ”Œ๋ฆฟ์— ๋Œ€์ฒดํ•˜์—ฌ Kubernetes๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

Helm ์žฅ์น˜์™€ ๊ทธ ํ•จ์ •
Helm 3์€ ๋” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ ํ…œํ”Œ๋ฆฟ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋Œ€์‹  ์ด์ œ ์ •๋ณด๊ฐ€ Helm ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์™„์ „ํžˆ ์ฒ˜๋ฆฌ๋˜์–ด Kubernetes API๋กœ ์ง์ ‘ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋‹จ์ˆœํ™”๋กœ ์ธํ•ด ํด๋Ÿฌ์Šคํ„ฐ ๋ณด์•ˆ์ด ํ–ฅ์ƒ๋˜๊ณ  ๋กค์•„์›ƒ ๊ณ„ํš์ด ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค. helm install. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฆด๋ฆฌ์Šค์˜ ์ด๋ฆ„์„ ํ‘œ์‹œํ•˜๊ณ  value.yaml์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์—๋Š” ์ฐจํŠธ๊ฐ€ ์žˆ๋Š” ์ €์žฅ์†Œ์™€ ์ฐจํŠธ ์ด๋ฆ„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” ๊ฐ๊ฐ "lmru"์™€ "bestchart"์ž…๋‹ˆ๋‹ค.

helm install --name bestapp --values values.yaml lmru/bestchart

๋ช…๋ น์€ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋Œ€์‹  ๋‹ค์‹œ ์‹คํ–‰๋  ๋•Œ install ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ upgrade. ๋‹จ์ˆœํ™”๋ฅผ ์œ„ํ•ด ๋‘ ๊ฐœ์˜ ๋ช…๋ น ๋Œ€์‹  ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. upgrade ์ถ”๊ฐ€ ํ‚ค ํฌํ•จ --install. ์ฒ˜์Œ ์‹คํ–‰๋˜๋ฉด Helm์€ ๋ฆด๋ฆฌ์Šค๋ฅผ ์„ค์น˜ํ•˜๋ผ๋Š” ๋ช…๋ น์„ ๋ณด๋‚ด๊ณ  ๋‚˜์ค‘์— ์—…๋ฐ์ดํŠธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

helm upgrade --install bestapp --values values.yaml lmru/bestchart

Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ๋•Œ์˜ ํ•จ์ •

์ด์•ผ๊ธฐ์˜ ์ด ์‹œ์ ์—์„œ ์ €๋Š” ์ฒญ์ค‘๊ณผ ํ•จ๊ป˜ ๋ฐฑ๋งŒ์žฅ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์„ ์—ฐ๊ธฐํ•˜๊ณ  ์žˆ์œผ๋ฉฐ Helm์ด ์•ฑ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋””์˜ค ๋ณด๊ธฐ.

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

๋ฐฉ๋ฒ• 1. ๋งˆ์ง€๋ง‰ ์‹คํ–‰ ์ดํ›„ ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ๋งˆ์„ธ์š”.

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

์—ฌ๊ธฐ์™€ ์•„๋ž˜์—๋Š” ์ตœ์‹  ํƒœ๊ทธ๊ฐ€ ์˜ˆ์‹œ๋กœ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜๋ฉด Kubernetes๋Š” imagePullPolicy ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ด€๊ณ„์—†์ด ๋งค๋ฒˆ docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ์ œํ’ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ถ€์ž‘์šฉ์„ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• 2. ์ด๋ฏธ์ง€์˜ LABEL ์—…๋ฐ์ดํŠธ

๊ฐ™์€ ๊ธ€์— ์ ํžŒ๋Œ€๋กœ ์„ ์  ์„œ๋ฅ˜ ๋น„์น˜, "Helm์€ ๋งˆ์ง€๋ง‰ ๋ฆด๋ฆฌ์Šค ์ดํ›„ ๋ณ€๊ฒฝ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค." ์ด์— ๋Œ€ํ•œ ๋…ผ๋ฆฌ์  ์˜ต์…˜์€ ๋„์ปค ์ด๋ฏธ์ง€ ์ž์ฒด์—์„œ LABEL์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Helm์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฏธ์ง€๋ฅผ ์กฐ์‚ฌํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ „ํ˜€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฏธ์ง€์˜ ๋ ˆ์ด๋ธ”์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ Helm์€ ์ด์— ๋Œ€ํ•ด ์•Œ์ง€ ๋ชปํ•˜๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—…๋ฐ์ดํŠธ ๋ช…๋ น์€ Kubernetes๋กœ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• 3: ํ‚ค ์‚ฌ์šฉ --force

Helm ์žฅ์น˜์™€ ๊ทธ ํ•จ์ •
์„ค๋ช…์„œ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ํ•„์š”ํ•œ ํ‚ค๋ฅผ ์ฐพ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ด์‡ ๊ฐ€ ๊ฐ€์žฅ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค --force. ๋ช…๋ฐฑํ•œ ์ด๋ฆ„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋™์ž‘์€ ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฐ•์ œํ•˜๋Š” ๋Œ€์‹  ์‹ค์ œ ๋ชฉ์ ์€ FAILED ์ƒํƒœ์ธ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ณต์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ช…๋ น์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. helm delete && helm install --replace. ๋Œ€์‹  ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค --force, ์ด๋Ÿฌํ•œ ๋ช…๋ น์˜ ์ˆœ์ฐจ์  ์‹คํ–‰์„ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ. ์•ˆํƒ€๊น๊ฒŒ๋„ Helm์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๋ผ๊ณ  ์ง€์‹œํ•˜๋ ค๋ฉด ์ด ํ‚ค๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• 4. Kubernetes์—์„œ ์ง์ ‘ ๋ ˆ์ด๋ธ” ๋ณ€๊ฒฝ

Helm ์žฅ์น˜์™€ ๊ทธ ํ•จ์ •
๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ง์ ‘ ๋ ˆ์ด๋ธ” ์—…๋ฐ์ดํŠธ kubectl edit - ๋‚˜์œ ์ƒ๊ฐ. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์›๋ž˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์ „์†ก๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ์ •๋ณด ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฐฐํฌ ์ค‘ Helm์˜ ๋™์ž‘์€ ํ•ด๋‹น ๋ฒ„์ „๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Helm 2๋Š” ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉฐ Helm 3์€ ์ƒˆ ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด Helm์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ—ฌ๋ฆ„์€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

๋งˆ์ง€๋ง‰ ๋ฆด๋ฆฌ์Šค ์ดํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Helm์€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Kubernetes์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
  • ์ƒˆ๋กœ์šด value.yaml ๋ฐ ํ˜„์žฌ ์ฐจํŠธ
  • Helm์˜ ๋‚ด๋ถ€ ๋ฆด๋ฆฌ์Šค ์ •๋ณด์ž…๋‹ˆ๋‹ค.

๋” ๊ถ๊ธˆํ•œ ์ : Helm์€ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ๋‚ด๋ถ€ ์ •๋ณด๋ฅผ ์–ด๋””์— ์ €์žฅํ•ฉ๋‹ˆ๊นŒ?๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ helm history, Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜๋œ ๋ฒ„์ „์— ๋Œ€ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

Helm ์žฅ์น˜์™€ ๊ทธ ํ•จ์ •
์ „์†ก๋œ ํ…œํ”Œ๋ฆฟ ๋ฐ ๊ฐ’์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Helm ์žฅ์น˜์™€ ๊ทธ ํ•จ์ •
Helm์˜ ๋‘ ๋ฒˆ์งธ ๋ฒ„์ „์—์„œ ์ด ์ •๋ณด๋Š” "OWNER=TILLER" ๋ ˆ์ด๋ธ”๋กœ ํ‘œ์‹œ๋œ ConfigMap์˜ Tiller๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ๋™์ผํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค(๊ธฐ๋ณธ์ ์œผ๋กœ kube-system)์— ์žˆ์Šต๋‹ˆ๋‹ค.

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

Helm ์žฅ์น˜์™€ ๊ทธ ํ•จ์ •

๋‘ ๋ฒˆ์งธ Helm์€ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ์ง€ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํ˜„์žฌ ์ œ๊ณต๋˜๋Š” ์ •๋ณด์™€ ConfigMap์— ์žˆ๋Š” ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ๋‚ด๋ถ€ ์ •๋ณด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์ •๋ณด ์†Œ์Šค๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Helm ์žฅ์น˜์™€ ๊ทธ ํ•จ์ •
์„ธ ๋ฒˆ์งธ Helm์€ XNUMX๋ฐฉํ–ฅ ๋ณ‘ํ•ฉ ์ „๋žต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์ •๋ณด ์™ธ์—๋„ ํ˜„์žฌ Kubernetes์—์„œ ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

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

๋ฐฉ๋ฒ• 5. --recreate-pods ์Šค์œ„์น˜ ์‚ฌ์šฉ

์—ด์‡ ๋กœ --recreate-pods ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›๋ž˜ ๋‹ฌ์„ฑํ•˜๋ ค๊ณ  ๊ณ„ํšํ•œ ๊ฒƒ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --force. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๊ณ  ์ตœ์‹  ํƒœ๊ทธ์— ๋Œ€ํ•œ imagePullPolicy: Always ์ •์ฑ…(์œ„์˜ ๊ฐ์ฃผ์—์„œ ์ž์„ธํžˆ ์„ค๋ช…)์— ๋”ฐ๋ผ Kubernetes๋Š” ์ด๋ฏธ์ง€์˜ ์ƒˆ ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜ํ–‰๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ์˜ StrategyType์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ‘์ž๊ธฐ ๊บผ์ง€๊ณ  ์ƒˆ ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๋™์•ˆ ์‹œ์Šคํ…œ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์‚ฌ์šฉ์ž๋Š” ์–ด๋ ค์›€์„ ๊ฒช๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Kubernetes ์ž์ฒด์—์„œ๋„ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์˜ค๋žซ๋™์•ˆ ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ œ ์˜คํ”ˆ 4๋…„์ฐจ ๋ฐœํ–‰๋ฌผ, ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋ฉฐ Kubernetes ๋ฒ„์ „ 1.15๋ถ€ํ„ฐ Pod๋ฅผ ๋กค ์žฌ์‹œ์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

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

Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

  1. ์ž„์˜์˜ ๊ฐ’ ํ‘œ์ค€ ๊ธฐ๋Šฅ ์‚ฌ์šฉ - {{ randAlphaNum 6 }}.
    ์ฃผ์˜ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜๊ฐ€ ํฌํ•จ๋œ ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•  ๋•Œ๋งˆ๋‹ค ์ฃผ์„ ๊ฐ’์€ ๊ณ ์œ ํ•˜๋ฉฐ Helm์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•˜๋”๋ผ๋„ ํ•ญ์ƒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„์ด ์—†์œผ๋ฏ€๋กœ ์ด๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ถˆ์พŒํ•ฉ๋‹ˆ๋‹ค.
  2. ํ˜„์žฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ๋‚ ์งœ์™€ ์‹œ๊ฐ„ - {{ .Release.Date }}.
    ๋ณ€ํ˜•์€ ์˜๊ตฌ์ ์œผ๋กœ ๊ณ ์œ ํ•œ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ๋ฌด์ž‘์œ„ ๊ฐ’๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ณด๋‹ค ์ •ํ™•ํ•œ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฒดํฌ์„ฌ. ์ด๋Š” ์ด๋ฏธ์ง€์˜ SHA ๋˜๋Š” git์˜ ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹์˜ SHA์ž…๋‹ˆ๋‹ค. {{ .Values.sha }}.
    ์˜ˆ๋ฅผ ๋“ค์–ด Jenkins์—์„œ ํ˜ธ์ถœ ์ธก์˜ Helm ํด๋ผ์ด์–ธํŠธ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ์ „์†กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์ฒดํฌ์„ฌ๋„ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Helm์€ ํ•„์š”ํ•  ๋•Œ๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ์‹œ๋„๋ฅผ ์š”์•ฝํ•ด๋ณด์ž

  • Helm์€ ์ตœ์†Œํ•œ์˜ ์นจ์ž… ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฏ€๋กœ Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฏธ์ง€ ์ˆ˜์ค€์—์„œ ๋ณ€๊ฒฝํ•ด๋„ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์ด ์‹คํ–‰๋œ ํ›„์—๋Š” ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์—ด์‡  --force ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ณต์›ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ๊ฐ•์ œ ์—…๋ฐ์ดํŠธ์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ์—ด์‡  --recreate-pods ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐ•์ œ๋กœ ์—…๋ฐ์ดํŠธํ•˜์ง€๋งŒ ํŒŒ๊ดด์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ‘์ž๊ธฐ ๊บผ์ง‘๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ด๋กœ ์ธํ•ด ์–ด๋ ค์›€์„ ๊ฒช๊ฒŒ ๋˜๋ฏ€๋กœ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. kubectl edit ํ•˜์ง€ ๋งˆ์„ธ์š”: ์ผ๊ด€์„ฑ์„ ๊นจ๋œจ๋ฆด ๊ฒƒ์ด๋ฉฐ Helm ๋ฒ„์ „์— ๋”ฐ๋ผ ๋™์ž‘์ด ๋‹ฌ๋ผ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • Helm์˜ ์ƒˆ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜๋ฉด์„œ ๋งŽ์€ ๋‰˜์•™์Šค๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. Helm ์ €์žฅ์†Œ์˜ ๋ฌธ์ œ๋Š” ๋ช…ํ™•ํ•œ ์–ธ์–ด๋กœ ์„ค๋ช…๋˜์–ด ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • ์ฐจํŠธ์— ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ฐจํŠธ๊ฐ€ ๋”์šฑ ์œ ์—ฐํ•ด์ง‘๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„ ์—†์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถœ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ถ์˜ ๋ชจ๋“  ์˜์—ญ์— ์ ์šฉ๋˜๋Š” "์„ธ๊ณ„ ํ‰ํ™”" ์‚ฌ์ƒ: ์‚ฌ์šฉ ํ›„๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ ์ „์— ์ง€์นจ์„ ์ฝ์œผ์‹ญ์‹œ์˜ค. ์™„์ „ํ•œ ์ •๋ณด๊ฐ€ ์žˆ์–ด์•ผ๋งŒ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ํ–‰๋ณตํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐํƒ€ ๊ด€๋ จ ๋งํฌ:

  1. ์•Œ์•„๊ฐ€๊ธฐ ํ‚ค 3
  2. ํ—ฌ๋ฆ„ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€
  3. GitHub์˜ Helm ์ €์žฅ์†Œ
  4. 25๊ฐ€์ง€ ์œ ์šฉํ•œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋„๊ตฌ: ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ

์ด ๋ณด๊ณ ์„œ๋Š” ์—์„œ ์ฒ˜์Œ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. @Kubernetes ์ปจํผ๋Ÿฐ์Šค Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ์ œ๊ณต. ๋ฐ”๋ผ๋ณด๋‹ค ๋น„๋””์˜ค ๊ธฐํƒ€ ๊ณต์—ฐ ๋ฐ ํ…”๋ ˆ๊ทธ๋žจ ์ด๋ฒคํŠธ ๊ณต์ง€์‚ฌํ•ญ ๊ตฌ๋… Mail.ru ๊ทธ๋ฃน์˜ Kubernetes ๊ด€๋ จ.

์ถœ์ฒ˜ : habr.com

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