Einführung
In Helm das helm upgrade [release-name] [chart]
Mit dem Befehl können Sie Ihre Version auf eine neue Version aktualisieren. Der Versuch, Ihre Version zu aktualisieren, kann jedoch manchmal die Meldung „helm hat keine bereitgestellten Versionen hervorrufen ” Fehler.
In diesem Tutorial behandeln wir die Ursachen für die Meldung „helm has no deployed releases ” Fehler sowie mehrere mögliche Lösungen.
Voraussetzungen
- Zugriff auf Terminal/Befehlszeile
- Ein eingerichteter und ausgeführter Kubernetes-Cluster
- Helm installiert und konfiguriert
Was verursacht den Fehler "helm has no deployed releases"?
Ab Helm 2.7.1, Ausführen des helm upgrade [release-name] [chart]
Befehl auf einer zuvor fehlgeschlagenen Version erzeugt den folgenden Fehler:
Error: UPGRADE FAILED: [release-name] has no deployed releases
Helm 2 vergleicht das aktuelle Bereitstellungsmanifest mit dem neuen, um die erforderlichen Patches anzuwenden. Es vergleicht jedoch nicht den Zustand der Ressourcen zwischen den Manifesten.
Wenn eine frühere Bereitstellung fehlgeschlagen ist, verfügt der Cluster wahrscheinlich über fehlende Ressourcen. Vor Helm 2.7.1 versucht Helm, die Bereitstellung zu aktualisieren, ohne die fehlenden Ressourcen zu installieren. Um dies zu verhindern, verwendet Helm ab Version 2.7.1 die letzte erfolgreiche Bereitstellung als Baseline für das Upgrade. Wenn keine erfolgreiche Bereitstellung gefunden werden kann, gibt das System die Meldung „helm has no deployed releases“ zurück ” Fehlermeldung.
Behebung des Fehlers „helm hat keine bereitgestellten Versionen“
Es gibt mehrere Möglichkeiten, das Problem „helm has no deployed releases“ zu beheben Fehler, wobei sich die meisten darauf konzentrieren, den Status der fehlgeschlagenen Bereitstellung zu ändern, die das Problem verursacht:
Lösung 1:Ändern des Bereitstellungsstatus
In Helm 2 können Sie das Problem umgehen, indem Sie den Release-Status auf Deployed ändern:
kubectl -n kube-system patch configmap [release name].[release version] --type=merge -p '{"metadata":{"labels":{"STATUS":"DEPLOYED"}}}'
Wo:
[release name]
ist der Name der Version, die Sie aktualisieren möchten.[release version]
ist die aktuelle Version Ihres Releases.
Da Helm 3 den Bereitstellungsverlauf als Kubernetes-Geheimnisse speichert. Überprüfen Sie die Bereitstellungsgeheimnisse:
kubectl get secrets
Suchen Sie das Geheimnis, das sich auf die fehlgeschlagene Bereitstellung bezieht, und verwenden Sie dann den folgenden Befehl, um den Bereitstellungsstatus zu ändern:
kubectl patch secret [name-of-secret-related-to-deployment] --type=merge -p '{"metadata":{"labels":{"status":"deployed"}}}'
Lösung 2:Fehlgeschlagene Bereitstellungen bereinigen
Das Löschen der aktuellen Version und das Starten einer neuen von Grund auf neu behebt das Problem. Verwenden Sie dazu mit Helm 2:
helm delete --purge [release name]
Wo:
[release name]
ist der Name der Version, die Sie löschen möchten.
Ab Helm 3 erfordert das Löschen einer Version die uninstall
Befehl:
helm uninstall [release name]
1. Eine andere Möglichkeit, eine fehlgeschlagene Version zu entfernen, besteht darin, zuerst den Status Ihrer Bereitstellung zu überprüfen:
helm list -a
2. Wenn der Status Ihrer Version nicht deployed
lautet , überprüfen Sie die Bereitstellungsgeheimnisse:
kubectl get secrets
3. Beschreiben Sie das letzte Element auf der Geheimliste, um seinen Status zu überprüfen:
kubectl describe secret [secret name]
Wo:
[secret name]
ist der Name des Geheimnisses, das Sie überprüfen möchten.
4. Wenn das Geheimnis den gleichen Status wie die fehlgeschlagene Bereitstellung hat, löschen Sie es mit:
kubectl delete secret [secret name]
5. Aktualisieren Sie Ihre Version mit:
helm upgrade [release name]
Lösung 3:Erzwingen eines Upgrades
Eine andere Möglichkeit, das Problem zu lösen, besteht darin, ein Upgrade zu erzwingen, indem Sie Folgendes verwenden:
helm upgrade [release name] --force
Wo:
[release name]
ist der Name der Version, die Sie aktualisieren möchten.
Hinter den Kulissen erledigt dies eine ähnliche Aufgabe wie helm delete --purge
, indem Sie die vorherige Version löschen, bevor Sie eine neue installieren. Dies kann zu Dienstausfällen führen, wodurch es für bestimmte Releases ungeeignet wird.