Neu in Helm
Helm 4 ist seit dem 12.11.2025 die aktive Linie und löst Helm 3 nach sechs Jahren ab. Minors kommen etwa alle vier Monate. Die eigentliche Umstellungsarbeit fällt genau einmal an, beim Sprung von 3 auf 4; die 4.x-Releases danach sind Nacharbeit am Wait-Verhalten, am Plugin-System und an der Kubernetes-Kompatibilität.
Zuletzt geprüft: 1. Oktober 2026. Jeder Eintrag stammt aus den Release Notes des Projekts, verlinkt am Seitenende. Das ist eine kuratierte Auswahl, kein vollständiger Changelog.
4.3
09.09.2026- neu Kubernetes 1.37
Die Client-Bibliotheken stehen auf 0.37.0, unterstützt werden Kubernetes 1.37 bis 1.34. 1.33 liegt damit außerhalb des unterstützten Fensters von 4.3. Cluster auf 1.33 sollten vor dem Helm-Update angehoben werden, denn 4.2 bekommt keine Patches mehr.
- Breaking helm uninstall prüft Ownership
Vor dem Löschen liest Helm jedes Objekt und verlangt das Label app.kubernetes.io/managed-by: Helm sowie die Annotationen meta.helm.sh/release-name und meta.helm.sh/release-namespace mit den Werten dieses Release. Objekte ohne passende Metadaten bleiben stehen, ebenso Objekte, die Helm nicht lesen kann, etwa mangels RBAC. Die Ausgabe listet beide Gruppen auf. Wer Labels oder Annotationen von Hand entfernt hat, findet nach dem Uninstall Waisen im Cluster.
- neu Schnelleres --wait bei vielen Ressourcen
Die Helm-CLI berechnet den kstatus-Status mit acht parallelen Workern, die Resync-Periode des Watchers sinkt von einer Stunde auf drei Minuten. Upgrades mit vielen Deployments (im Commit etwa 20) hingen vorher ein bis drei Minuten und länger im Wait. SDK-Nutzer wie Controller bleiben beim seriellen Default und müssen die Parallelität über kube.WithStatusComputeWorkers selbst einschalten.
- neu Keybox und armored Keyrings
--keyring liest neben dem binären pubring.gpg jetzt auch GnuPGs Keybox pubring.kbx und ASCII-armored Exporte (gpg --export --armor). Fehlt pubring.gpg in ~/.gnupg bzw. $GNUPGHOME, nimmt Helm per Default pubring.kbx. Der Konvertierungsschritt vor helm verify und --verify entfällt. Eine Keybox enthält nur Public Keys, zum Signieren braucht es weiterhin einen exportierten Secret Key.
- neu Reproduzierbare Chart-Archive
Ist SOURCE_DATE_EPOCH gesetzt, stempeln helm package und helm dependency build/update (auch über install und upgrade mit --dependency-update) die Archiv-Einträge und das generated-Feld in Chart.lock mit diesem Zeitpunkt, normiert auf UTC und ganze Sekunden. Zwei Builds aus demselben Stand ergeben so ein bitgleiches .tgz, und OCI-Digests werden über unabhängige Builds hinweg vergleichbar.
- neu Values-Dateien an der 4-KiB-Grenze
Endete eine Values-Datei ohne abschließenden Zeilenumbruch und war die letzte Zeile ein Vielfaches von 4096 Byte lang, verwarf der Loader diese Zeile still. Bei kompakten JSON-Values, die nur aus einer Zeile bestehen, fiel so die ganze Datei weg. 4.3 liest die Datei vollständig ein.
- neu Duration-Funktionen und Rollback-Begründung
Templates kennen mustToDuration sowie durationSeconds, durationMinutes, durationHours, durationDays, durationWeeks (dazu Milli-, Mikro- und Nanosekunden), durationRoundTo und durationTruncateTo. Nur mustToDuration bricht bei ungültiger Eingabe ab, die übrigen liefern still 0. helm rollback nimmt --description (bis 256 Zeichen), der Grund erscheint in helm history.
3.22
09.09.2026- läuft aus Letzter Helm-3-Minor
3.22.0 ist das letzte Minor der Helm-3-Linie. Bis 10.02.2027 kommen nur noch Security-Patches nach Bedarf, keine Bugfixes und keine Updates der Client-Bibliotheken. Danach erscheint kein Helm-3-Release mehr.
- neu Kubernetes 1.37, und dann Schluss
Die Client-Bibliotheken stehen auf 0.37.0, unterstützt werden 1.37 bis 1.34. Weil keine Client-Updates mehr folgen, ist 1.37 die letzte Kubernetes-Version, die Helm 3 abdeckt. Wer 1.38 einplant, muss vorher auf Helm 4 sein.
- neu Registry- und Rollback-Backports
Neben den Client-Bibliotheken enthält 3.22.0 Bugfix-Backports: helm push fordert bei Registries mit Token-Auth den Scope pull,push an, und Rollbacks funktionieren auch dann, wenn Ressourcen der Zielrevision im Cluster fehlen. Die Umstellung des Provenance-Codes auf ProtonMail/go-crypto (GO-2026-5932) kam bereits mit 3.21.4.
4.2 und 4.1
13.05.2026 und 21.01.2026- neu Kubernetes 1.36 (4.2)
Client-Bibliotheken auf 1.36, unterstützt werden 1.36 bis 1.33. Wer die Cluster-Version anhebt, braucht ab 1.36 mindestens Helm 4.2.
- neu --dry-run=server respektiert generateName (4.2)
Der serverseitige Dry-Run behandelt Ressourcen mit generateName korrekt. Vorher lief die Vorschau für solche Objekte ins Leere.
- läuft aus --hide-notes und --render-subchart-notes (4.2)
Beide Flags an helm template sind deprecated und sollen in Helm 5 entfernt werden, für das es keinen Termin gibt. Sie waren ohnehin wirkungslos, weil die Template-Ausgabe keine Notes enthält.
- neu --wait=hookOnly, --wait=true und false deprecated (4.1)
--wait akzeptiert jetzt auch hookOnly als expliziten Wert, --wait=true und --wait=false sind deprecated (Ersatz: watcher bzw. hookOnly). Außerdem läuft das SDK nicht mehr in einen Timeout-Fehler, wenn gar kein Timeout gesetzt war.
- neu Eigene kstatus-Reader im SDK (4.1)
Wer Custom Resources betreibt, deren Readiness kstatus nicht von sich aus versteht, kann eigene Status-Reader registrieren. Damit wird --wait auch für Operator-verwaltete CRs verlässlich.
- neu Atomar geschriebener Repo-Index-Cache (4.1)
Helm schreibt die Index-Dateien im Repository-Cache (<repo>-index.yaml, <repo>-charts.txt) atomar. Parallel laufende Helm-Prozesse, etwa mehrere helm dependency build in derselben CI, lesen damit keine halb geschriebenen Index-Dateien mehr. Schneller wird der Build dadurch nicht.
4.0
12.11.2025- neu Kein Migrationsschritt für bestehende Releases
Helm 4 verwaltet vorhandene Helm-3-Releases direkt. Es gibt kein Konvertierungswerkzeug und keinen Migrationslauf: man tauscht das Binary und prüft Charts, Pipelines und Post-Renderer.
- neu Server-Side Apply
Neuinstallationen nutzen per Default Server-Side Apply, was Konflikte mit Operatoren und anderen Controllern sauber auflöst. Bei Upgrade und Rollback rastet Helm auf die Methode der bestehenden Release ein: aus Helm 3 übernommene Releases bleiben auf Client-Side Apply, bis --server-side=true gesetzt wird.
- neu Warten auf Basis von kstatus
Das Ressourcen-Watching hinter --wait läuft über kstatus und meldet detaillierten Rollout-Status statt reiner Pod-Prüfung. Wichtig: kstatus braucht das watch-Verb, ein Service-Account ohne watch lässt --wait scheitern.
- neu OCI-Install per Digest
Charts lassen sich unveränderlich per Digest ziehen, etwa oci://registry.example.com/charts/app@sha256:abc123. Stimmt der Digest nicht, wird nicht installiert. In regulierten Umgebungen der Weg, eine Chart-Version wirklich festzunageln.
- neu Plugin-System auf WebAssembly
plugin.yaml trägt jetzt apiVersion v1, einen type und ein runtime-Feld, entweder subprocess oder extism/v1 für WASM. Bestehende Subprocess-Plugins laufen unverändert weiter, die WASM-Laufzeit ist optional und sandboxt fremden Plugin-Code.
- Breaking Post-Renderer sind Plugins
--post-renderer nimmt keinen Pfad auf ein Executable mehr, sondern einen Plugin-Namen. Jede bestehende Post-Renderer-Integration, typischerweise ein Kustomize-Wrapper in der CI, muss als Plugin verpackt werden.
- Breaking CLI-Flags umbenannt, registry login strenger
--atomic heißt jetzt --rollback-on-failure, --force heißt --force-replace; die alten Flags warnen nur, funktionieren aber noch. helm registry login akzeptiert dagegen ausschließlich den Domainnamen, keine vollständige URL mehr. Das bricht Pipelines, die die Registry bisher mit https:// übergeben haben.