すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Helm V2 から Helm V3 への移行

最終更新日:Dec 28, 2025

Helm V2 サーバーの Tiller がもたらす潜在的なセキュリティリスクを排除するため、Helm V2 を Helm V3 にアップデートすることを推奨します。そうしない場合、攻撃者が Tiller を利用してクラスターに不正なアプリケーションをインストールしたり、より多くの Helm 機能を不正に利用したりする可能性があります。このトピックでは、Helm V2 を Helm V3 にアップデートする方法について説明します。

アップグレードと移行の手順

このセクションでは、Helm V3.3.0 を例に、Helm V2 をアップデートする方法を説明します。Helm のバージョンに関する詳細については、Helm をご参照ください。

説明

アプリケーションを再インストールできる場合は、アプリケーションを削除してから再インストールすることも可能です。詳細については、Helm V2 Tiller のアップグレードに関するお知らせをご参照ください。

  1. 次のコマンドを実行して Helm V3 をインストールします。

    wget https://get.helm.sh/helm-v3.3.0-linux-amd64.tar.gz
    tar -xzvf helm-v3.3.0-linux-amd64.tar.gz
    mv linux-amd64/helm /usr/local/bin/helm
    helm version

    期待される出力:

    version.BuildInfo{Version:"v3.3.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a****", GitTreeState:"clean", GoVersion:"go1.13.4"}
  2. 次のコマンドを実行して Helm 2to3 プラグインをインストールします。

    このステップでは、ack-node-local-dns チャートを例として使用します。

    git clone https://github.com/helm/helm-2to3.git
    helm plugin install ./helm-2to3
  3. 次のコマンドを実行して ack-node-local-dns チャートを Helm V3 に変換します。

    helm 2to3 convert ack-node-local-dns --delete-v2-releases

    期待される出力:

    2022/12/27 17:12:50 Release "ack-node-local-dns" will be converted from Helm v2 to Helm v3.
    2022/12/27 17:12:50 [Helm 3] Release "ack-node-local-dns" will be created.
    2022/12/27 17:12:50 [Helm 3] ReleaseVersion "ack-node-local-dns.v1" will be created.
    2022/12/27 17:12:50 [Helm 3] ReleaseVersion "ack-node-local-dns.v1" created.
    2022/12/27 17:12:50 [Helm 3] Release "ack-node-local-dns" created.
    2022/12/27 17:12:50 [Helm 2] Release "ack-node-local-dns" will be deleted.
    2022/12/27 17:12:50 [Helm 2] ReleaseVersion "ack-node-local-dns.v1" will be deleted.
    2022/12/27 17:12:50 [Helm 2] ReleaseVersion "ack-node-local-dns.v1" deleted.
    2022/12/27 17:12:50 [Helm 2] Release "ack-node-local-dns" deleted.
    2022/12/27 17:12:50 Release "ack-node-local-dns" was converted successfully from Helm v2 to Helm v3.

Helm V2 のアップデートに関するよくある質問

apiVersion の不整合による「Resource already exists」エラー

問題

クラスターをアップデートした後、Helm V2 を更新すると、rendered manifests contain a new resource that already exists. Unable to continue with update: existing resource conflict: kind: MutatingWebhookConfiguration, namespace: , name: mse-pilot-ack-mse-pilot というプロンプトが表示されます。

原因

Kubernetes バージョンが 1.22 以降のクラスターでは v1beta1 はサポートされなくなりました。v1beta1 は、それ以前の Kubernetes バージョンでは引き続きサポートされています。クラスターをアップデートした後に、上記のエラーが返されることがあります。

解決策

リソースの API バージョンを更新します。詳細については、helm-mapkubeapis を使用した Kubernetes リソースの API バージョンのインプレースアップグレードをご参照ください。

Helm V2 を V3 にアップデートした後、チャートの更新時にエラーが返される場合の対処法

問題

Helm V2 から V3 に移行した後、チャートのバージョン (例:v1.3.5 から v1.5.3) をアップグレードする際に、err: rendered manifests contain a resource that already exists. Unable to continue with update: MutatingWebhookConfiguration \"ack-node-local-dns-admission-controller\" in namespace \"\" exists and cannot be imported into the current release: invalid ownership metadata; label validation error: missing key \"app.kubernetes.io/managed-by\": must be set to \"Helm\"; annotation validation error: missing key \"meta.helm.sh/release-name\": must be set to \"ack-node-local-dns\" というエラーが発生します。

原因

チャートに Helm の所有権がありません。

解決策

この問題を解決するには、次のいずれかの方法を使用できます。

  • 対応する Helm リリースにリソースを割り当てます。

    1. 次のコマンドを実行して設定ファイルを編集します。

      kubectl edit MutatingWebhookConfiguration ack-node-local-dns-admission-controller
    2. 次の annotationslabels をリリースに追加します。

      annotations:
        meta.helm.sh/release-name: ack-node-local-dns
        meta.helm.sh/release-namespace: kube-system
      labels:
        app.kubernetes.io/managed-by: Helm
  • 次のコマンドを実行してリソースを削除します。

    kubectl delete MutatingWebhookConfiguration ack-node-local-dns-admission-controller