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

Container Service for Kubernetes:Helm V2をHelm V3に更新する

最終更新日:Oct 24, 2024

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

目次

Helm V2をHelm V3に更新する

このセクションでは、Helm V3.3.0を例として使用して、Helm V2の更新方法を示します。 Helmバージョンの詳細については、「Helm」をご参照ください。

説明

アプリケーションを再デプロイできる場合は、アプリケーションを削除してから再デプロイすることをお勧めします。 詳細については、「 [コンポーネントの更新] Update Helm V2 to V3」をご参照ください。

  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の更新に関するFAQ

リソースのAPIバージョンがサポートされていないために、リソースがすでに存在することをシステムが求めた場合はどうすればよいですか。

問題

クラスターを更新した後、表示されたマニフェストに既に存在する新しいリソースが含まれるシステムプロンプト。 update: existing resource conflictを続行できません: kind: MutatingWebhookConfiguration, namespace: 、name: mse-pilot-ack-mse-pilot Helm V2を更新したとき。

発生原因

Kubernetesバージョンが1.22以降のクラスターはv1beta1をサポートしていません。 v1beta1は、以前のバージョンのKubernetesで引き続きサポートされます。 クラスターを更新すると、前述のエラーが返される場合があります。

解決策

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

Helm V2がHelm V3に更新されても、システムがチャートを更新したときにエラーが返された場合はどうすればよいですか?

問題

Helm V2はHelm V3に更新されます。 ただし、システムプロンプトerr: renderedマニフェストには、すでに存在するリソースが含まれています。 更新を続行できません: MutatingWebhookConfiguration \"ack-node-local-dns-admission-controller\" in namespace \"\" が存在し、現在のリリースにインポートできません: 無効な所有権メタデータ; ラベル検証エラー: unmissing key \"app.kubernetes.io/managed-by\": \"に設定する必要があります。注釈検証エラー: missing key \" meta.helm.sh/release-name\": チャートを更新するときは \" ack-node-local-dns\" に設定する必要があります。 たとえば、チャートをv1.3.5からv1.5.3に更新すると、システムはエラーを返します。

発生原因

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

ソリューション

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

  • チャートのHelm所有権を設定します。

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

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

        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