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.
Jika Anda dapat menginstal ulang aplikasi, hapus terlebih dahulu lalu instal kembali. Untuk informasi selengkapnya, lihat Pengumuman peningkatan Tiller Helm V2.
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 versionKeluaran yang diharapkan:
version.BuildInfo{Version:"v3.3.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a****", GitTreeState:"clean", GoVersion:"go1.13.4"}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-2to3Jalankan perintah berikut untuk mengonversi grafik ack-node-local-dns ke Helm V3.
helm 2to3 convert ack-node-local-dns --delete-v2-releasesKeluaran 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.
Jalankan perintah berikut untuk mengedit file konfigurasi.
kubectl edit MutatingWebhookConfiguration ack-node-local-dns-admission-controllerTambahkan
annotationsdanlabelsberikut 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