ํˆฌ๊ตฌ ๋ณด์•ˆ

Kubernetes์˜ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ์˜ ๋ณธ์งˆ์€ ์ด๋ชจํ‹ฐ์ฝ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒ์ž๋Š” Helm(์ตœ์‹  Emoji ๋ฆด๋ฆฌ์Šค์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ)์ž…๋‹ˆ๋‹ค.
  • ์ž ๊ธˆ - ๋ณด์•ˆ;
  • ์ž‘์€ ๋‚จ์ž๊ฐ€ ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ์ฑ…์ž…๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

์‚ฌ์‹ค ๋ชจ๋“  ๊ฒƒ์ด ์กฐ๊ธˆ ๋” ๋ณต์žกํ•ด์งˆ ๊ฒƒ์ด๋ฉฐ ์ด์•ผ๊ธฐ๋Š” ๊ธฐ์ˆ ์ ์ธ ์„ธ๋ถ€ ์‚ฌํ•ญ์œผ๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ์Šต๋‹ˆ๋‹ค. Helm์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•.

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

์ด ๋ฌธ์„œ์˜ ๋ชจ๋“  ๋‚ด์šฉ์€ Helm 2์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ„์ „์€ ํ˜„์žฌ ์ƒ์‚ฐ ์ค‘์ด๋ฉฐ ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ๋ฒ„์ „์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋ฉฐ ๋ณด์•ˆ ์œ„ํ—˜์ด ํฌํ•จ๋œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.


์—ฐ์‚ฌ ์ •๋ณด: ์•Œ๋ ‰์‚ฐ๋” ์นด์š”๋กœํ”„(Alexander Khayorov)์•Œ๋ ‰์Šค)๋Š” 10๋…„ ๋™์•ˆ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜์—ฌ ์ฝ˜ํ…์ธ  ๊ฐœ์„ ์— ๋„์›€์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ์Šคํฌ๋ฐ” Python Conf++ ๊ทธ๋ฆฌ๊ณ  ์œ„์›ํšŒ์— ํ•ฉ๋ฅ˜ํ–ˆ๋‹ค. ํ—ฌ๋ฆ„ ์„œ๋ฐ‹. ์ด์ œ ๊ทธ๋Š” Chainstack์—์„œ ๊ฐœ๋ฐœ ์ฑ…์ž„์ž๋กœ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ ๊ด€๋ฆฌ์ž์™€ ์ตœ์ข… ๋ฆด๋ฆฌ์Šค ์ œ๊ณต์„ ๋‹ด๋‹นํ•˜๋Š” ์‚ฌ๋žŒ์˜ ํ˜ผํ•ฉ์ฒด์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ œํ’ˆ์˜ ํƒ„์ƒ๋ถ€ํ„ฐ ์šด์˜๊นŒ์ง€ ๋ชจ๋“  ์ผ์ด ์ผ์–ด๋‚˜๋Š” ์ „์žฅ์— ์œ„์น˜ํ•œ๋‹ค.

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

ํ‚ค

Kubernetes์šฉ ํŒจํ‚ค์ง€(์ฐจํŠธ) ๊ด€๋ฆฌ์ž์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฐ€์žฅ ์ง๊ด€์ ์ด๊ณ  ๋ณดํŽธ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

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

Helm์€ ํ˜„์žฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ  ์ธ๊ธฐ ์žˆ๋Š” ์ตœ๊ณ ์˜ ์ œํ’ˆ์ž…๋‹ˆ๋‹ค.

์™œ ํ—ฌ๋ฆ„์ธ๊ฐ€? ์ฃผ๋กœ CNCF์—์„œ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Cloud Native๋Š” ๋Œ€๊ทœ๋ชจ ์กฐ์ง์ด๋ฉฐ Kubernetes, etcd, Fluentd ๋“ฑ ํ”„๋กœ์ ํŠธ์˜ ๋ชจํšŒ์‚ฌ์ž…๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์‚ฌ์‹ค์€ Helm์ด ๋งค์šฐ ์ธ๊ธฐ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 2019๋…„ 12์›”์— Helm์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ์ด ํ”„๋กœ์ ํŠธ๋Š” GitHub์—์„œ ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ณ„์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. XNUMX์›”์—๋Š” ๊ทธ ์ˆ˜๊ฐ€ XNUMX๋ช…์— ์ด๋ฅด๋ €์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด Helm์— ๊ด€์‹ฌ์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์•„์ง ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ Helm์˜ ๋ณด์•ˆ์— ๋Œ€ํ•ด ์•Œ์•„๋‘๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ˆ์ „์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ Helm ํŒ€์€ Microsoft Azure์—์„œ ์ง€์›๋˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๋งŽ์€ ํŒ€๊ณผ ๋‹ฌ๋ฆฌ ์ƒ๋‹นํžˆ ์•ˆ์ •์ ์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. 3์›” ์ค‘์ˆœ์— Helm 2 Alpha XNUMX๊ฐ€ ์ถœ์‹œ๋œ๋‹ค๋Š” ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ƒ๋‹นํžˆ ๋งŽ๊ณ  Helm์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๊ฐœ์„ ํ•˜๋ ค๋Š” ์—ด๋ง๊ณผ ์—๋„ˆ์ง€๊ฐ€ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

Helm์€ Kubernetes์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ฆฌ์˜ ๋ช‡ ๊ฐ€์ง€ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒจํ‚ค์ง•. WordPress์˜ "Hello, World"์™€ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ์ด๋ฏธ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฅผ ํ•จ๊ป˜ ํŒจํ‚ค์ง•ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ฆฌ์— ๋”ฐ๋ฅธ ๋ณต์žก์„ฑ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„ค์น˜๋˜๊ฑฐ๋‚˜ ๋ฐฐํฌ๋œ ํ›„์—๋„ ๋๋‚˜์ง€ ์•Š๋Š” ์ˆ˜๋ช… ์ฃผ๊ธฐ์ž…๋‹ˆ๋‹ค. ๊ณ„์†ํ•ด์„œ ์ž‘๋™ํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ Helm์€ ์ด๋ฅผ ์ง€์›ํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ์กฐ์น˜์™€ ์ •์ฑ…์„ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

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

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

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ - ์ œ ์ƒ๊ฐ์—๋Š” ์ด๊ฒƒ์ด ๊ฐ€์žฅ ํฅ๋ฏธ๋กญ๊ณ  ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œ๊ฐ€ ์˜ˆ์ „์— ํ—ฌ๋ฆ„์— ์˜จ ์ด์œ ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜๋ช…์ฃผ๊ธฐ๋ฅผ ์ฃผ์‹œํ•ด์•ผ ํ–ˆ๊ณ  CI/CD ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฃผ๊ธฐ๋ฅผ ์ด ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ ์˜ฎ๊ธฐ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

Helm์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

Helm์€ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ฐœ๋…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

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

ํˆฌ๊ตฌ ์•„ํ‚คํ…์ฒ˜

๋‹ค์ด์–ด๊ทธ๋žจ์€ Helm์˜ ์ƒ์œ„ ์ˆ˜์ค€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐœ๋…์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

Helm์€ Kubernetes์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๋Š” ์ ์„ ์ƒ๊ธฐ์‹œ์ผœ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ(์‚ฌ๊ฐํ˜•) ์—†์ด๋Š” ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. kube-apiserver ๊ตฌ์„ฑ์š”์†Œ๋Š” ๋งˆ์Šคํ„ฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. Helm์ด ์—†์œผ๋ฉด Kubeconfig๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Helm์€ ์ปดํ“จํ„ฐ, ๋…ธํŠธ๋ถ, ๋ฉ”์ธํ”„๋ ˆ์ž„ ๋“ฑ ๋ชจ๋“  ๊ณณ์— ์„ค์น˜๋˜๋Š” ์ž‘์€ ๋ฐ”์ด๋„ˆ๋ฆฌ(Helm CLI ์œ ํ‹ธ๋ฆฌํ‹ฐ)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

Chart Repo์˜ ๋‹ค์Œ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ฐจํŠธ๊ฐ€ ์žˆ๋Š” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ๊ณต์‹ ์ €์žฅ์†Œ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  ํšŒ์‚ฌ๋‚˜ ํ”„๋กœ์ ํŠธ์˜ ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒํ˜ธ ์ž‘์šฉ

Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์šฐ๋ฆฌ๋Š” ๋งํ•œ๋‹ค Helm install, ์ €์žฅ์†Œ(Chart Repo)์— ์•ก์„ธ์Šคํ•˜๊ณ  Helm ์ฐจํŠธ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

  • Helm ์œ ํ‹ธ๋ฆฌํ‹ฐ(Helm CLI)๋Š” ์—ฐ๊ฒฐํ•  ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด Kubeconfig์™€ ์ƒํ˜ธ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. 
  • ์ด ์ •๋ณด๋ฅผ ๋ฐ›์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ๋Š” Tiller๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. 
  • Tiller๋Š” Kube-apiserver๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ Kubernetes์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ผ๋ถ€ ๊ฐ์ฒด(์„œ๋น„์Šค, ํฌ๋“œ, ๋ณต์ œ๋ณธ, ๋น„๋ฐ€ ๋“ฑ)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

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

๊ณต๊ฒฉ ๋ฒกํ„ฐ

์ฒซ ๋ฒˆ์งธ ์ž ์žฌ์ ์ธ ์•ฝ์ ์€ ํŠน๊ถŒ API-์‚ฌ์šฉ์ž. ๊ณ„ํš์˜ ์ผ๋ถ€๋กœ Helm CLI์— ๋Œ€ํ•œ ๊ด€๋ฆฌ์ž ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป์€ ํ•ด์ปค์ž…๋‹ˆ๋‹ค.

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

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

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

ํˆฌ๊ตฌ ๋ณด์•ˆ

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

๋‹ค์ด์–ด๊ทธ๋žจ์„ ํ™•๋Œ€ํ•˜๊ณ  ๋” ๋งŽ์€ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋ชจ๋‘ ์œ ์ง€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

Helm CLI๋Š” Chart Repo์™€ ํ†ต์‹ ํ•˜๊ณ  Kubeconfig์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋ฉฐ ์ž‘์—…์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ Tiller ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

Tiller๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐ์ฒด๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.

  • ํŠน์ • ์„œ๋น„์Šค๋ฅผ ๋…ธ์ถœํ•˜๋Š” Tiller-deploy svc
  • ํด๋Ÿฌ์Šคํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋Š” ์ „์ฒด ๋กœ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์ž‘์ž ๋ฐฐํฌ ํฌ๋“œ(๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ํ•˜๋‚˜์˜ ๋ณต์ œ๋ณธ์— ์žˆ๋Š” ๋‹จ์ผ ๋ณต์‚ฌ๋ณธ)์ž…๋‹ˆ๋‹ค.

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

  • Helm CLI๊ฐ€ ์ฐจํŠธ ์ €์žฅ์†Œ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜: ์–ด๋–ค ํ”„๋กœํ† ์ฝœ, ์ธ์ฆ์ด ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • kubectl์„ ์‚ฌ์šฉํ•˜๋Š” Helm CLI๊ฐ€ Tiller์™€ ํ†ต์‹ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์— ์„ค์น˜๋œ RPC ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
  • Tiller ์ž์ฒด๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ์ƒ์ฃผํ•˜๊ณ  Kube-apiserver์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

์ด ๋ชจ๋“  ์˜์—ญ์„ ์ˆœ์„œ๋Œ€๋กœ ๋…ผ์˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

RBAC

RBAC๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด Helm ๋˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋ณด์•ˆ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

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

ํˆฌ๊ตฌ ๋ณด์•ˆ

https://rbac.dev/ โ€” RBAC์˜ ์›น์‚ฌ์ดํŠธ ๋ณ€ํ˜ธ์‚ฌ. ์—ฌ๊ธฐ์—๋Š” RBAC๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ณ , RBAC๊ฐ€ ์ข‹์€ ์ด์œ ์™€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์ด๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ํฅ๋ฏธ๋กœ์šด ์ž๋ฃŒ๊ฐ€ ๋งŽ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

Helm์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์„œ๋ฒ„์— ์ฒ˜์Œ ์„ค์น˜ํ•  ๋•Œ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ •์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --service-account. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ตœ์†Œํ•œ์˜ ํ•„์ˆ˜ ๊ถŒํ•œ ์ง‘ํ•ฉ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, Role ๋ฐ RoleBinding๊ณผ ๊ฐ™์€ "ํ™”ํ™˜"์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

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

์งˆ๋ฌธ์ด ์ƒ๊น๋‹ˆ๋‹ค. ์—ญํ• ๊ณผ ClusterRole์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ฐจ์ด์ ์€ ํŠน์ˆ˜ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” ์ผ๋ฐ˜ ์—ญํ•  ๋ฐ RoleBinding๊ณผ ๋‹ฌ๋ฆฌ ClusterRole์€ ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์ •์ฑ…์„ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ฐœ์ธํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋Ÿฌ๋‚˜ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Tiller๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Tiller๋Š” ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ RBAC, Kubeconfig๋ฅผ ์ปจํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ํŠน์ˆ˜ Helm์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋กœ ๋‹ค๋ฅธ ํŒ€(๋‘ ๊ฐœ์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค)์— ๋Œ€ํ•œ ์ปจํ…์ŠคํŠธ๊ฐ€ ์žˆ๋Š” ๋‘ ๊ฐœ์˜ Kubeconfig๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํŒ€์„ ์œ„ํ•œ X Team๊ณผ ๊ด€๋ฆฌ์ž ํด๋Ÿฌ์Šคํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ํด๋Ÿฌ์Šคํ„ฐ์—๋Š” ํ•ด๋‹น ๊ณ ๊ธ‰ ์„œ๋น„์Šค ๊ณ„์ •์ธ Kube-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์œ„์น˜ํ•œ ์ž์ฒด์ ์ธ ๊ด‘๋ฒ”์œ„ํ•œ Tiller๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ฐœํŒ€์„ ์œ„ํ•œ ๋ณ„๋„์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ํŠน๋ณ„ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. Tiller๋Š” ์˜ˆ์‚ฐ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ๋งŒํผ ์ „๋ ฅ์„ ๋งŽ์ด ์†Œ๋ชจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋น ๋ฅธ ์†”๋ฃจ์…˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

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

์ด์•ผ๊ธฐ๋ฅผ ๊ณ„์†ํ•˜๋ฉด์„œ RBAC์—์„œ ์ „ํ™˜ํ•˜์—ฌ ConfigMap์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ปจํ”ผ๊ทธ๋งต

Helm์€ ConfigMap์„ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ ๋ฆด๋ฆฌ์Šค, ๊ตฌ์„ฑ, ๋กค๋ฐฑ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์–ด๋””์—๋„ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ConfigMaps๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

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

์ด๊ฒƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. Tiller ์„ค์ •์„ ์žฌ์ •์˜ํ•˜๊ณ  ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ๋น„๋ฐ€์ด ๋˜๋„๋ก ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ ๋ฐฐํฌ์— ๋Œ€ํ•ด ConfigMap์ด ์•„๋‹Œ ๋น„๋ฐ€์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

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

Storage Helm์„ ๋น„๋ฐ€๋กœ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์œผ๋ฉฐ, ์ฐจ๋ก€๋กœ ์ค‘์•™์—์„œ ๋ณดํ˜ธ๋ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋‚จ๊ฒ ์ฃ  1MB์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ์ œํ•œ. ์—ฌ๊ธฐ์„œ Helm์€ etcd๋ฅผ ConfigMap์˜ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ์ด๊ฒƒ์ด ๋ณต์ œ ๋“ฑ์— ์ ํ•ฉํ•œ ๋ฐ์ดํ„ฐ ์ฒญํฌ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. Reddit์— ์ด์— ๋Œ€ํ•œ ํฅ๋ฏธ๋กœ์šด ํ† ๋ก ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋ง ๋™์•ˆ ์ด ์žฌ๋ฏธ์žˆ๋Š” ๋‚ด์šฉ์„ ์ฐพ๊ฑฐ๋‚˜ ๋ฐœ์ทŒ๋ฌธ์„ ์ฝ์–ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

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

์ฐจํŠธ๋Š” ์‚ฌํšŒ์ ์œผ๋กœ ๊ฐ€์žฅ ์ทจ์•ฝํ•˜๋ฉฐ ํŠนํžˆ ์Šคํ†ก ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ "์ค‘๊ฐ„์ž"์˜ ์†Œ์Šค๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„ , HTTP๋ฅผ ํ†ตํ•ด ๋…ธ์ถœ๋˜๋Š” ์ €์žฅ์†Œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋“œ์‹œ HTTPS๋ฅผ ํ†ตํ•ด Helm Repo๋ฅผ ๋…ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ตœ์„ ์˜ ์„ ํƒ์ด๋ฉฐ ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์‹ญ์‹œ์˜ค. ์ฐจํŠธ ์„œ๋ช… ๋ฉ”์ปค๋‹ˆ์ฆ˜. ๊ธฐ์ˆ ์€ ์ง€์˜ฅ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ณต๊ฐœ ํ‚ค์™€ ๊ฐœ์ธ ํ‚ค๊ฐ€ ์žˆ๋Š” ์ผ๋ฐ˜ PGP ์‹œ์Šคํ…œ์ธ GitHub์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ํ‚ค๋ฅผ ๊ฐ–๊ณ  ๋ชจ๋“  ๊ฒƒ์— ์„œ๋ช…ํ•˜์—ฌ ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ๊ท€ํ•˜์˜ ์ฐจํŠธ์ธ์ง€ ํ™•์ธํ•˜๊ณ  ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

๋˜ํ•œ, Helm ํด๋ผ์ด์–ธํŠธ๋Š” TLS๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. (์„œ๋ฒ„ ์ธก HTTP ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๋ผ ์ƒํ˜ธ TLS). ํ†ต์‹ ์„ ์œ„ํ•ด ์„œ๋ฒ„ ๋ฐ ํด๋ผ์ด์–ธํŠธ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†”์งํžˆ ์ €๋Š” ์ƒํ˜ธ ์ธ์ฆ์„œ๋ฅผ ์ข‹์•„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›๋ž˜, ์ฐจํŠธ ๋ฐ•๋ฌผ๊ด€ - Helm 2์šฉ Helm Repo๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ๋„๊ตฌ - ๊ธฐ๋ณธ ์ธ์ฆ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋” ํŽธ๋ฆฌํ•˜๊ณ  ์กฐ์šฉํ•˜๋‹ค๋ฉด ๊ธฐ๋ณธ ์ธ์ฆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์žˆ์Šต๋‹ˆ๋‹ค helm-gcs, ์ด๋ฅผ ํ†ตํ•ด Google Cloud Storage์—์„œ ์ฐจํŠธ ์ €์žฅ์†Œ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค๋ช…๋œ ๋ชจ๋“  ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žฌํ™œ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ณ  ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋ฉฐ ๋งค์šฐ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

HTTPS ๋˜๋Š” TLS๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ , mTLS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ธฐ๋ณธ ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ ์œ„ํ—˜์„ ๋”์šฑ ์ค„์ด๋ฉด Helm CLI ๋ฐ Chart Repo๋ฅผ ํ†ตํ•ด ์•ˆ์ „ํ•œ ํ†ต์‹  ์ฑ„๋„์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gRPC API

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

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

ํ”„๋กœ๋•์…˜ ๋ฐ ์Šคํ…Œ์ด์ง•์˜ ๊ฒฝ์šฐ gRPC์—์„œ TLS๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

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

ํˆฌ๊ตฌ ๋ณด์•ˆ

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์—์„œ Tiller์— ๋Œ€ํ•œ ๋ชจ๋“  ์š”์ฒญ์œผ๋กœ๋ถ€ํ„ฐ ์ž์‹ ์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” Tiller์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์ฑ„๋„์„ ํ™•๋ณดํ–ˆ์œผ๋ฉฐ, ์ด๋ฏธ RBAC์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  Kubernetes apiserver์˜ ๊ถŒํ•œ์„ ์กฐ์ •ํ•˜์—ฌ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๋ฉ”์ธ์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค.

๋ณดํ˜ธ๋œ ํˆฌ๊ตฌ

์ตœ์ข… ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ํ™”์‚ดํ‘œ๊ฐ€ ์žˆ๋Š” ๋™์ผํ•œ ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

์ด์ œ ๋ชจ๋“  ์—ฐ๊ฒฐ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋…น์ƒ‰์œผ๋กœ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Chart Repo์˜ ๊ฒฝ์šฐ TLS ๋˜๋Š” mTLS ๋ฐ ๊ธฐ๋ณธ ์ธ์ฆ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Tiller์šฉ mTLS๋Š” TLS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ gRPC ์„œ๋น„์Šค๋กœ ๋…ธ์ถœ๋˜๋ฉฐ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋Ÿฌ์Šคํ„ฐ๋Š” Role ๋ฐ RoleBinding์ด ์žˆ๋Š” ํŠน์ˆ˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 

์šฐ๋ฆฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ๋‹นํžˆ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธํ–ˆ์ง€๋งŒ ๋˜‘๋˜‘ํ•œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๋ ‡๊ฒŒ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

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

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

๋ณด๋„ˆ์Šค

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

์ €์žฅ์†Œ์—์„œ github.com/helm/charts ์ด์ œ ์•ฝ 300๊ฐœ์˜ ์ฐจํŠธ์™€ ๋‘ ๊ฐœ์˜ ์ŠคํŠธ๋ฆผ(Stable ๋ฐ Incubator)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—ฌํ•˜๋Š” ์‚ฌ๋žŒ์€ ์ธํ๋ฒ ์ดํ„ฐ์—์„œ ๋งˆ๊ตฌ๊ฐ„์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์šด์ง€, ๋งˆ๊ตฌ๊ฐ„์—์„œ ๋‚ ์•„๊ฐ€๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์‰ฌ์šด์ง€ ์ž˜ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ Prometheus ๋ฐ ๊ธฐํƒ€ ์›ํ•˜๋Š” ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋„๊ตฌ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ์ด์œ ๋Š” ํŒจํ‚ค์ง€๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ํฌํ„ธ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์„œ๋น„์Šค๊ฐ€ ์žˆ์–ด์š” ํ—ˆ๋ธŒ.helm.sh, ์ฐจํŠธ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ํŽธ๋ฆฌํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€ ๋” ๋งŽ์€ ์™ธ๋ถ€ ์ €์žฅ์†Œ๊ฐ€ ์žˆ๊ณ  ๊ฑฐ์˜ 800๊ฐœ์˜ ์ฐธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์–ด๋–ค ์ด์œ ๋กœ ์ฐจํŠธ๋ฅผ ์•ˆ์ • ๋ฒ„์ „์œผ๋กœ ๋ณด๋‚ด๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ €์žฅ์†Œ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Hub.helm.sh๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด๊ณ  ํ•จ๊ป˜ ๊ฐœ๋ฐœํ•ด ๋ด…์‹œ๋‹ค. ์ด ์„œ๋น„์Šค๋Š” Helm ํ”„๋กœ์ ํŠธ์— ์†ํ•˜๋ฉฐ, ํ”„๋ŸฐํŠธ ์—”๋“œ ๊ฐœ๋ฐœ์ž์ด๊ณ  ๋‹จ์ง€ ์™ธ๊ด€์„ ๊ฐœ์„ ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ UI์— ๊ธฐ์—ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

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

ํˆฌ๊ตฌ ๋ณด์•ˆ

ํด๋ž˜์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ WordPress๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์ฒด ๊ธฐ๋Šฅ์„ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž์‹ ๋งŒ์˜ ์ƒํƒœ ์ €์žฅ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ํŽธ๋ฆฌํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

Chainstack๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํšŒ์‚ฌ์—์„œ๋Š” ์„œ๋ฒ„์— MySQL ๋˜๋Š” PostgreSQL๊ณผ ๊ฐ™์€ ๊ด€๋ฆฌํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํด๋ผ์šฐ๋“œ ์–ด๋”˜๊ฐ€์— ์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

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

๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ๋ณธ ๊ณ„์ธต์„ ์‚ฌ์šฉํ•˜์—ฌ Azure์—์„œ ๊ด€๋ฆฌํ˜• MySQL์„ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ตฌ์„ฑ ๊ฐ€๋Šฅ). Azure API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์‚ฌ์šฉ ์ค€๋น„๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉํ•ดํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ด์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด OSBA(Azure ํ”Œ๋Ÿฌ๊ทธ์ธ)๋Š” ์ž๊ฒฉ ์ฆ๋ช…์„ ์„œ๋น„์Šค์— ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ด๋ฅผ Helm์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ MySQL๊ณผ ํ•จ๊ป˜ WordPress๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ด€๋ฆฌํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ „ํ˜€ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  ๋‚ด๋ถ€์˜ ์ƒํƒœ ์ €์žฅ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Helm์€ ํ•œํŽธ์œผ๋กœ๋Š” ์„œ๋น„์Šค ๋ฐฐํฌ๋ฅผ ํ—ˆ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•˜๋Š” ์ ‘์ฐฉ์ œ ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ œ๊ฐ€ ์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ๋˜ ๋‹ค๋ฅธ ๋ฐœ๊ฒฌ์€ helm-gcs ํ”Œ๋Ÿฌ๊ทธ์ธ, Google ๋ฒ„ํ‚ท(๊ฐ์ฒด ์ €์žฅ์†Œ)์„ ์‚ฌ์šฉํ•˜์—ฌ Helm ์ฐจํŠธ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

์‚ฌ์šฉ์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋„ค ๊ฐ€์ง€ ๋ช…๋ น๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  1. ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.
  2. ๊ทธ๊ฒƒ์„ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค;
  3. gcp์— ์žˆ๋Š” ๋ฒ„ํ‚ท์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  4. ํ‘œ์ค€ ๋ฐฉ์‹์œผ๋กœ ์ฐจํŠธ๋ฅผ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค.

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

๋Œ€์•ˆ

Helm์€ ์œ ์ผํ•œ ์„œ๋น„์Šค ๊ด€๋ฆฌ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋งŽ์€ ์งˆ๋ฌธ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋งˆ๋„ ์„ธ ๋ฒˆ์งธ ๋ฒ„์ „์ด ๊ทธ๋ ‡๊ฒŒ ๋นจ๋ฆฌ ๋‚˜ํƒ€๋‚œ ์ด์œ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋Œ€์•ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” Ksonnet ๋˜๋Š” Metaparticle๊ณผ ๊ฐ™์€ ํŠน์ˆ˜ ์†”๋ฃจ์…˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ์„ค๋ช…ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ชฉ์ ์œผ๋กœ ํด๋ž˜์‹ ์ธํ”„๋ผ ๊ด€๋ฆฌ ๋„๊ตฌ(Ansible, Terraform, Chef ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์นจ๋‚ด ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๋‹ค ์—ฐ์‚ฐ์ž ํ”„๋ ˆ์ž„์›Œํฌ, ์ธ๊ธฐ๊ฐ€ ๋†’์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Operator Framework๋Š” ๊ณ ๋ คํ•ด์•ผ ํ•  ์ตœ๊ณ ์˜ Helm ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค.

์ด๋Š” CNCF ๋ฐ Kubernetes์— ๋” ๊ธฐ๋ณธ์ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง„์ž…์žฅ๋ฒฝ์ด ํ›จ์”ฌ ๋†’๋‹ค., ๋” ๋งŽ์ด ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๊ณ  ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ๋œ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

๋ชจ๋“  ๊ฒƒ์ด ์–ด๋””์— ์žˆ๋Š”์ง€ ์‹œ๊ฐ์  ์ฐจํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํˆฌ๊ตฌ ๋ณด์•ˆ

x์ถ•์€ ํ˜„์žฌ ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š” ์ผ์— ๋Œ€ํ•œ ๊ฐœ์ธ ์ œ์–ด ์ˆ˜์ค€์ด๊ณ , y์ถ•์€ Kubernetes์˜ ๊ธฐ๋ณธ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค. Helm ๋ฒ„์ „ 2๋Š” ์ค‘๊ฐ„ ์–ด๋”˜๊ฐ€์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ 3์—์„œ๋Š” ํฌ๊ฒŒ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ œ์–ด ๋ฐ ๊ธฐ๋ณธ ์ˆ˜์ค€์ด ๋ชจ๋‘ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Ksonnet ์ˆ˜์ค€์˜ ์†”๋ฃจ์…˜์€ Helm 2๋ณด๋‹ค ์—ฌ์ „ํžˆ ์—ด๋“ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์„ธ์ƒ์— ๋˜ ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์‚ดํŽด๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ตฌ์„ฑ ๊ด€๋ฆฌ์ž๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Kubernetes์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

Operator Framework๋Š” Kubernetes์— ์™„์ „ํžˆ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณต๋˜๋ฉฐ ์ด๋ฅผ ํ›จ์”ฌ ๋” ์šฐ์•„ํ•˜๊ณ  ๊ผผ๊ผผํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค(๋‹จ, ์ดˆ๋ณด ์ˆ˜์ค€์— ๋Œ€ํ•ด ๊ธฐ์–ตํ•˜์„ธ์š”). ์˜คํžˆ๋ ค Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŒจํ‚ค์ง•ํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€๋Ÿ‰ ์ˆ˜์ง‘๊ธฐ๋ณด๋‹ค๋Š” ์ „๋ฌธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์ด๋ฅผ ์œ„ํ•œ ๊ด€๋ฆฌ ์ƒ์„ฑ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

ํ™•์žฅ๊ธฐ๋Š” ๋‹จ์ˆœํžˆ ์ œ์–ด ๊ธฐ๋Šฅ์„ ์•ฝ๊ฐ„ ๊ฐœ์„ ํ•˜๊ณ , ์›Œํฌํ”Œ๋กœ๋ฅผ ๋ณด์™„ํ•˜๊ฑฐ๋‚˜, CI/CD ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋ถ€๋ถ„์„ ์ถ•์†Œํ•ฉ๋‹ˆ๋‹ค.

ํ—ฌ๋ฆ„์˜ ๋ฏธ๋ž˜

์ข‹์€ ์†Œ์‹์€ Helm 3์ด ์ถœ์‹œ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Helm 3.0.0-alpha.2์˜ ์•ŒํŒŒ ๋ฒ„์ „์ด ์ด๋ฏธ ์ถœ์‹œ๋˜์—ˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋‹นํžˆ ์•ˆ์ •์ ์ด์ง€๋งŒ ๊ธฐ๋Šฅ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.

ํ—ฌ๋ฆ„ 3์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์šฐ์„  ์ด ์ด์•ผ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ‹ธ๋Ÿฌ์˜ ์‹ค์ข…, ๊ตฌ์„ฑ ์š”์†Œ๋กœ. ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋“ฏ์ด ์ด๊ฒƒ์€ ์•„ํ‚คํ…์ฒ˜ ๋ณด์•ˆ์˜ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ๋ชจ๋“  ๊ฒƒ์ด ๋‹จ์ˆœํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— ํฐ ๋ฐœ์ „์ž…๋‹ˆ๋‹ค.

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

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

๋‚˜์—๊ฒŒ ๋…ผ๋ž€์ด ๋˜๋Š” ์ด์•ผ๊ธฐ๋Š” ๋ฃจ์•„ ์ง€์›, ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ์„ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ ์—”์ง„์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” Lua์˜ ์—ด๋ ฌํ•œ ํŒฌ์€ ์•„๋‹ˆ์ง€๋งŒ ์ด๊ฒƒ์€ ์™„์ „ํžˆ ์„ ํƒ์ ์ธ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ 3๋ฒˆ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. Lua๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Lua๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋“ค, Go๋ฅผ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์šฐ๋ฆฌ์˜ ๊ฑฐ๋Œ€ํ•œ ์บ ํ”„์— ์ฐธ์—ฌํ•˜๊ณ  ์ด๋ฅผ ์œ„ํ•ด go-tmpl์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์ œ๊ฐ€ ํ™•์‹คํžˆ ๋†“์น˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ์€ ์Šคํ‚ค๋งˆ ์ถœํ˜„ ๋ฐ ๋ฐ์ดํ„ฐ ์œ ํ˜• ๊ฒ€์ฆ. int ๋˜๋Š” string์— ๋” ์ด์ƒ ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋ฉฐ XNUMX์„ ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ’์— ๋Œ€ํ•ด ์ด๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” JSONS ์Šคํ‚ค๋งˆ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

๋Œ€ํญ ์žฌ์ž‘์—… ์˜ˆ์ • ์ด๋ฒคํŠธ ์ค‘์‹ฌ ๋ชจ๋ธ. ์ด๋ฏธ ๊ฐœ๋…์ ์œผ๋กœ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. Helm 3 ๋ธŒ๋žœ์น˜๋ฅผ ๋ณด๋ฉด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ด๋ฒคํŠธ์™€ ํ›„ํฌ ๋ฐ ๊ธฐํƒ€ ํ•ญ๋ชฉ์ด ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํฌ๊ฒŒ ๋‹จ์ˆœํ™”๋˜๊ณ  ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค์™€ ์ด์— ๋Œ€ํ•œ ๋ฐ˜์‘์— ๋Œ€ํ•œ ์ œ์–ด๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Helm 3์€ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ์•ˆ์ „ํ•˜๋ฉฐ ๋” ์žฌ๋ฏธ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ Helm 2๋ฅผ ์ข‹์•„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ Kubernetes๊ฐ€ ๋”์šฑ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Helm์€ Kubernetes์˜ ๊ฐœ๋ฐœ์„ ํ™œ์šฉํ•˜๊ณ  Kubernetes๋ฅผ ์œ„ํ•œ ์šฐ์ˆ˜ํ•œ ๊ด€๋ฆฌ์ž๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์ข‹์€ ์†Œ์‹์€ DevOpsConf ์•Œ๋ ‰์‚ฐ๋” ์นด์š”๋กœํ”„(Alexander Khayorov)๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ์•ˆ์ „ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ ๋ฐ ์šด์˜ ํ”„๋กœ์„ธ์Šค ํ†ตํ•ฉ์— ๊ด€ํ•œ ์ปจํผ๋Ÿฐ์Šค๊ฐ€ ๋ชจ์Šคํฌ๋ฐ”์—์„œ ๊ฐœ์ตœ๋  ์˜ˆ์ •์ž„์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค. 30์›” 1์ผ๊ณผ XNUMX์›” XNUMX์ผ. 20์›” XNUMX์ผ๊นŒ์ง€ ๊ฐ€๋Šฅํ•ด์š” ๋ ˆํฌํŠธ๋ฅผ ์ œ์ถœํ•˜๋‹ค ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ๊ฒฝํ—˜์„ ์•Œ๋ ค์ฃผ์„ธ์š”. ๋งŽ์€ ๊ฒƒ ์ค‘ ํ•˜๋‚˜ DevOps ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์ž‘์—….

์ปจํผ๋Ÿฐ์Šค ์ฒดํฌํฌ์ธํŠธ์™€ ๋‰ด์Šค๋ฅผ ํŒ”๋กœ์šฐํ•˜์„ธ์š”. ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ ะธ ์ „๋ณด ์ฑ„๋„.

์ถœ์ฒ˜ : habr.com

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