はじめに
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
と同様の仕事をします 、新しいリリースをインストールする前に、以前のリリースを削除します。これによりサービスが失われ、特定のリリースには不適切になる可能性があります。