Helm Basics


kubectl apply -f app-deploy.yaml
kubectl apply -f app-pv.yaml
kubectl apply -f app-pvc.yaml
kubectl apply -f app-svc.yaml
kubectl apply -f app-secret.yaml

K8s ๋กœ ๊ฐ„๋‹จํ•œ Application ์„ ๋ฐฐํฌํ•˜๋ ค๋ฉด Deployment, PV, PVC, Service, Secret ๋“ฑ ๋‹ค์–‘ํ•œ Object ๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค. ์ด์— ๋”ฐ๋ผ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” yaml ํŒŒ์ผ์˜ ์ˆ˜๋„ ๋Š˜์–ด๋‚œ๋‹ค.

helm install wordpress
helm upgrade wordpress
helm rollback wordpress
helm uninstall wordpress

Helm ์„ ํ™œ์šฉํ•˜๋ฉด Application ์„ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  K8s Object ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, Application ์„ K8s Cluster ์— ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์ธ ๊ฒƒ์ด๋‹ค.

Helm2 vs Helm3

Helm2 ์—์„  Tiller ๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ K8s Cluster ์— ์„ค์น˜๋˜์–ด helm cli ๋กœ ๋ถ€ํ„ฐ ์ „๋‹ฌ๋œ ๋ช…๋ น๋“ค์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ์„ํ–ˆ๋‹ค. Helm3 ๋ถ€ํ„ด Tiller ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์—†์–ด์กŒ๋‹ค. Upgrade ์™€ Rollback ์—์„œ๋„ Helm3 ๋ถ€ํ„ด 3-Way Strategic Marge Patch ๋ผ๋Š” ๊ฐœ๋…์„ ๋„์ž…ํ–ˆ๋‹ค.

Helm Components


# helm install {release-name} {chart-name}
helm install my-site bitnami/wordpress
helm install my-2-site bitnami/wordpress

Helm ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Chart ํ˜•ํƒœ๋กœ K8s Object ๋“ค์„ ํŒจํ‚ค์ง€ํ™”ํ•ด์„œ ๊ด€๋ฆฌํ•œ๋‹ค. Chart ๋Š” ArtifactHub.io ๋ผ๋Š” ๊ณณ์—์„œ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค. Chart ๋ฅผ ํ™œ์šฉํ•ด Application ์„ ๋ฐฐํฌํ•  ๋•Œ Release ๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Š” ๋™์ผํ•œ Application ์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. Application ์„ K8s Cluster ์— ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ Release, Chart ๋“ฑ์˜ Metadata ๋Š” Secret ํ˜•ํƒœ๋กœ ๋ณด๊ด€๋œ๋‹ค.

Helm Charts


hello-world-chart/
โ”œโ”€โ”€ charts/     # Dependency Charts
โ”œโ”€โ”€ templates/  # Templates directory
โ”œโ”€โ”€ Chart.yaml  # Chart information
โ””โ”€โ”€ values.yaml # Configurable values

Helm Chart ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ„์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. WordPress Chart ์˜ˆ์‹œ๋ฅผ ํ™•์ธํ•ด๋ณด์ž.

helm install --values custom-values.yaml my-release bitnami/wordpress

Application ์˜ ์„ค์ •๊ฐ’์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ custom configuration values ๋“ค์„ ์„ ์–ธํ•œ yaml ํŒŒ์ผ์„ ์œ„์™€ ๊ฐ™์ด ๋„˜๊ฒจ์ฃผ๋ฉด๋œ๋‹ค.

References