Skip to content

UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress

Helmを使用したKubernetes環境でのデプロイ中に「UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress」というエラーが発生した場合の対処法について解説します。

問題の原因

このエラーは、Helmのアップグレードまたはインストール操作が何らかの理由で中断された場合に発生します。具体的には以下のような状況でよく起こります:

  • Helm操作の強制終了(Ctrl+Cなど)
  • ネットワーク接続の切断
  • タイムアウトによる操作中断
  • Azure DevOpsパイプラインなどのCI/CDツールでの実行中断

Helmは操作の状態をKubernetesのSecretリソースに保存して管理しています。操作が正常に完了しないと、この状態が「pending-upgrade」や「pending-install」などの保留状態で残り、次の操作をブロックします。

問題の確認方法

まず、現在の状況を確認するために以下のコマンドを実行します。

すべてのリリースを表示

bash
helm list -a -n <namespace>

-aフラグをつけると、すべての状態(失敗したものも含む)のリリースが表示されます。

すべてのネームスペースのリリースを確認

bash
helm list -aA

リリースが別のネームスペースに作成されている可能性もあるため、すべてのネームスペースを確認することも重要です。

リリースの履歴を確認

bash
helm history <release-name> -n <namespace>

これにより、リリースの revision 履歴とその状態を確認できます。保留中の操作がある場合、「pending-upgrade」などの状態が表示されます。

解決方法

方法1: ロールバックによる解決

保留中の操作があるリリースを特定できた場合は、ロールバックを試みます。

bash
helm rollback <release-name> <revision> -n <namespace>

<revision>には、正常に動作していたバージョンの番号を指定します。これにより、保留状態が解消される場合があります。

方法2: Helm Secretの削除

Helm3はリリース情報をKubernetesのSecretとして保存しています。このSecretを削除することで問題を解決できます。

ステップ1: 関連するSecretの確認

bash
kubectl get secrets -n <namespace>

または特定のリリースに関連するSecretを検索:

bash
kubectl get secret -A | grep <app-name>

HelmのSecretは通常 sh.helm.release.v1.<release-name>.v<revision> という形式の名前を持っています。

ステップ2: 問題のあるSecretの削除

bash
kubectl delete secret <secret-name> -n <namespace>

例:

bash
kubectl delete secret sh.helm.release.v1.gloo.v1 -n gloo-system

WARNING

Secretを削除すると、該当リリースの履歴情報が失われます。可能な場合はまずロールバックを試み、それでも解決しない場合にこの方法を検討してください。

方法3: Azure DevOpsパイプラインでの対処

Azure DevOpsを使用している場合、以下の手順で対処できます。

  1. Azure Portalにアクセスし、Cloud Shellを開く
  2. 以下のコマンドで適切なサブスクリプションとAKSクラスターを設定:
bash
az account show
az account set --subscription <subscription-id>
az aks get-credentials --name <aks-cluster-name> --resource-group <resource-group-name>
  1. 問題のあるSecretを削除
  2. パイプラインを再実行

予防策

この問題を未然に防ぐための対策として以下をお勧めします。

  • Helm操作を途中で中断しない
  • CI/CDパイプラインのタイムアウト設定を適切に構成する
  • 定期的なメンテナンスで古いリリースをクリーンアップする

まとめ

「UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress」エラーは、Helm操作が不完全に終了した際に発生する一般的な問題です。ほとんどの場合、リリースのロールバックまたは関連するHelm Secretの削除によって解決できます。重要な環境で作業する前には、まずテスト環境で対応策を検証することをお勧めします。