Psát YAML manifesty pro každý Kubernetes deployment ručně je únavné a chybové. Helm slibuje šablonování, verzování a sdílení Kubernetes konfigurací. Po měsíci používání sdílíme naše zkušenosti.
Problém, který Helm řeší¶
Typická aplikace v Kubernetes potřebuje Deployment, Service, ConfigMap, Secret, Ingress, PersistentVolumeClaim… To je snadno 200+ řádků YAML. A když máte deset prostředí (dev, staging, produkce × klienti), začnete copy-pastovat a brzy se v tom ztratíte.
Helm zavádí koncept chartu — balíčku šablon s parametry. Jeden chart, různé values pro různá prostředí. Verzovaný, sdílitelný, testovatelný.
Architektura Helm 2¶
Helm 2 má dvě komponenty: helm (CLI klient) a Tiller (server-side komponenta běžící v clusteru). Tiller drží stav releases a aplikuje změny do clusteru.
Tiller je kontroverzní — běží s cluster-admin právy a je potenciální security riziko. Řešíme to pomocí TLS certifikátů a namespace-scoped Tiller instancí.
$ helm init --tiller-tls --tiller-tls-verify
$ helm install stable/prometheus \
--name monitoring \
--namespace observability \
--values prod-values.yaml
Náš první vlastní chart¶
Vytvořili jsme generický chart pro Java microservices. Parametrizuje se image name, repliky, resource limits, environment variables, ingress host. Jeden chart pro všechny naše Spring Boot služby.
myapp-chart/
Chart.yaml # metadata
values.yaml # defaultní hodnoty
templates/
deployment.yaml # Go template
service.yaml
ingress.yaml
configmap.yaml
Stable repository — poklady komunity¶
Helm má oficiální repository stabilních chartů. Prometheus, Grafana, nginx-ingress, Jenkins, Redis, PostgreSQL — vše připravené k nasazení. Kvalita se liší, ale jako základ k úpravě je to vynikající.
Lessons learned¶
- Verzujte charty — semantic versioning, jako knihovny
- Vlastní chart repository — ChartMuseum pro interní charty
- Helm test — pište testy pro své charty
- Lint —
helm lintchytí spoustu chyb ještě před deployem - Dry run —
helm install --dry-run --debugpro review generovaných manifestů
Helm je must-have pro Kubernetes¶
Bez Helm bychom se v YAML manifestech utopili. Tiller není dokonalý a security model má mezery, ale produktivita, kterou Helm přináší, je obrovská. Sledujeme diskuze o Helm 3, který by měl Tiller odstranit úplně.