Pendahuluan
Di Helm, helm upgrade [release-name] [chart]
perintah memungkinkan Anda meningkatkan rilis Anda ke versi baru. Namun, upaya untuk meningkatkan versi rilis terkadang dapat menghasilkan “helm tidak memiliki rilis yang diterapkan ” kesalahan.
Dalam tutorial ini, kita akan membahas penyebab “helm tidak memiliki rilis yang diterapkan ” kesalahan serta beberapa solusi potensial.
Prasyarat
- Akses ke terminal/baris perintah
- Cluster Kubernetes disiapkan dan dijalankan
- Helm dipasang dan dikonfigurasi
Apa yang Menyebabkan Kesalahan "helm tidak memiliki rilis yang diterapkan"?
Mulai Helm 2.7.1, menjalankan helm upgrade [release-name] [chart]
perintah pada rilis yang sebelumnya gagal menghasilkan kesalahan berikut:
Error: UPGRADE FAILED: [release-name] has no deployed releases
Helm 2 membandingkan manifes penerapan saat ini dengan yang baru untuk menerapkan tambalan yang diperlukan. Namun, itu tidak membandingkan status sumber daya di antara manifes.
Jika penerapan sebelumnya gagal, kemungkinan cluster memiliki beberapa sumber daya yang hilang. Sebelum Helm 2.7.1, Helm akan mencoba memutakhirkan penerapan tanpa memasang sumber daya yang hilang. Untuk mencegah hal ini, pada versi 2.7.1, Helm menggunakan penerapan terbaru yang berhasil sebagai dasar untuk peningkatan. Jika tidak ada penerapan yang berhasil ditemukan, sistem akan mengembalikan “helm tidak memiliki rilis yang diterapkan ” pesan kesalahan.
Memperbaiki Kesalahan "helm tidak memiliki rilis yang diterapkan"
Ada beberapa cara untuk memperbaiki “helm tidak memiliki rilis yang diterapkan” kesalahan, kebanyakan dari mereka berfokus pada perubahan status penyebaran gagal yang menyebabkan masalah:
Solusi 1:Mengubah Status Penerapan
Di Helm 2, mengubah status rilis menjadi di-deploy memungkinkan Anda melewati masalah:
kubectl -n kube-system patch configmap [release name].[release version] --type=merge -p '{"metadata":{"labels":{"STATUS":"DEPLOYED"}}}'
Dimana:
[release name]
adalah nama rilis yang ingin Anda perbarui.[release version]
adalah versi rilis Anda saat ini.
Karena Helm 3 menyimpan riwayat penerapan sebagai rahasia Kubernetes. Periksa rahasia penerapan:
kubectl get secrets
Temukan rahasia yang mengacu pada penerapan yang gagal, lalu gunakan perintah berikut untuk mengubah status penerapan:
kubectl patch secret [name-of-secret-related-to-deployment] --type=merge -p '{"metadata":{"labels":{"status":"deployed"}}}'
Solusi 2:Membersihkan Deployment yang Gagal
Menghapus rilis saat ini dan memulai yang baru dari awal akan memperbaiki masalah. Untuk melakukan ini dengan Helm 2, gunakan:
helm delete --purge [release name]
Dimana:
[release name]
adalah nama rilis yang ingin Anda hapus.
Mulai Helm 3, menghapus rilis memerlukan uninstall
perintah:
helm uninstall [release name]
1. Cara lain untuk menghapus rilis yang gagal adalah dengan terlebih dahulu memeriksa status penerapan Anda:
helm list -a
2. Jika status rilis Anda tidak deployed
, periksa rahasia penerapan:
kubectl get secrets
3. Jelaskan item terakhir pada daftar rahasia untuk memeriksa statusnya:
kubectl describe secret [secret name]
Dimana:
[secret name]
adalah nama rahasia yang ingin Anda periksa.
4. Jika rahasia memiliki status yang sama dengan penerapan yang gagal, hapus dengan menggunakan:
kubectl delete secret [secret name]
5. Tingkatkan versi rilis Anda dengan:
helm upgrade [release name]
Solusi 3:Memaksa Upgrade
Cara lain untuk mengatasi masalah ini adalah dengan memaksa upgrade dengan menggunakan:
helm upgrade [release name] --force
Dimana:
[release name]
adalah nama rilis yang ingin Anda tingkatkan.
Di balik layar, ini melakukan pekerjaan yang mirip dengan helm delete --purge
, menghapus rilis sebelumnya sebelum menginstal yang baru. Hal ini dapat menyebabkan hilangnya layanan, sehingga tidak cocok untuk rilis tertentu.