Im Kubernetes-Umfeld, insbesondere wenn man viele Anwendungen mit Helm oder Kustomize verwaltet, kann es aufwändig sein, alle Versionen immer aktuell zu halten. Hier kommt Renovate für Updates ins Spiel. In diesem Beitrag zeige ich dir, wie ich Renovate nutze, um sowohl Helm-Releases als auch Kustomizations für meinen k3s-Cluster automatisch auf dem neuesten Stand zu halten.

Was ist Renovate?
Renovate ist ein Open-Source-Tool, das automatisch Updates für Abhängigkeiten erkennt und in Form von Pull-Requests vorschlägt. Es unterstützt viele verschiedene Plattformen und Paketmanager, darunter auch Helm und Kustomize.
Einrichtung von Renovate für Helm und Kustomize
In meinem Setup nutze ich eine etwas ausgefeiltere Konfiguration, um nicht nur Helm-Releases, sondern auch Kustomizations in meinen Kubernetes-Deployments automatisch zu aktualisieren. Hier ist ein Beispiel meiner renovate.json:
{
"extends": [
"config:base"
],
"packageRules": [
{
"matchPackageNames": ["*"],
"matchManagers": ["helm-values", "kustomize"],
"rangeStrategy": "update-lockfile",
"versioning": "semver"
}
],
"helm": {
"enabled": true,
"fileMatch": ["Chart.yaml"]
},
"kustomize": {
"enabled": true
}
}
Code-Sprache: JSON / JSON mit Kommentaren (json)
Wichtige Punkte der Update-Konfiguration
- Helm-Updates:
Renovate sucht in allenChart.yaml
-Dateien nach neuen Versionen von Helm-Charts und erstellt Pull-Requests, wenn eine neue Version verfügbar ist. Dadurch werden Updates direkt in die Helm-Releases eingepflegt. - Kustomize-Updates:
Zusätzlich zu Helm werden auch Kustomizations erkannt und automatisch aktualisiert. Kustomize-Updates werden basierend auf der Konfiguration von Kubernetes-Objekten angepasst. - Versionierung und Strategie:
Ich habe die Option"rangeStrategy": "update-lockfile"
festgelegt. Das bedeutet, dass Renovate nicht nur die neueste Version vorschlägt, sondern auch die Version im Lockfile festschreibt.
Vorteile einer ausgefeilten Renovate-Konfiguration
Diese Konfiguration erlaubt es, Helm-Releases und Kustomizations sauber und effizient zu verwalten:
- Kombinierte Updates: Helm und Kustomize können parallel aktualisiert werden, was sicherstellt, dass sowohl die Chart-Versionen als auch alle Anpassungen aktuell bleiben.
- Feingranulare Steuerung: Du kannst Regeln definieren, um bestimmte Chart-Versionen oder Kustomize-Pfade zu aktualisieren, und so sicherstellen, dass keine ungewollten Updates eingespielt werden.
- Automatisierte Tests: Durch den Einsatz von CI/CD-Pipelines kannst du sicherstellen, dass alle vorgeschlagenen Änderungen von Renovate auch direkt getestet werden.
Beispiel: Automatische Updates von Helm-Releases und Kustomizations
Nehmen wir an, du nutzt das Podinfo-Helm-Chart in einer Kustomization. Renovate schlägt ein Update sowohl im Helm-Chart als auch in der Kustomization vor:
# Podinfo Helm-Chart in Chart.yaml:
name: podinfo
version: 6.0.0
repository: "https://stefanprodan.github.io/podinfo"
# Kustomize-Base:
bases:
- github.com/stefanprodan/podinfo//kustomize?ref=v6.0.0
Code-Sprache: PHP (php)
Renovate erkennt die neuen Versionen sowohl im Helm-Chart als auch in der Kustomization und erstellt entsprechende Pull-Requests, um beide auf den neuesten Stand zu bringen.
Wichtig: Ich habe beschrieben, dass ich im allgemeinen die values.yaml-Datei der Helm Charts übernehme, um die komplette Standardkonfiguration vorliegen zu haben. Für Renovate weiche ich in einem Fall ab: Die verwendeten Docker-Images kommentiere ich in den meisten aus, weil ich die Versionen und Images tatsächlich zusammen mit der richtigen Version des Helm-Charts verwenden möchte. Anderenfalls aktualisiert Renovate auch die Versionen und Tags der Docker-Images, was zu Problemen führen kann.
Fazit
Mit einer fortgeschrittenen Renovate-Konfiguration kannst du nicht nur Helm-Charts, sondern auch Kustomizations automatisch auf dem neuesten Stand halten. Diese Automatisierung spart dir viel Zeit und sorgt dafür, dass dein Kubernetes-Cluster immer mit den neuesten Versionen läuft – ohne dass du manuell eingreifen musst. Besonders in Kombination mit FluxCD und einer gut konfigurierten CI/CD-Pipeline hast du so eine skalierbare und zuverlässige Lösung für Updates in deinem Cluster.
Weitere Blogposts aus der k3s-Reihe
- Einführung in meinen Kubernetes-Heimcluster: Warum und Wie?
- Der Aufbau meines Kubernetes-Heimclusters: Die Wahl der Hardware
- Initialisierung meines Heim-Kubernetes-Clusters: k3s mit Ansible
- GitOps mit FluxCD für meinen Heim-Kubernetes-Cluster
- Sichere Verwaltung von Kubernetes Secrets mit Sealed Secrets
- Automatisierte DNS- und SSL-Zertifikatsverwaltung in Kubernetes
- Ingress und Load Balancer in Kubernetes: Traefik und MetalLB
- Storage, Backup und Restore in meinem Kubernetes-Cluster
- Authentifizierung und Autorisierung in k3s
- Anwendungen in meinem k3s-Setup