Was sind Helm Charts? Grundkonzept & Architektur
Helm ist der Standard-Package-Manager für Kubernetes – vergleichbar mit apt für Debian oder pip für Python. Ein Helm Chart bündelt alle Kubernetes-YAML-Manifeste, die für eine Anwendung benötigt werden, in einem einzigen, versionierten Paket. Statt also Dutzende von Deployment-, Service-, Ingress- und ConfigMap-Dateien manuell zu verwalten, definieren Entwickler alles in einem Chart und installieren es mit einem einzigen Befehl.
Drei zentrale Begriffe prägen das Helm-Universum:
- Chart: Ein Paket mit allen Ressourcendefinitionen (templates/, Chart.yaml, values.yaml)
- Release: Eine spezifische Installation eines Charts im Cluster – ein Chart kann mehrfach installiert werden, jede Instanz ist ein eigenes Release
- Repository: Ein öffentlicher oder privater Speicherort, an dem Charts versioniert abgelegt und bezogen werden können
Helm Version 3 (aktuell 2026) arbeitet tillerlos – im Gegensatz zu Helm 2 wird kein separater Server (Tiller) im Cluster benötigt. Die Sicherheit und Einfachheit haben sich dadurch massiv verbessert.
Warum Helm? Vorteile gegenüber raw Kubernetes-YAML
Roh-YAML-Manifeste für Kubernetes sind machbar – aber sobald mehrere Umgebungen (Development, Staging, Production) oder ähnliche Services mit geringen Abweichungen deployed werden, zeigen sich die Grenzen:
- Wiederverwendbarkeit: Ein Chart parametrisiert Werte wie Replica-Anzahl, Image-Tag oder Umgebungsvariablen über die
values.yaml. Ohne Helm müssten Sie für jede Umgebung YAML-Dateien duplizieren. - Versionierung & Rollbacks: Helm speichert den Verlauf jedes Releases. Mit
helm rollbackkönnen Sie in Sekunden zu einer vorherigen Version zurückkehren – ohne manuelle YAML-Wiederherstellung. - Abhängigkeitsmanagement: Charts können Abhängigkeiten zu anderen Charts deklarieren (z. B. ein WordPress-Chart, das MariaDB benötigt). Helm lädt und installiert diese automatisch.
- Community & Ecosystem: Tausende fertige Charts für bekannte Anwendungen wie Nginx, WordPress, Prometheus, Grafana, Jenkins und ELK Stack stehen in öffentlichen Repositories bereit.
- Idempotenz: Helm stellt sicher, dass der Cluster-Zustand nach jeder Installation oder jedem Upgrade dem definierten Chart-Zustand entspricht.
Helm installieren – Schritt für Schritt (2026)
Die Installation von Helm ist unkompliziert und in wenigen Minuten erledigt. Helm 3 läuft als einzelnes Binary und benötigt lediglich Zugriff auf eine kubectl-Konfiguration.
Installation via Paketmanager
Linux (apt – Debian/Ubuntu):
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
macOS (Homebrew):
brew install helm
Windows (Chocolatey):
choco install kubernetes-helm
Binary-Installation (alle Plattformen):
curl -fsSL https://get.helm.sh/helm-v3.16.0-linux-amd64.tar.gz -o helm.tar.gz
tar -xzf helm.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm
helm version
Nach der Installation prüfen Sie mit helm version, ob alles korrekt eingerichtet ist. Sie sollten eine Ausgabe ähnlich wie version.BuildInfo{Version:"v3.16.0", ...} sehen.
Charts suchen und installieren – Der erste Release
Sobald Helm installiert ist und ein Kubernetes-Cluster (z. B. K3s auf dem VPS) läuft, können Sie die ersten Charts ausprobieren.
Repository hinzufügen
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Nach Charts suchen
helm search repo bitnami/nginx
helm search repo bitnami/wordpress
Ein Chart installieren
helm install mein-nginx bitnami/nginx --namespace default --create-namespace
Mit diesem Befehl wird Nginx im Cluster deployed. mein-nginx ist der Release-Name. Über kubectl get all sehen Sie, dass ein Pod, ein Service und ggf. ein Deployment angelegt wurden – alles aus einem einzigen Befehl.
Installation mit angepassten Werten
helm install mein-wordpress bitnami/wordpress \
--set wordpressUsername=admin \
--set wordpressPassword=meinPasswort \
--set ingress.enabled=true \
--set ingress.hostname=blog.meinedomain.de
Alternativ können Sie eine eigene values.yaml mitgeben:
helm install mein-wordpress bitnami/wordpress -f meine-values.yaml
Die Chart-Struktur im Detail: Chart.yaml, values.yaml & templates/
Ein Helm Chart hat eine fest definierte Verzeichnisstruktur. Hier die wichtigsten Dateien und Ordner:
| Datei / Ordner | Beschreibung |
|---|---|
Chart.yaml |
Metadaten: Name, Version, Beschreibung, API-Version, Abhängigkeiten |
values.yaml |
Standardwerte für alle Template-Variablen – die zentrale Konfigurationsdatei |
templates/ |
Go-Template-Dateien (.yaml, .tpl), die zur Laufzeit mit Werten aus values.yaml gefüllt werden |
charts/ |
Abhängigkeiten (Sub-Charts), die manuell oder per helm dependency update eingebunden werden |
templates/NOTES.txt |
Nach der Installation angezeigte Hinweise (z. B. Zugangsdaten, URLs) |
templates/_helpers.tpl |
Wiederverwendbare Go-Template-Fragmente (z. B. Labels, Namespace-Helfer) |
Chart.yaml – Beispiel:
apiVersion: v2
name: my-app
description: Meine Beispiel-Anwendung
version: 1.0.0
appVersion: "1.0"
type: application
dependencies:
- name: redis
version: ">17.0.0"
repository: "https://charts.bitnami.com/bitnami"
Die Template-Engine von Helm verwendet Go-Templates ({{ .Values.replicaCount }}), die während der Installation mit den Werten aus values.yaml oder --set interpoliert werden. Das macht Helm extrem flexibel und erlaubt die Wiederverwendung eines Charts für Dutzende unterschiedlicher Umgebungen.
Releases verwalten: Upgrade, Rollback & Löschen
Nach der ersten Installation beginnt die eigentliche Arbeit: Releases müssen aktualisiert, zurückgesetzt oder gelöscht werden können. Helm bietet dafür eine Reihe von Kommandos:
| Befehl | Beschreibung |
|---|---|
helm list -A |
Alle Releases in allen Namespaces anzeigen |
helm status mein-release |
Status und Details eines Releases abrufen |
helm upgrade mein-release chart/ |
Ein Release auf eine neue Chart-Version aktualisieren |
helm upgrade mein-release chart/ --values neue-values.yaml |
Mit geänderten Werten upgraden |
helm history mein-release |
Alle Revisionen eines Releases anzeigen |
helm rollback mein-release 2 |
Auf Revision 2 zurücksetzen |
helm uninstall mein-release |
Release löschen (samt aller Kubernetes-Ressourcen) |
helm get values mein-release |
Die aktuell gesetzten Werte eines Releases anzeigen |
Ein typischer Upgrade-Workflow sieht so aus:
# Chart aktualisieren & Werte anpassen
helm repo update
helm upgrade mein-wordpress bitnami/wordpress \
--set [email protected] \
--reuse-values
# Bei Fehlern sofort zurück
helm rollback mein-wordpress 3
Helm speichert standardmäßig die letzten 10 Revisionen eines Releases. Sollten Sie mehr (oder weniger) Revisionen vorhalten wollen, steuern Sie das über --history-max beim Upgrade.
Praktisches Beispiel: WordPress mit Helm deployen
Ein vollständiges Deployment von WordPress inklusive MariaDB-Datenbank auf einem Kubernetes-Cluster (z. B. K3s auf dem VPS) zeigt die Stärke von Helm eindrucksvoll:
# 1. Bitnami Repository hinzufügen
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# 2. WordPress installieren (mit MariaDB als Sub-Chart)
helm install my-blog bitnami/wordpress \
--set wordpressBlogName="Mein DevOps Blog" \
--set [email protected] \
--set wordpressUsername=admin \
--set wordpressPassword=geheimesPasswort \
--set ingress.enabled=true \
--set ingress.hostname=blog.hostazar.com \
--set ingress.tls=true \
--set ingress.selfSigned=false \
--namespace wordpress --create-namespace
# 3. Nach 2-3 Minuten Status prüfen
helm status my-blog -n wordpress
kubectl get all -n wordpress
Nach erfolgreicher Installation zeigt Helm die Zugangsdaten und die URL an (aus der NOTES.txt). Was früher stundenlange manuelle Konfiguration bedeutete, erledigt Helm in unter fünf Minuten – inklusive LoadBalancer, PersistentVolume, Secrets und TLS-Ingress.
Helm Repository selbst hosten
Für Unternehmen oder Teams, die eigene Charts entwickeln und intern bereitstellen möchten, ist ein eigenes Helm-Repository die ideale Lösung. Die Anforderungen sind überraschend gering:
- Ein Webserver (Nginx, Apache, S3-Bucket oder GitHub Pages)
- Ein
index.yaml, das alle verfügbaren Chart-Versionen auflistet - Die gepackten
.tgz-Chart-Dateien
Repository mit GitHub Pages hosten
# Chart packen
helm package ./mein-chart/
# index.yaml erzeugen/aktualisieren
helm repo index . --url https://dein-user.github.io/helm-charts/
# In GitHub Pages Branch (gh-pages) pushen
git checkout gh-pages
mv mein-chart-1.0.0.tgz index.yaml .
git add .
git commit -m "Chart Release 1.0.0"
git push origin gh-pages
Anschließend können Kollegen das Repository mit helm repo add meinrepo https://dein-user.github.io/helm-charts/ hinzufügen und die Charts installieren. Alternativ eignen sich ChartMuseum oder Harbor als professionelle Helm-Repository-Manager mit UI, Role-Based Access Control (RBAC) und Sicherheits-Scanning.
Sicherheit: Signed Charts & Provenance
In Produktionsumgebungen ist die Herkunftssicherung von Charts essenziell. Helm unterstützt seit Version 3 die Signierung und Verifikation von Charts mittels GPG:
# Chart signieren
helm package --sign --key 'mein-key' --keyring ~/.gnupg/secring.gpg ./mein-chart/
# Provenance-Datei prüfen
helm verify mein-chart-1.0.0.tgz
# Nur signierte Charts installieren
helm install mein-release ./mein-chart-1.0.0.tgz --verify
Die Datei mein-chart-1.0.0.tgz.prov enthält die GPG-Signatur und einen SHA256-Hash. So lässt sich sicherstellen, dass ein Chart nicht manipuliert wurde. Zusätzlich sollten Sie:
- Nur Charts aus vertrauenswürdigen Quellen (offizielle Repositories) installieren
- Regelmäßig
helm repo updateausführen und neue Versionen prüfen - Die
values.yamlvor der Installation auf kritische Einstellungen (z. B. offene Ports, Standard-Passwörter) kontrollieren
Best Practices für Helm Charts im Jahr 2026
Nachdem wir die Grundlagen durchgegangen sind, hier die wichtigsten Best Practices für den professionellen Einsatz:
- Values sinnvoll strukturieren: Nutzen Sie YAML-Anchor und -Aliase (
&default,<<: *default), um Redundanzen in dervalues.yamlzu vermeiden. - Semantisches Versioning: Halten Sie sich an SemVer (major.minor.patch) für Ihre Charts. Änderungen an der Template-Struktur erfordern einen Major-Bump.
- Helm-Test nutzen: Definieren Sie Test-Hooks in
templates/tests/und führen Siehelm test mein-releasenach dem Deployment aus. - CI/CD-Integration: Binden Sie Helm in Ihre CI/CD-Pipeline ein (GitHub Actions, GitLab CI, ArgoCD). So werden Änderungen automatisch in einem Staging-Cluster validiert, bevor sie in Production landen.
- Keine Secrets in values.yaml: Hinterlegen Sie sensible Daten niemals im Klartext. Nutzen Sie Helm Secrets, Mozilla SOPS oder externe Secrets-Manager wie HashiCorp Vault.
- Helm-Dokumentation generieren: Tools wie
helm-docserstellen automatisch eine README aus denvalues.yaml-Kommentaren – so bleibt die Dokumentation immer aktuell.
Fazit: Helm ist 2026 unverzichtbar
Helm Charts haben sich über die letzten Jahre als der De-facto-Standard für Kubernetes-Paketmanagement etabliert. Ob Sie einen einfachen Nginx-Server, eine komplexe WordPress-Installation mit MariaDB oder einen vollständigen Monitoring-Stack (Prometheus + Grafana) deployen möchten – Helm reduziert den Aufwand drastisch und macht Deployments reproduzierbar, versionierbar und sicher.
Für DevOps-Engineers, die regelmäßig mit Kubernetes arbeiten, ist Helm im Jahr 2026 keine Option mehr, sondern eine Notwendigkeit. Die Kombination aus wiederverwendbaren Charts, einfachem Release-Management und der riesigen Community-Bibliothek spart Zeit und vermeidet Fehler, die bei manuellen YAML-Manifesten unvermeidbar wären. Starten Sie noch heute – mit helm repo add bitnami ... und dem ersten eigenen Release.