helm ist der Paketmanager für Kubernetes. Ein Chart bündelt zusammengehörige Manifeste, ein Release ist eine installierte Instanz davon. Diese Befehlsreferenz deckt die Praxis ab: Repository, Installation, Werte, Vorschau, Rollback.
Repository und Suche
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm repo list
helm search repo nginx
helm search hub prometheus
Ohne helm repo update arbeitet man mit veralteten Indexdaten – ein häufiger Grund, warum eine gewünschte Chart-Version nicht gefunden wird.
Installieren und Aktualisieren
# Installation in eigenem Namespace
helm install web ./mein-chart -f prod-values.yaml \
--namespace web --create-namespace
# Idempotent: installiert oder aktualisiert
helm upgrade --install web ./mein-chart -f prod-values.yaml -n web
# Einzelne Werte überschreiben
helm upgrade web ./mein-chart -n web --set replicas=4 --set image.tag=1.4.0
# Auf eine bestimmte Revision zurückrollen
helm rollback web 3 -n web
# Release entfernen (Historie bleibt, --keep-history optional)
helm uninstall web -n web
Vorschau – ohne etwas zu ändern
# Manifeste rendern und ausgeben
helm template web ./mein-chart -f prod-values.yaml
# Mit Server prüfen, ob die Objekte gültig wären
helm install web ./mein-chart --dry-run=server -n web
# Werte, die tatsächlich verwendet werden
helm get values web -n web
helm get manifest web -n web
# Unterschied zur laufenden Version (Plugin helm-diff)
helm diff upgrade web ./mein-chart -f prod-values.yaml -n web
helm diff ist kein Kernbefehl, sondern ein Plugin (helm plugin install https://github.com/databus23/helm-diff) – in der Praxis aber das wichtigste Werkzeug überhaupt, weil es vor dem Ausrollen zeigt, was sich ändert.
Zustand, Historie und Tests
helm list -A # alle Releases, alle Namespaces
helm status web -n web
helm history web -n web # Revisionen mit Beschreibung
helm test web -n web # Hook vom Typ "test" ausführen
Eigene Charts bauen und paketieren
helm create mein-chart # Gerüst anlegen
helm lint mein-chart # Struktur und Templates prüfen
helm package mein-chart # .tgz erzeugen
helm push mein-chart-1.0.0.tgz oci://registry.example.org/helm
# Abhängigkeiten eines Charts auflösen
helm dependency update ./mein-chart
helm dependency list ./mein-chart
Praxis-Tipps
helm lintvor jedem Push: Es findet fehlende Pflichtfelder und Template-Fehler früher als der Cluster.- Werte in Git, Geheimnisse nicht:
prod-values.yamlgehört ins Repository, Passwörter in einen externen Speicher oder in verschlüsselte Dateien. - Wer unterscheidet Werte und Zustand:
helm get valueszeigt die vom Nutzer gesetzten Werte,helm get values --allauch die Standardwerte. Bei Fehlersuche ist der Blick in beide aufschlussreich. - Nicht von Hand nachpatchen: Eine Direktänderung am Deployment wird beim nächsten
helm upgradeüberschrieben. Änderungen gehören in Werte oder Chart. - Helm-Template-Syntax: Braucht ein Manifest ein literales
{{, muss es maskiert werden:{{ "{{" }}.
Verwandte Grundlagen: Kubernetes, Helm, kubectl-Befehle, Kustomize.