Meng-uninstal Cloud Service Mesh

Halaman ini menjelaskan cara meng-uninstal Cloud Service Mesh.

Meng-uninstal Cloud Service Mesh

Gunakan perintah berikut untuk meng-uninstal semua komponen Cloud Service Mesh. Perintah ini juga menghapus namespace istio-system dan semua definisi resource kustom (CRD), termasuk semua CRD yang Anda terapkan.

  1. Untuk mencegah gangguan traffic aplikasi:

    • Downgrade kebijakan STRICT mTLS apa pun menjadi PERMISSIVE.
    • Hapus AuthorizationPolicy yang mungkin memblokir traffic.
  2. Nonaktifkan Pengelolaan Otomatis pada cluster ini (baik Anda menerapkannya secara langsung maupun menggunakan konfigurasi default fleet):

      gcloud container fleet mesh update --management manual
    
  3. Nonaktifkan injeksi otomatis file bantuan di namespace Anda, jika diaktifkan. Jalankan perintah berikut untuk menampilkan label namespace:

     kubectl get namespace YOUR_NAMESPACE --show-labels
    

    Outputnya mirip dengan hal berikut ini:

     NAME   STATUS   AGE     LABELS
     demo   Active   4d17h   istio.io/rev=asm-181-5

    Jika Anda melihat istio.io/rev= dalam output di bawah kolom LABELS, hapus:

     kubectl label namespace YOUR_NAMESPACE istio.io/rev-
    

    Jika Anda melihat istio-injection dalam output di bawah kolom LABELS, hapus:

     kubectl label namespace YOUR_NAMESPACE istio-injection-
    

    Jika Anda tidak melihat label istio.io/rev atau istio-injection, injeksi otomatis tidak diaktifkan di namespace.

  4. Mulai ulang beban kerja Anda yang memiliki file bantuan yang diinjeksikan untuk menghapus proxy.

  5. Jika Anda menggunakan Cloud Service Mesh terkelola, hapus resource controlplanerevision di cluster:

    kubectl delete controlplanerevision RELEASE_CHANNEL -n istio-system
    

    Dengan RELEASE_CHANNEL adalah saluran rilis yang Anda sediakan, seperti asm-managed, asm-managed-rapid, atau asm-managed-stable.

  6. Hapus webhook dari cluster Anda, jika ada.

    Mesh Layanan Cloud dalam Cluster

    Hapus validatingwebhooksconfiguration dan mutatingwebhookconfiguration.

    kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot
    

    Mesh Layanan Cloud Terkelola

    A. Hapus validatingwebhooksconfiguration.

    kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
    

    B. Hapus mutatingwebhookconfiguration.

    kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNEL
    
  7. Setelah semua workload muncul dan tidak ada proxy yang diamati, Anda dapat menghapus bidang kontrol dalam cluster dengan aman untuk menghentikan penagihan. Jika Anda men-deploy bidang kontrol yang dikelola, bidang kontrol tersebut akan otomatis dihapus dengan langkah sebelumnya.

    Untuk menghapus bidang kontrol dalam cluster, jalankan perintah di bawah:

    istioctl x uninstall --purge
    

    Jika tidak ada bidang kontrol lain, Anda dapat menghapus namespace istio-system untuk menghapus semua resource Cloud Service Mesh. Jika tidak, hapus layanan yang sesuai dengan revisi Cloud Service Mesh. Tindakan ini akan menghindari penghapusan resource bersama, seperti CRD.

  8. Hapus namespace istio-system dan asm-system:

     kubectl delete namespace istio-system asm-system --ignore-not-found=true
    
  9. Periksa apakah penghapusan berhasil:

     kubectl get ns
    

    Output harus menunjukkan status Terminating dan kembali seperti yang ditunjukkan, jika tidak, Anda mungkin harus secara manual menghapus resource yang tersisa di namespace dan mencoba lagi.

     NAME                 STATUS       AGE
     istio-system         Terminating  71m
     asm-system           Terminating  71m
    
    1. Jika Anda akan menghapus cluster, atau telah menghapusnya, pastikan setiap cluster tidak terdaftar dari fleet Anda.
  10. Jika Anda telah mengaktifkan konfigurasi default fleet Cloud Service Mesh terkelola dan ingin menonaktifkannya untuk cluster mendatang, Anda dapat menonaktifkannya. Anda dapat melewati langkah ini jika hanya meng-uninstal dari satu cluster.

     gcloud container hub mesh disable --fleet-default-member-config --project FLEET_PROJECT_ID
    

    Dengan FLEET_PROJECT_ID adalah ID project Host Fleet Anda.

  11. Jika Anda menggunakan Cloud Service Mesh terkelola, hapus deployment mdp-controller:

     kubectl delete deployment mdp-controller -n kube-system
    
  12. Periksa untuk melihat apakah konfigurasi peta istio-cni-plugin-config ada:

     kubectl get configmap istio-cni-plugin-config -n kube-system
    

    Jika ada, hapus configmap istio-cni-plugin-config:

     kubectl delete configmap istio-cni-plugin-config -n kube-system
    
  13. Hapus daemonset istio-cni-node:

     kubectl delete daemonset istio-cni-node -n kube-system
    

Setelah menyelesaikan langkah-langkah ini, semua komponen Cloud Service Mesh, termasuk proxy, certificate authority dalam cluster, serta peran dan binding RBAC, dihapus secara sistematis dari cluster. Selama proses penginstalan, akun layanan milik Google diberi izin yang diperlukan untuk membuat resource mesh layanan dalam cluster. Petunjuk uninstal ini tidak mencabut izin ini, sehingga memungkinkan aktivasi ulang Cloud Service Mesh yang lancar di masa mendatang.