Helm

Helm์ด๋ž€?

  • ์—ฌ๋Ÿฌ๊ฐ€์ง€ k8s yaml๋“ค์„ package๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์„๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค.

Concept

  • Chart
    • Kubernetes์˜ Resource๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์ •์˜ ๋œ ๊ฒƒ
    • (homebrew formula, apt dpkg, yum rpm file๊ณผ ๋™์ผํ•œ ์ปจ์…‰)
  • Repository
    • Chart๋ฅผ ์ €์žฅ ๋ฐ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„
  • Release
    • Chart๋ฅผ ํ†ตํ•ด Kubernetes์˜ Resource๋กœ instanceํ™” ํ•œ ๊ฒƒ

Helm Getting Started

  • Helm ์„ค์น˜ํ•˜๊ธฐ
brew install helm
  • Helm Repository ๋“ฑ๋กํ•˜๊ธฐ
helm repo add stable https://charts.helm.sh/stable
helm repo list
  • Helm์„ ํ†ตํ•ด ์ธ์Šคํ„ด์Šคํ™” ํ•ด๋ณด๊ธฐ
helm install stable/mysql --generate-name
  • ์ธ์Šคํ„ด์Šค ํ™•์ธํ•˜๊ธฐ
helm ls
  • Helm์„ ํ†ตํ•ด ์ธ์Šคํ„ด์Šคํ™” ๋‹ค์‹œ ์ œ๊ฑฐํ•˜๊ธฐ
helm uninstall smiling-penguin

Helm Chart์— ๋Œ€ํ•ด

  • Helm Create ์ƒ์„ฑ
โฏ helm create helm-example
Creating helm-example

.
โ””โ”€โ”€ helm-example
    โ”œโ”€โ”€ Chart.yaml - Chart์˜ ์ •๋ณด๋ฅผ ์ •์˜ํ•˜๋Š” ํŒŒ์ผ๋กœ Chart์˜ ์ด๋ฆ„, ๋ฒ„์ „ ๋“ฑ์„ ์ •์˜
    โ”œโ”€โ”€ charts - dependency chart ํŒŒ์ผ๋“ค์ด ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์— ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    โ”œโ”€โ”€ templates - k8s ๋ฆฌ์†Œ์Šค ํ…œํ”Œ๋ฆฟ์ด ๋ณด๊ด€๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ
    โ”‚ย ย  โ”œโ”€โ”€ NOTES.txt - Chart๋ฅผ ์„ค์น˜ ํ›„ ์ถœ๋ ฅ๋˜๋Š” ๋‚ด์šฉ์„ ์ •์˜
    โ”‚ย ย  โ”œโ”€โ”€ _helpers.tpl
    โ”‚ย ย  โ”œโ”€โ”€ deployment.yaml
    โ”‚ย ย  โ”œโ”€โ”€ hpa.yaml
    โ”‚ย ย  โ”œโ”€โ”€ ingress.yaml
    โ”‚ย ย  โ”œโ”€โ”€ service.yaml
    โ”‚ย ย  โ”œโ”€โ”€ serviceaccount.yaml
    โ”‚ย ย  โ””โ”€โ”€ tests
    โ”‚ย ย      โ””โ”€โ”€ test-connection.yaml
    โ””โ”€โ”€ values.yaml - ํ…œํ”Œ๋ฆฟ์— ์‚ฌ์šฉ๋  ๋ณ€์ˆ˜๋“ค์„ ๋ชจ์•„๋†“์€ ํŒŒ์ผ

4 directories, 10 files
  • templats
    • ์˜ˆ์•ฝ์–ด๋“ค์„ ํ†ตํ•ด values.yaml ๊ฐ’์„ ์ฝ์–ด ์ฃผ์ž…ํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
{{- define "nginx.fullname" }}
{{/* ... */}}
{{ end -}}
  • chart hook
    • ์ฐจํŠธ๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์— ์›ํ•˜๋Š” pod๋“ค์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
annotations:
  "helm.sh/hook": post-install

Reference