Begriff
Helm
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Stell dir vor, du willst "WordPress" auf deinem Kubernetes-Cluster installieren.
Du müsstest 10 YAML-Dateien schreiben: Datenbank, Webserver, Netzwerk, Speicher, Passwörter...
Das ist mühsam und fehleranfällig.
Helm ist wie der App Store (oder apt-get / npm) für Kubernetes.
Du sagst einfach: helm install wordpress.
Helm lädt ein Paket ("Chart") herunter, füllt die Lücken aus und installiert alles fix und fertig.
Merksatz: Der Paketmanager für Kubernetes, der die Definition, Installation und Aktualisierung komplexer Kubernetes-Anwendungen vereinfacht.
Du nutzt Charts (Pakete).
- Öffentliche Charts: Von Bitnami oder den Herstellern selbst (Prometheus, Grafana, Nginx).
- Eigene Charts: Du baust Templates für deine Firmen-Software.
values.yaml: Hier konfigurierst du alles ("Setze Passwort auf '1234'").templates/: Hier liegen die YAML-Baupläne mit Platzhaltern ({{ .Values.password }}).
1. Templating Engine (Go Templates)
Helm nutzt die Go-Template-Sprache. Das ist mächtig (Schleifen, If-Else), aber oft hässlich zu lesen. Einrückungs-Fehler in YAML durch Templates sind der häufigste Nerv-Faktor ("YAML Hell").
2. Tiller (Vergangenheit)
In Helm v2 gab es den "Tiller" (Server-Komponente), der im Cluster lief und volle Admin-Rechte hatte. Das war ein riesiges Sicherheitsrisiko.
Seit Helm v3 (2019) ist Tiller tot. Helm läuft nur noch als Client und nutzt deine lokalen kubectl-Rechte. Viel sicherer.
1. The 3-Way Merge Patch System
Ein unsichtbares Meisterstück von Helm 3.
Beim Upgrade helm upgrade my-app auf Release V2 berechnet Helm, was sich ändert.
Helm v2 tat dies blöd: Es guckte auf V1 (Das YAML in der Box) und V2 (Das neue YAML) und mergte (2-Way).
Was, wenn ein fieser Admin live im Cluster via kubectl edit ein Label anfügte? Helm V2 überschrieb das radikal.
Helm V3 ruft den aktuellen Live-Cluster-Status als dritte Quelle ab. Der Algorithmus nutzt einen hochkomplexen 3-Way Merge (V1-Release, V2-Manifest, Live-State-JSON). Modifikationen der echten Sysadmins bleiben nahtlos intakt (sofern sie nicht im direkten Patch-Konflikt mit der Chart stehen).
2. Go Template Injection & Helm-Secrets
Das Templating-System (Go text/template) bringt harte Security-Vulnerabilities mit.
Wenn ein User Chart Values dynamisch generiert (name: {{ .Values.userInput }}) ohne Escape-Casts zu nutzen (| quote oder | b64enc), reißt er unweigerlich Injection-Pforten ein (bösartiger YAML String, der ClusterRoles eskaliert).
Noch heikler ist Passwort-Management. Values.yaml liegen nativ auf Git (GitOps Flux/ArgoCD). Setzt der Praktikant das db_password dort im unverschlüsselten Text, explodiert die DSGVO. Enterprise-Produktionen kapseln Helm nativ in Helm Secrets Wrappern, bei denen Mozilla SOPS kryptographisches GPG/AWS-KMS nutzt, um Sensible Keys On-The-Fly direkt vor dem K8s-Apiserver zu dechiffrieren.
3. Helm Test Hooks & Release Lifecycle
Helm ballert Manifeste nicht bloß über die Klippe, es steuert den Kubernetes Lifecycle über Helm Hooks.
Ein Deployment muss migrieren? Du hängst die Annotation helm.sh/hook: pre-upgrade an einen Kubernetes Job. Helm blockiert das Rendering des Main-Servers eisern und rollt zuerst den SQL-Migration-Container an, wartet auf Status "Succeeded", zerstört den Hook-Pod (via Hook Delete Policy) und startet im Main-Updgrade-Kontext den Rollout neu.
Selbiges in der CI-Pipe (helm test): Ein Pod wird gelaucht hook: test, der Curl-Abfragen feuert. Schlägt dieser fehl, blockiert die Jenkins-Pipe den Go-Live. Das Chart kapselt nicht nur Software, es baut sich seinen operativen Rollout-Dirigenten gleich mit.
Quick-Check
Helm vs. Kustomize?
Religionskrieg. Helm nutzt Templates (Text-Ersetzung). Kustomize nutzt Overlays (Patches). Helm ist besser zum Verteilen von Paketen. Kustomize ist besser für leichte Anpassungen ohne Template-Spaghetti. Viele nutzen beides zusammen.Kann ich Rollbacks machen?
Ja!helm rollback my-app 1. Helm merkt sich jede Version ("Release") in einem Secret. Wenn das Update fehlschlägt, bist du in 10 Sekunden zurück auf dem alten Stand.Was ist ein Repository?
Ein HTTP-Server, auf dem die Charts (.tgzDateien) liegen. Wie Docker Hub, nur für Helm Charts (z. B. Artifact Hub).