Helm steuert den Application Lfiecycle in Kubernetes mit sogenannten Charts, die gebündelte Pakete mit allen erforderlichen Ressourcen und Konfigurationsdetails darstellen. Ein Helm-Chart durchläuft Installations-, Upgrade-, Rollback- und Delete- Schritte. Helm optimiert das Management von Anwendungs-Deploys durch Konfigurationsverwaltung und Release-Versionierung, was den Update- und Rollback-Prozess vereinfacht und die Betriebssicherheit steigert.
Der Lebenszyklus beginnt mit der Installation eines Charts. Dies
geschieht mit dem Befehl helm install, der ein Chart aus
einem Repository oder einem lokalen Verzeichnis nimmt und es auf dem
Kubernetes-Cluster installiert. Dabei wird ein Release erstellt, eine
Instanz des Charts, die im Cluster läuft.
Nach der Installation kann das Release durch
helm upgrade aktualisiert werden, indem eine neuere Version
des Charts oder eine veränderte Konfiguration angewandt wird. Dies
ermöglicht es Benutzern, ihre Anwendungen zu aktualisieren oder zu
konfigurieren, ohne sie neu installieren zu müssen.
Wenn ein Upgrade nicht wie gewünscht funktioniert, bietet Helm mit
dem Befehl helm rollback die Möglichkeit, zu einer früheren
Version des Releases zurückzukehren. Dadurch wird der Zustand vor dem
fehlerhaften Upgrade wiederhergestellt.
Schließlich kann ein Release durch den Befehl
helm delete entfernt werden. Mit dieser Aktion werden alle
Kubernetes-Ressourcen, die mit dem Release verbunden sind, aus dem
Cluster gelöscht.
Zwischen diesen Phasen können Benutzer den Befehl
helm status nutzen, um den Status des Releases zu
überprüfen, und helm history, um eine Liste der vergangenen
Revisionen des Releases zu sehen. So kann man leicht den Überblick über
die verschiedenen Zustände und Konfigurationen des Releases im Laufe der
Zeit behalten.
Helm kümmert sich auch um die Abhängigkeiten zwischen verschiedenen Charts. Wenn ein Chart Abhängigkeiten hat, werden diese bei der Installation oder dem Upgrade des Charts verwaltet. Helm stellt sicher, dass alle Abhängigkeiten erfüllt sind und in der richtigen Reihenfolge angewandt werden.
Für fortgeschrittenes Management des Lebenszyklus bietet Helm sogenannte Hooks. Solche Hooks bieten Chart-Entwicklern die Möglichkeit, an bestimmten Punkten im Lebenszyklus einer Veröffentlichung einzugreifen. Ein Helm-Hook wird durch spezielle Annotationen in einem Kubernetes-Manifest definiert, die Helm anweisen, an diesen Punkten bestimmte Aktionen auszuführen. Einige Beispiele für Helm-Hooks:
pre-install: Ausgeführt nachdem die Templates gerendert
wurden, aber bevor irgendwelche Ressourcen in Kubernetes erstellt
wurden.post-install: Ausgeführt nachdem alle Ressourcen in
Kubernetes geladen wurden.pre-delete: Ausgeführt bei einer Lösch-Anforderung,
bevor Ressourcen aus Kubernetes gelöscht werden.post-delete: Ausgeführt nachdem alle Ressourcen der
Veröffentlichung gelöscht wurden.Hier ist ein Beispiel für ein Helm Hook Manifest, das einen
pre-install Hook definiert:
apiVersion: batch/v1
kind: Job
metadata:
name: "{{ .Release.Name }}-pre-install-job"
annotations:
"helm.sh/hook": pre-install
spec:
template:
spec:
containers:
- name: pre-install-job
image: alpine
command: ['sh', '-c', 'echo pre-install job executed']
restartPolicy: Never
backoffLimit: 1Dieses Job-Manifest würde vor der Installation der restlichen Charts ausgeführt werden, um zum Beispiel eine Konfigurationsdatei zu laden oder eine Datenbank zu sichern.