全部产品
Search
文档中心

Container Service for Kubernetes:Migrasi dari Helm V2 ke Helm V3

更新时间:Dec 28, 2025

Untuk menghilangkan risiko keamanan potensial yang diberikan oleh server Tiller Helm V2, disarankan untuk memperbarui Helm V2 ke Helm V3. Jika tidak, penyerang dapat menggunakan Tiller untuk menginstal aplikasi tidak sah di kluster Anda dan memanfaatkan lebih banyak fitur Helm tanpa otorisasi. Topik ini menjelaskan cara memperbarui Helm V2 ke Helm V3.

Langkah Peningkatan dan Migrasi

Bagian ini menggunakan Helm V3.3.0 sebagai contoh untuk menunjukkan cara memperbarui Helm V2. Untuk informasi lebih lanjut tentang versi Helm, lihat Helm.

Catatan

Jika Anda dapat menginstal ulang aplikasi, hapus terlebih dahulu lalu instal kembali. Untuk informasi selengkapnya, lihat Pengumuman peningkatan Tiller Helm V2.

  1. Jalankan perintah berikut untuk menginstal 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

    Keluaran yang diharapkan:

    version.BuildInfo{Version:"v3.3.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a****", GitTreeState:"clean", GoVersion:"go1.13.4"}
  2. Jalankan perintah berikut untuk menginstal plugin Helm 2to3.

    Langkah ini menggunakan grafik ack-node-local-dns sebagai contoh.

    git clone https://github.com/helm/helm-2to3.git
    helm plugin install ./helm-2to3
  3. Jalankan perintah berikut untuk mengonversi grafik ack-node-local-dns ke Helm V3.

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

    Keluaran yang diharapkan:

    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.

FAQ tentang pembaruan Helm V2

Error 'Resource already exists' karena ketidakkonsistenan apiVersion

Masalah

Setelah Anda memperbarui kluster Anda, sistem memberi tahu manifest ter-render berisi sumber daya baru yang sudah ada. Tidak dapat melanjutkan dengan pembaruan: konflik sumber daya yang ada: jenis: MutatingWebhookConfiguration, namespace: , nama: mse-pilot-ack-mse-pilot saat Anda memperbarui Helm V2.

Penyebab

Kluster dengan versi Kubernetes 1.22 atau lebih baru tidak lagi mendukung v1beta1. v1beta1 masih didukung di versi Kubernetes sebelumnya. Sistem mungkin mengembalikan kesalahan sebelumnya setelah Anda memperbarui kluster Anda.

Solusi

Perbarui versi API resource tersebut. Untuk informasi selengkapnya, lihat Perbarui versi API resource Kubernetes menggunakan helm-mapkubeapis untuk melakukan peningkatan in-place.

Apa yang harus saya lakukan jika Helm V2 diperbarui ke Helm V3 tetapi terjadi kesalahan saat sistem memperbarui bagan?

Masalah

Setelah migrasi dari Helm V2 ke V3, terjadi error saat memperbarui versi grafik—misalnya, dari v1.3.5 ke 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".

Penyebab

Bagan tidak memiliki kepemilikan Helm.

Solusi

Anda dapat menggunakan salah satu metode berikut untuk menyelesaikan masalah ini:

  • Tetapkan resource tersebut ke rilis Helm yang sesuai.

    1. Jalankan perintah berikut untuk mengedit file konfigurasi.

      kubectl edit MutatingWebhookConfiguration ack-node-local-dns-admission-controller
    2. Tambahkan annotations dan labels berikut ke rilis tersebut.

      annotations:
        meta.helm.sh/release-name: ack-node-local-dns
        meta.helm.sh/release-namespace: kube-system
      labels:
        app.kubernetes.io/managed-by: Helm
  • Jalankan perintah berikut untuk menghapus resource tersebut.

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