はじめに
Helmでは、 helm upgrade [release-name] [chart] コマンドを使用すると、リリースを新しいバージョンにアップグレードできます。ただし、リリースをアップグレードしようとすると、「ヘルムには展開されたリリースがありません」が生成される場合があります。 」エラー。
このチュートリアルでは、「ヘルムにはリリースがデプロイされていません」の原因について説明します。 」エラーといくつかの潜在的な解決策。
前提条件
- 端末/コマンドラインへのアクセス
- Kubernetesクラスターのセットアップと実行
- ヘルムのインストールと構成
「ヘルムにリリースがデプロイされていません」エラーの原因は何ですか?
Helm 2.7.1以降、 helm upgrade [release-name] [chart]を実行しています 以前に失敗したリリースでコマンドを実行すると、次のエラーが発生します。
Error: UPGRADE FAILED: [release-name] has no deployed releases
Helm 2は、現在の展開マニフェストを新しい展開マニフェストと比較して、必要なパッチを適用します。ただし、マニフェスト間のリソースの状態は比較されません。
以前のデプロイメントが失敗した場合は、クラスターにリソースが不足している可能性があります。 Helm 2.7.1より前では、Helmは不足しているリソースをインストールせずにデプロイメントをアップグレードしようとします。これを防ぐために、バージョン2.7.1以降、Helmはアップグレードのベースラインとして最新の成功したデプロイメントを使用します。正常なデプロイが見つからない場合、システムは「ヘルムにはデプロイされたリリースがありません」を返します。 」エラーメッセージ。
「ヘルムにはリリースがデプロイされていません」エラーの修正
「ヘルムにはリリースがデプロイされていません」を修正する方法はいくつかあります。 エラー、それらのほとんどは問題を引き起こしている失敗した展開のステータスの変更に焦点を合わせています:
解決策1:展開ステータスの変更
Helm 2では、リリースステータスをデプロイ済みに変更すると、問題を回避できます。
kubectl -n kube-system patch configmap [release name].[release version] --type=merge -p '{"metadata":{"labels":{"STATUS":"DEPLOYED"}}}' 場所:
-
[release name]更新するリリースの名前です。 -
[release version]はリリースの現在のバージョンです。
Helm 3はデプロイ履歴をKubernetesシークレットとして保存するため、導入の秘密を確認してください:
kubectl get secrets 失敗した展開を参照するシークレットを見つけてから、次のコマンドを使用して展開ステータスを変更します。
kubectl patch secret [name-of-secret-related-to-deployment] --type=merge -p '{"metadata":{"labels":{"status":"deployed"}}}' ソリューション2:失敗したデプロイメントのクリーンアップ
現在のリリースを削除し、新しいリリースを最初から開始すると、問題が修正されます。 Helm 2でこれを行うには、次を使用します:
helm delete --purge [release name] 場所:
-
[release name]削除するリリースの名前です。
Helm 3の時点で、リリースを削除するにはuninstallが必要です コマンド:
helm uninstall [release name]
1.失敗したリリースを削除する別の方法は、最初にデプロイメントのステータスを確認することです。
helm list -a
2.リリースのステータスがdeployedでない場合 、展開の秘密を確認してください:
kubectl get secrets 3.シークレットリストの最後の項目を説明して、そのステータスを確認します。
kubectl describe secret [secret name] 場所:
-
[secret name]確認したい秘密の名前です。
4.シークレットのステータスが失敗した展開と同じである場合は、次を使用してシークレットを削除します。
kubectl delete secret [secret name] 5.次のコマンドでリリースをアップグレードします:
helm upgrade [release name] 解決策3:アップグレードを強制する
この問題を解決する別の方法は、次を使用してアップグレードを強制することです。
helm upgrade [release name] --force 場所:
-
[release name]アップグレードするリリースの名前です。
舞台裏では、これは helm delete --purgeと同様の仕事をします 、新しいリリースをインストールする前に、以前のリリースを削除します。これによりサービスが失われ、特定のリリースには不適切になる可能性があります。