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 lint vor jedem Push: Es findet fehlende Pflichtfelder und Template-Fehler früher als der Cluster.
  • Werte in Git, Geheimnisse nicht: prod-values.yaml gehört ins Repository, Passwörter in einen externen Speicher oder in verschlüsselte Dateien.
  • Wer unterscheidet Werte und Zustand: helm get values zeigt die vom Nutzer gesetzten Werte, helm get values --all auch 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.