EKSなどで helm install を実行した際、デプロイが途中で失敗し、再度実行しようとすると以下のエラーが発生して進めなくなることがあります。
Error: cannot re-use a name that is still in use
この記事では、このエラーの原因と、EKS Cloud Shell (kubectl) を使った具体的な復旧手順(残存リソースの削除方法)について解説します。
1. エラーの原因
このエラーは、「以前のデプロイ(リリース)情報の残骸が Kubernetes クラスター内に残っている」 ために発生します。
具体的な症状
Kubernetes の管理画面や kubectl get secrets で確認すると、以下のような命名規則の Secret が残っているはずです。
-
命名規則:
sh.helm.release.v1.<リリース名>.v<リビジョン番号> -
例:
sh.helm.release.v1.aws-load-balancer-controller.v1
これを手動で削除することで、エラーを解消できます。
2. 対処手順
EKS の Cloud Shell やターミナルで以下の手順を実行します。
Cloud Shellは以下をクリックするとターミナルが表示されます。

手順 1: 名前空間 (Namespace) の確認
まず、対象のリリースがどの名前空間にデプロイされようとしていたかを確認します。
AWS Load Balancer Controller などは kube-system であることが多いですが、以下のコマンドで検索して特定します。
# 全名前空間から対象のリリース名を含むSecretを検索
kubectl get secrets -A | grep <リリース名の一部>
# 例: aws-load-balancer-controller の場合
kubectl get secrets -A | grep aws-load-balancer
実行結果例:
NAMESPACE NAME TYPE DATA AGE
kube-system sh.helm.release.v1.aws-load-balancer-controller.v1 helm.sh/release.v1 1 38m
ここで kube-system にあることが確認できました。
手順 2: 正規のアンインストールを試みる
まずは強制削除の前に、Helm コマンドでのアンインストールを試みます。
# リストを確認
helm list -n kube-system --all
# アンインストール実行
helm uninstall aws-load-balancer-controller -n kube-system
Release not found と表示される、または削除してもエラーが解消しない場合は、次の「手順 3」を実行します。
手順 3: Secret を直接削除する(解決策)
Helm コマンドで消せない場合、Kubernetes 上に残っている「Helm のリリース情報(Secret)」を直接 kubectl で削除します。
コマンド:
kubectl delete secret <Secret名> -n <名前空間>
実行例 (AWS Load Balancer Controller の場合):
kubectl delete secret sh.helm.release.v1.aws-load-balancer-controller.v1 -n kube-system
注意:
バージョン違い(v1, v2など)で複数の Secret が残っている場合は、最も新しいもの、あるいは全て削除する必要がある場合があります。
手順 4: 再インストールの実行
Secret の削除が完了したら、再度インストールコマンドを実行してください。
helm install ...
今度は「名前が使用中」というエラーが出ずにインストールが開始されるはずです。