ํ—ฌ๋ฆ„ 3 ์†Œ๊ฐœ

ํ—ฌ๋ฆ„ 3 ์†Œ๊ฐœ

๋ฉ”๋ชจ. ๋ฒˆ์—ญ: ์˜ฌํ•ด 16์›” 3.0์ผ์€ Kubernetes์šฉ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ธ Helm ๊ฐœ๋ฐœ์— ์žˆ์–ด ์ค‘์š”ํ•œ ์ด์ •ํ‘œ๊ฐ€ ๋˜๋Š” ๋‚ ์ž…๋‹ˆ๋‹ค. ์ด๋‚  ํ”„๋กœ์ ํŠธ์˜ ํ–ฅํ›„ ์ฃผ์š” ๋ฒ„์ „์ธ XNUMX์˜ ์ฒซ ๋ฒˆ์งธ ์•ŒํŒŒ ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ถœ์‹œ๋กœ ์˜ค๋žซ๋™์•ˆ ๊ธฐ๋‹ค๋ ค์˜จ Helm์˜ ์ค‘๋Œ€ํ•œ ๋ณ€ํ™”๊ฐ€ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ด๋ฉฐ, Kubernetes ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํฐ ๊ธฐ๋Œ€๋ฅผ ํ’ˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด Helm์„ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋“ค ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. CI/CD ๊ตฌํ˜„์„ ์œ„ํ•œ ๋„๊ตฌ์— Helm์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์›Œํ”„ ๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๋Š” ์—…์ŠคํŠธ๋ฆผ ๊ฐœ๋ฐœ์— ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒˆ์—ญ์€ Helm 7์˜ ์ฒซ ๋ฒˆ์งธ ์•ŒํŒŒ ๋ฆด๋ฆฌ์Šค์— ์ „๋…ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์˜ ์—ญ์‚ฌ์™€ Helm 3์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋Š” ๊ณต์‹ Helm ๋ธ”๋กœ๊ทธ์˜ 3๊ฐœ ๋…ธํŠธ๋ฅผ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ž‘์„ฑ์ž๋Š” Microsoft ์ง์›์ธ Matt "bacongobbler" Fisher์ž…๋‹ˆ๋‹ค. Helm์˜ ์ฃผ์š” ๊ด€๋ฆฌ์ž ์ค‘ ํ•œ ๋ช…์ž…๋‹ˆ๋‹ค.

15๋…„ 2015์›” 2์ผ, ํ˜„์žฌ Helm์œผ๋กœ ์•Œ๋ ค์ง„ ํ”„๋กœ์ ํŠธ๊ฐ€ ํƒ„์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. Helm ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์ฐฝ๋ฆฝ 2018๋…„ ๋งŒ์— Kubernetes์— ํ•ฉ๋ฅ˜ํ•˜๋ฉด์„œ Helm XNUMX๋ฅผ ์ ๊ทน์ ์œผ๋กœ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. XNUMX๋…„ XNUMX์›”, Helm CNCF์— ํ•ฉ๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค ๊ฐœ๋ฐœ(์ธํ๋ฒ ์ดํŒ…) ํ”„๋กœ์ ํŠธ๋กœ. ํ˜„์žฌ๋กœ ๋น ๋ฅด๊ฒŒ ๋‚˜์•„๊ฐ€๋ฉด ์ƒˆ๋กœ์šด Helm 3์˜ ์ฒซ ๋ฒˆ์งธ ์•ŒํŒŒ ๋ฆด๋ฆฌ์Šค๊ฐ€ ๊ณง ์ถœ์‹œ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. (์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค ์ด๋ฏธ ์ผ์–ด๋‚ฌ์–ด XNUMX์›” ์ค‘์ˆœ~์•ฝ. ๋ฒˆ์—ญ).

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

์š”์•ฝ :

  • Helm ์ฐฝ์กฐ์˜ ์—ญ์‚ฌ;
  • Tiller์—๊ฒŒ ๋ถ€๋“œ๋Ÿฌ์šด ์ž‘๋ณ„ ์ธ์‚ฌ๋ฅผ ์ „ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฐจํŠธ ์ €์žฅ์†Œ;
  • ๋ฆด๋ฆฌ์Šค ๊ด€๋ฆฌ;
  • ์ฐจํŠธ ์ข…์†์„ฑ ๋ณ€๊ฒฝ;
  • ๋„์„œ๊ด€ ์ฐจํŠธ;
  • ๋‹ค์Œ์€?

ํ—ฌ๋ฆ„์˜ ์—ญ์‚ฌ

์ถœ์ƒ

Helm 1์€ Deis๊ฐ€ ๋งŒ๋“  ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ž‘์€ ์Šคํƒ€ํŠธ์—…์ด์—ˆ์–ด์š” ํก์ˆ˜๋œ 2017๋…„ ๋ด„์˜ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ. Deis๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” ๋‹ค๋ฅธ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์—๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. deisctl, Deis ํ”Œ๋žซํผ์„ ์„ค์น˜ํ•˜๊ณ  ์šด์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•จ๋Œ€ ํด๋Ÿฌ์Šคํ„ฐ. ๋‹น์‹œ Fleet์€ ์ตœ์ดˆ์˜ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค.

2015๋…„ ์ค‘๋ฐ˜์— ์šฐ๋ฆฌ๋Š” ๋ฐฉํ–ฅ์„ ๋ฐ”๊พธ๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ณ  Deis(๋‹น์‹œ Deis Workflow๋กœ ์ด๋ฆ„ ๋ณ€๊ฒฝ)๋ฅผ Fleet์—์„œ Kubernetes๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์œผ๋กœ ์žฌ์„ค๊ณ„๋œ ๊ฒƒ ์ค‘ ํ•˜๋‚˜๋Š” ์„ค์น˜ ๋„๊ตฌ์˜€์Šต๋‹ˆ๋‹ค. deisctl. ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ Fleet ํด๋Ÿฌ์Šคํ„ฐ์— Deis Workflow๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

Helm 1์€ Homebrew, apt ๋ฐ yum๊ณผ ๊ฐ™์€ ์œ ๋ช…ํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์˜ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๋ชฉํ‘œ๋Š” Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŒจํ‚ค์ง•ํ•˜๊ณ  ์„ค์น˜ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. Helm์€ 2015๋…„ ์ƒŒํ”„๋ž€์‹œ์Šค์ฝ”์—์„œ ์—ด๋ฆฐ KubeCon ์ปจํผ๋Ÿฐ์Šค์—์„œ ๊ณต์‹์ ์œผ๋กœ ์†Œ๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Helm์„ ์‚ฌ์šฉํ•œ ์ฒซ ๋ฒˆ์งธ ์‹œ๋„๋Š” ์„ฑ๊ณตํ–ˆ์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์‹ฌ๊ฐํ•œ ์ œํ•œ ์‚ฌํ•ญ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ์ƒ์„ฑ๊ธฐ๋ฅผ ์ž…๋ฌธ YAML ๋ธ”๋ก์œผ๋กœ ํ™œ์šฉํ•œ Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. (์„œ๋ฌธ)* ๊ฒฐ๊ณผ๋ฅผ Kubernetes์— ๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.

* ๋ฉ”๋ชจ. ๋ฒˆ์—ญ: Helm ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „๋ถ€ํ„ฐ Kubernetes ๋ฆฌ์†Œ์Šค๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด YAML ๊ตฌ๋ฌธ์ด ์„ ํƒ๋˜์—ˆ์œผ๋ฉฐ ๊ตฌ์„ฑ ์ž‘์„ฑ ์‹œ Jinja ํ…œํ”Œ๋ฆฟ๊ณผ Python ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ง€์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” "Helm์˜ ๊ฐ„๋žตํ•œ ์—ญ์‚ฌ" ์žฅ์—์„œ ์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ ์ผ๋ฐ˜์ ์ธ Helm ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์ผ์Šต๋‹ˆ๋‹ค. ์ด ์ž๋ฃŒ.

์˜ˆ๋ฅผ ๋“ค์–ด YAML ํŒŒ์ผ์˜ ํ•„๋“œ๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด ๋งค๋‹ˆํŽ˜์ŠคํŠธ์— ๋‹ค์Œ ๊ตฌ์„ฑ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

#helm:generate sed -i -e s|ubuntu-debootstrap|fluffy-bunny| my/pod.yaml

์˜ค๋Š˜๋‚  ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋Œ€๋‹จํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ์ด ์ดˆ๊ธฐ Kubernetes ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์—๋Š” ํ•˜๋“œ ์ฝ”๋”ฉ๋œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ ๋ชฉ๋ก์ด ํ•„์š”ํ–ˆ์œผ๋ฉฐ ์†Œ๊ทœ๋ชจ์˜ ๊ณ ์ •๋œ ์ด๋ฒคํŠธ ์‹œํ€€์Šค๋งŒ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ค์›Œ์„œ Deis Workflow R&D ํŒ€์ด ์ œํ’ˆ์„ ์ด ํ”Œ๋žซํผ์œผ๋กœ ์ด์ „ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„์ด๋””์–ด์˜ ์”จ์•—์€ ์ด๋ฏธ ๋ฟŒ๋ ค์กŒ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ์ฒซ ๋ฒˆ์งธ ์‹œ๋„๋Š” ํ›Œ๋ฅญํ•œ ํ•™์Šต ๊ธฐํšŒ์˜€์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž์˜ ์ผ์ƒ์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์‹ค์šฉ์ ์ธ ๋„๊ตฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์ง„์ •์œผ๋กœ ์—ด์ •์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

๊ณผ๊ฑฐ์˜ ์‹ค์ˆ˜ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ Helm 2 ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋งŒ๋“ค๊ธฐ 2

2015๋…„ ๋ง์— Google ํŒ€์—์„œ ์—ฐ๋ฝ์ด ์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ Kubernetes๋ฅผ ์œ„ํ•œ ์œ ์‚ฌํ•œ ๋„๊ตฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Kubernetes์šฉ ๋ฐฐํฌ ๊ด€๋ฆฌ์ž๋Š” Google Cloud Platform์— ์‚ฌ์šฉ๋˜์—ˆ๋˜ ๊ธฐ์กด ๋„๊ตฌ์˜ ํฌํŠธ์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ โ€œ๋ฉฐ์น  ๋™์•ˆ ์œ ์‚ฌ์ ๊ณผ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ํ† ๋ก ํ•ด ๋ณผ๊นŒ์š”?โ€๋ผ๊ณ  ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค.

2016๋…„ 2์›”, Helm ํŒ€๊ณผ ๋ฐฐํฌ ๊ด€๋ฆฌ์ž ํŒ€์€ ์‹œ์• ํ‹€์—์„œ ๋งŒ๋‚˜ ์•„์ด๋””์–ด๋ฅผ ๊ตํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜‘์ƒ์€ ๋‘ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ Helm XNUMX๋ฅผ ๋งŒ๋“œ๋Š” ์•ผ์‹ฌ์ฐฌ ๊ณ„ํš์œผ๋กœ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. Deis ๋ฐ Google๊ณผ ํ•จ๊ป˜ ์Šคํ‚ต๋ฐ•์Šค (ํ˜„์žฌ Bitnami์˜ ์ผ๋ถ€ - ๋Œ€๋žต ๋ฒˆ์—ญ), ์šฐ๋ฆฌ๋Š” Helm 2 ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

Helm์˜ ์‚ฌ์šฉ ํŽธ์˜์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

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

2๋…„ Helm 2016๊ฐ€ ์ถœ์‹œ๋œ ์ดํ›„ Kubernetes์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ํ˜์‹ ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ญํ•  ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค ์ œ์–ด๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(RBAC)๋Š” ๊ฒฐ๊ตญ ABAC(์†์„ฑ ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค ์ œ์–ด)๋ฅผ ๋Œ€์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค ์œ ํ˜•์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๋‹น์‹œ ๋ฐฐํฌ๋Š” ์•„์ง ๋ฒ ํƒ€ ๋ฒ„์ „์ด์—ˆ์Šต๋‹ˆ๋‹ค). ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌ์†Œ์Šค ์ •์˜(์›๋ž˜ ํƒ€์‚ฌ ๋ฆฌ์†Œ์Šค ๋˜๋Š” TPR์ด๋ผ๊ณ  ํ•จ)๊ฐ€ ๋ฐœ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ผ๋ จ์˜ ๋ชจ๋ฒ” ์‚ฌ๋ก€๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

ํ‹ธ๋Ÿฌ์™€์˜ ๋ถ€๋“œ๋Ÿฌ์šด ์ž‘๋ณ„ ์ธ์‚ฌ

Helm 2๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ Google ๋ฐฐํฌ ๊ด€๋ฆฌ์ž์™€์˜ ํ†ตํ•ฉ์˜ ์ผ๋ถ€๋กœ Tiller๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. Tiller๋Š” ๊ณตํ†ต ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์ž‘์—…ํ•˜๋Š” ํŒ€์—๊ฒŒ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ธํ”„๋ผ๋ฅผ ์šด์˜ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์ „๋ฌธ๊ฐ€๊ฐ€ ๋™์ผํ•œ ๋ฆด๋ฆฌ์Šค ์„ธํŠธ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Kubernetes 1.6์—์„œ๋Š” ์—ญํ•  ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค ์ œ์–ด(RBAC)๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์—ˆ์œผ๋ฏ€๋กœ ํ”„๋กœ๋•์…˜์—์„œ Tiller๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์–ด๋ ค์›Œ์กŒ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๋ณด์•ˆ ์ •์ฑ…์˜ ์ˆ˜๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ์˜ ์ž…์žฅ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ—ˆ์šฉ๋˜๋Š” ๊ตฌ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ดˆ๋ณด์ž๋Š” ๋จผ์ € ๋ณด์•ˆ ์„ค์ •์— ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ณ ๋„ Helm๊ณผ Kubernetes๋ฅผ ์‹คํ—˜ํ•ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ ์ด ๊ถŒํ•œ ๊ตฌ์„ฑ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋„ˆ๋ฌด ๊ด‘๋ฒ”์œ„ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DevOps ๋ฐ SRE ์—”์ง€๋‹ˆ์–ด๋Š” ๋‹ค์ค‘ ํ…Œ๋„ŒํŠธ ํด๋Ÿฌ์Šคํ„ฐ์— Tiller๋ฅผ ์„ค์น˜ํ•  ๋•Œ ์ถ”๊ฐ€ ์šด์˜ ๋‹จ๊ณ„๋ฅผ ๋ฐฐ์›Œ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

Tiller์˜ ์ฃผ์š” ๋ชฉํ‘œ๋Š” Tiller ์—†์ด๋„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฏ€๋กœ Helm 3์— ๊ด€ํ•œ ์šฐ๋ฆฌ์˜ ์ฒซ ๋ฒˆ์งธ ๊ฒฐ์ • ์ค‘ ํ•˜๋‚˜๋Š” Tiller๋ฅผ ์™„์ „ํžˆ ํฌ๊ธฐํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Tiller๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด์„œ Helm์˜ ๋ณด์•ˆ ๋ชจ๋ธ์€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹จ์ˆœํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Helm 3์€ ์ด์ œ ํ˜„์žฌ Kubernetes์˜ ๋ชจ๋“  ์ตœ์‹  ๋ณด์•ˆ, ID ๋ฐ ์ธ์ฆ ๋ฐฉ๋ฒ•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Helm ๊ถŒํ•œ์€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. kubeconfig ํŒŒ์ผ. ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๋Š” ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ๋ชจ๋“  ์„ธ๋ถ€ ์ˆ˜์ค€์œผ๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์— ๊ณ„์† ์ €์žฅ๋˜๋ฉฐ Helm์˜ ๋‚˜๋จธ์ง€ ๊ธฐ๋Šฅ์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์ฐจํŠธ ์ €์žฅ์†Œ

์ƒ์œ„ ์ˆ˜์ค€์—์„œ ์ฐจํŠธ ์ €์žฅ์†Œ๋Š” ์ฐจํŠธ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ์ž…๋‹ˆ๋‹ค. Helm ํด๋ผ์ด์–ธํŠธ๋Š” ์ฐจํŠธ๋ฅผ ํŒจํ‚ค์ง•ํ•˜์—ฌ ์ €์žฅ์†Œ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์ฐจํŠธ ์ €์žฅ์†Œ๋Š” index.yaml ํŒŒ์ผ๊ณผ ์ผ๋ถ€ ํŒจํ‚ค์ง€ ์ฐจํŠธ๊ฐ€ ์žˆ๋Š” ๊ธฐ๋ณธ HTTP ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋ณธ ์ €์žฅ์†Œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š” Charts Repository API์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์žฅ์ ์ด ์žˆ์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

ํ•˜์ง€๋งŒ ๋ฐฐํฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ํ˜•ํƒœ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋ฐฐํฌํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ๊ณ„์…จ๋‚˜์š”?

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

Helm ์ฐจํŠธ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ผ๋ถ€ ํ–ฅํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋งํฌ.

๋ฆด๋ฆฌ์Šค ๊ด€๋ฆฌ

Helm 3์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋Š” ๊ฐ์ฒด ์Œ์„ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์ถ”์ ๋ฉ๋‹ˆ๋‹ค.

  • ๋ฆด๋ฆฌ์Šค ๊ฐ์ฒด - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • ๋ฆด๋ฆฌ์Šค ๋ฒ„์ „ ๋น„๋ฐ€ - ํŠน์ • ์‹œ์ (์˜ˆ: ์ƒˆ ๋ฒ„์ „์˜ ๋ฆด๋ฆฌ์Šค)์—์„œ ์›ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋„์ „ helm install ๋ฆด๋ฆฌ์Šค ๊ฐ์ฒด์™€ ๋ฆด๋ฆฌ์Šค ๋ฒ„์ „ ๋น„๋ฐ€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ฅด๋‹ค helm upgrade ๋ฆด๋ฆฌ์Šค ๊ฐœ์ฒด(๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ์ƒˆ ๊ฐ’๊ณผ ์ค€๋น„๋œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” ์ƒˆ ๋ฆด๋ฆฌ์Šค ๋ฒ„์ „ ๋น„๋ฐ€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

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

๋ฆด๋ฆฌ์Šค ๋ฒ„์ „ ๋น„๋ฐ€์€ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ผ๋ จ์˜ ๊ฐœ์ •(์„ค์น˜, ์—…๋ฐ์ดํŠธ, ๋กค๋ฐฑ, ์‚ญ์ œ)๊ณผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

Helm 2์—์„œ๋Š” ์ˆ˜์ •๋ณธ์ด ๋งค์šฐ ์ผ๊ด€์„ฑ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถ€๋ฅด๋‹ค helm install v1์„ ์ƒ์„ฑํ•˜๊ณ  ํ›„์† ์—…๋ฐ์ดํŠธ(์—…๊ทธ๋ ˆ์ด๋“œ) - v2 ๋“ฑ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค ๋ฐ ๋ฆด๋ฆฌ์Šค ๋ฒ„์ „ ๋น„๋ฐ€์€ ๊ฐœ์ •์ด๋ผ๋Š” ๋‹จ์ผ ๊ฐœ์ฒด๋กœ ์ถ•์†Œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ •ํŒ์€ Tiller์™€ ๋™์ผํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ €์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ธก๋ฉด์—์„œ "์ „์—ญ"์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด๋ฆ„์˜ ์ธ์Šคํ„ด์Šค๋Š” ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Tiller๊ฐ€ ํ๊ธฐ๋œ ํ›„ Helm 3์€ ๋ฆด๋ฆฌ์Šค์™€ ๋™์ผํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋ฆด๋ฆฌ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ์„ ํ†ตํ•ด ๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋™์ผํ•œ ๋ฆด๋ฆฌ์Šค ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ฐจํŠธ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๋Š” etcd์˜ ํด๋Ÿฌ์Šคํ„ฐ ์—…๋ฐ์ดํŠธ/์žฌ๋ถ€ํŒ… ์‚ฌ์ด์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด WordPress๋ฅผ "foo" ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์„ค์น˜ํ•œ ๋‹ค์Œ "bar" ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‘ ๋ฆด๋ฆฌ์Šค ๋ชจ๋‘ "wordpress"๋ผ๋Š” ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐจํŠธ ์ข…์†์„ฑ ๋ณ€๊ฒฝ ์‚ฌํ•ญ

ํฌ์žฅ๋œ ์ฐจํŠธ(์‚ฌ์šฉ helm package) Helm 2์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Helm 3๊ณผ ํ•จ๊ป˜ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ฐจํŠธ ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ๊ฐ€ ์™„์ „ํžˆ ์ ๊ฒ€๋˜์—ˆ์œผ๋ฏ€๋กœ Helm 3์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฐจํŠธ ๊ฐœ๋ฐœ์„ ๊ณ„์†ํ•˜๋ ค๋ฉด ์ผ๋ถ€ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์ฐจํŠธ ์ข…์†์„ฑ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฐจํŠธ์˜ ์ข…์†์„ฑ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ๋‹ค์Œ์—์„œ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. requirements.yaml ะธ requirements.lock ์— Chart.yaml ะธ Chart.lock. ์ด๋Š” ๋ช…๋ น์„ ์‚ฌ์šฉํ•œ ์ฐจํŠธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. helm dependency, Helm 3์—์„œ ์ž‘๋™ํ•˜๋ ค๋ฉด ์ผ๋ถ€ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Helm 2์˜ ์ฐจํŠธ์— ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  Helm 3์œผ๋กœ ์ด๋™ํ•  ๋•Œ ์–ด๋–ค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ—ฌ๋ฆ„ 2์—์„œ requirements.yaml ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์˜€๋‹ค:

dependencies:
- name: mariadb
  version: 5.x.x
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: mariadb.enabled
  tags:
    - database

Helm 3์—์„œ๋Š” ๋™์ผํ•œ ์ข…์†์„ฑ์ด ๋‹ค์Œ ํ•ญ๋ชฉ์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. Chart.yaml:

dependencies:
- name: mariadb
  version: 5.x.x
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: mariadb.enabled
  tags:
    - database

์ฐจํŠธ๋Š” ์—ฌ์ „ํžˆ ๋‹ค์šด๋กœ๋“œ๋˜์–ด ๋””๋ ‰ํ† ๋ฆฌ์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. charts/, ํ•˜์œ„ ์ฐจํŠธ (ํ•˜์œ„ ์ฐจํŠธ), ์นดํƒˆ๋กœ๊ทธ์— ๋ˆ„์›Œ charts/, ๋ณ€๊ฒฝ ์—†์ด ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋„์„œ๊ด€ ์ฐจํŠธ ์†Œ๊ฐœ

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

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

dependencies:
  - name: mylib
    version: 1.x.x
    repository: quay.io

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

๋‹ค์Œ์€ ๋ญ์ง€?

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

์•ŒํŒŒ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜์ž๋งˆ์ž (์ด๊ฑด ๊ธฐ์–ตํ•ด๋‘์„ธ์š” ์ด๋ฏธ ์ผ์–ด๋‚œ ์ผ์ด์•ผ - ๋Œ€๋žต. ๋ฒˆ์—ญ), ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ Helm 3์— ๋Œ€ํ•œ ํŒจ์น˜๋ฅผ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœ ๋ฐ ์ฑ„ํƒํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ํ‹ฐ์ผ“์„ ์—ด๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๊ณผ์ •์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋ฐ˜์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์šฐ๋ฆฌ๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์นœ ๊ฒƒ ๊ฐ™๋‹ค๋ฉด, ์—ฌ๋Ÿฌ๋ถ„์˜ ์ƒ๊ฐ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

์šฐ๋ฆฌ์˜ ํ† ๋ก ์— ์ฐธ์—ฌํ•˜์„ธ์š” ์Šฌ๋ž™ ์ฑ„๋„:

  • #helm-users ์ปค๋ฎค๋‹ˆํ‹ฐ์™€์˜ ์งˆ๋ฌธ ๋ฐ ๊ฐ„๋‹จํ•œ ์˜์‚ฌ์†Œํ†ต์„ ์œ„ํ•ด;
  • #helm-dev ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ, ์ฝ”๋“œ ๋ฐ ๋ฒ„๊ทธ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค.

๋งค์ฃผ ๋ชฉ์š”์ผ 19:30 MSK์— ์—ด๋ฆฌ๋Š” ๊ณต๊ฐœ ๊ฐœ๋ฐœ์ž ํ†ตํ™”์—์„œ ์ฑ„ํŒ…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํšŒ์˜์—์„œ๋Š” ์ฃผ์š” ๊ฐœ๋ฐœ์ž์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ž‘์—… ์ค‘์ธ ๋ฌธ์ œ์™€ ์ด๋ฒˆ ์ฃผ์˜ ํ† ๋ก  ์ฃผ์ œ๋ฅผ ๋…ผ์˜ํ•˜๋Š” ๋ฐ ์ „๋…ํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ํšŒ์˜์— ์ฐธ์—ฌํ•˜๊ณ  ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Slack ์ฑ„๋„์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋งํฌ #helm-dev.

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

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

์ถœ์ฒ˜ : habr.com

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