Introduzione
In Helm, il helm upgrade [release-name] [chart]
comando ti consente di aggiornare la tua versione a una nuova versione. Tuttavia, il tentativo di aggiornare la tua versione a volte può produrre il "helm non ha versioni distribuite errore.
In questo tutorial, tratteremo le cause del "helm non ha rilasci distribuiti ” errore nonché diverse potenziali soluzioni.
Prerequisiti
- Accesso al terminale/riga di comando
- Un cluster Kubernetes configurato e funzionante
- Timone installato e configurato
Quali sono le cause dell'errore "helm non ha rilasci distribuiti"?
A partire da Helm 2.7.1, eseguendo l'helm upgrade [release-name] [chart]
comando su una versione precedentemente non riuscita produce il seguente errore:
Error: UPGRADE FAILED: [release-name] has no deployed releases
Helm 2 confronta il manifest di distribuzione corrente con quello nuovo per applicare le patch necessarie. Tuttavia, non confronta lo stato delle risorse tra i manifesti.
Se una distribuzione precedente non è riuscita, è probabile che nel cluster siano mancanti alcune risorse. Prima di Helm 2.7.1, Helm tenterà di aggiornare la distribuzione senza installare le risorse mancanti. Per evitare ciò, a partire dalla versione 2.7.1, Helm utilizza l'ultima distribuzione riuscita come base per l'aggiornamento. Se non viene trovata una distribuzione riuscita, il sistema restituisce "helm non ha rilasci distribuiti ” messaggio di errore.
Correzione dell'errore "Il timone non ha rilasci distribuiti"
Esistono diversi modi per correggere il "helm non ha rilasci distribuiti" errore, la maggior parte dei quali si concentra sulla modifica dello stato della distribuzione non riuscita che causa il problema:
Soluzione 1:modifica dello stato di distribuzione
In Helm 2, la modifica dello stato di rilascio in Distribuito consente di aggirare il problema:
kubectl -n kube-system patch configmap [release name].[release version] --type=merge -p '{"metadata":{"labels":{"STATUS":"DEPLOYED"}}}'
Dove:
[release name]
è il nome della versione che desideri aggiornare.[release version]
è la versione corrente della tua release.
Poiché Helm 3 memorizza la cronologia di distribuzione come segreti di Kubernetes. Controlla i segreti di distribuzione:
kubectl get secrets
Trova il segreto che fa riferimento alla distribuzione non riuscita, quindi utilizza il comando seguente per modificare lo stato della distribuzione:
kubectl patch secret [name-of-secret-related-to-deployment] --type=merge -p '{"metadata":{"labels":{"status":"deployed"}}}'
Soluzione 2:ripulire le implementazioni non riuscite
L'eliminazione della versione corrente e l'avvio di una nuova da zero risolve il problema. Per farlo con Helm 2, usa:
helm delete --purge [release name]
Dove:
[release name]
è il nome della versione che desideri eliminare.
A partire da Helm 3, l'eliminazione di una versione richiede la uninstall
comando:
helm uninstall [release name]
1. Un altro modo per rimuovere una versione non riuscita è controllare prima lo stato della distribuzione:
helm list -a
2. Se lo stato della tua versione non è deployed
, controlla i segreti di distribuzione:
kubectl get secrets
3. Descrivi l'ultimo elemento nell'elenco dei segreti per verificarne lo stato:
kubectl describe secret [secret name]
Dove:
[secret name]
è il nome del segreto che vuoi controllare.
4. Se il segreto ha lo stesso stato della distribuzione non riuscita, eliminalo utilizzando:
kubectl delete secret [secret name]
5. Aggiorna la tua versione con:
helm upgrade [release name]
Soluzione 3:forzare un aggiornamento
Un altro modo per risolvere il problema è forzare un aggiornamento utilizzando:
helm upgrade [release name] --force
Dove:
[release name]
è il nome della versione che desideri aggiornare.
Dietro le quinte, questo fa un lavoro simile a helm delete --purge
, eliminando la versione precedente prima di installarne una nuova. Ciò può comportare la perdita del servizio, rendendolo inadatto per determinate versioni.