YAML-Manifeste für jedes Kubernetes-Deployment von Hand zu schreiben, ist mühsam und fehleranfällig. Helm verspricht Templating, Versionierung und das Teilen von Kubernetes-Konfigurationen. Nach einem Monat Nutzung teilen wir unsere Erfahrungen.
Das Problem, das Helm löst¶
Eine typische Anwendung in Kubernetes benötigt Deployment, Service, ConfigMap, Secret, Ingress, PersistentVolumeClaim… Das sind leicht 200+ Zeilen YAML. Und wenn Sie zehn Umgebungen haben (Dev, Staging, Produktion x Kunden), fangen Sie an zu kopieren und verlieren schnell den Überblick.
Helm führt das Konzept eines Charts ein – ein Paket von Templates mit Parametern. Ein Chart, verschiedene Values für verschiedene Umgebungen. Versioniert, teilbar, testbar.
Helm 2 Architektur¶
Helm 2 hat zwei Komponenten: helm (CLI-Client) und Tiller (serverseitige Komponente, die im Cluster läuft). Tiller hält den Zustand der Releases und wendet Änderungen auf den Cluster an.
Tiller ist umstritten – es läuft mit Cluster-Admin-Privilegien und ist ein potenzielles Sicherheitsrisiko. Wir begegnen dem mit TLS-Zertifikaten und Namespace-beschränkten Tiller-Instanzen.
$ helm init --tiller-tls --tiller-tls-verify
$ helm install stable/prometheus --name monitoring --namespace observability --values prod-values.yaml
Unser erstes eigenes Chart¶
Wir haben ein generisches Chart für Java-Microservices erstellt. Es wird parametrisiert durch Image-Name, Replicas, Ressourcenlimits, Umgebungsvariablen und Ingress-Host. Ein Chart für alle unsere Spring Boot Services.
myapp-chart/
Chart.yaml # metadata
values.yaml # default values
templates/
deployment.yaml # Go template
service.yaml
ingress.yaml
configmap.yaml
Stable Repository – Schätze der Community¶
Helm hat ein offizielles Repository stabiler Charts. Prometheus, Grafana, nginx-ingress, Jenkins, Redis, PostgreSQL – alles bereit zum Deployment. Die Qualität variiert, aber als Ausgangspunkt für Anpassungen ist es ausgezeichnet.
Lessons Learned¶
- Versionieren Sie Ihre Charts – Semantic Versioning, wie Bibliotheken
- Eigenes Chart-Repository – ChartMuseum für interne Charts
- Helm Test – schreiben Sie Tests für Ihre Charts
- Lint –
helm lintfängt viele Fehler vor dem Deployment ab - Dry Run –
helm install --dry-run --debugzur Überprüfung generierter Manifeste
Helm ist ein Must-Have für Kubernetes¶
Ohne Helm würden wir in YAML-Manifesten ertrinken. Tiller ist nicht perfekt und das Sicherheitsmodell hat Lücken, aber die Produktivität, die Helm bringt, ist enorm. Wir verfolgen die Diskussionen über Helm 3, das Tiller komplett entfernen soll.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns