Meng-uninstal Cloud Service Mesh

Halaman ini menjelaskan cara meng-uninstal Cloud Service Mesh jika Anda menggunakan Istio API. Jika Anda menggunakan Compute Engine API, tidak ada langkah yang diperlukan. Lihat ringkasan Cloud Service Mesh untuk memahami perbedaannya.

Dengan mengikuti petunjuk ini untuk meng-uninstal Cloud Service Mesh, semua konfigurasi akan dihapus, terlepas dari jenis bidang kontrol (dalam cluster atau terkelola). Jika Anda melakukan migrasi dari dalam cluster ke terkelola, ikuti Panduan migrasi.

Meng-uninstal Cloud Service Mesh

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

  1. Untuk mencegah gangguan traffic aplikasi:

    • Downgrade kebijakan mTLS STRICT ke PERMISSIVE.
    • Hapus AuthorizationPolicy yang dapat memblokir traffic.
  2. Nonaktifkan Pengelolaan Otomatis di cluster ini (baik Anda menerapkannya secara langsung maupun menggunakan konfigurasi default fleet):

      gcloud container fleet mesh update \
         --management manual \
         --memberships MEMBERSHIP_NAME \
         --project FLEET_PROJECT_ID \
         --location MEMBERSHIP_LOCATION
    

    Ganti kode berikut:

    • MEMBERSHIP_NAME adalah nama keanggotaan yang tercantum saat Anda memverifikasi bahwa cluster Anda terdaftar ke fleet.
    • MEMBERSHIP_LOCATION adalah lokasi keanggotaan Anda (baik wilayah, maupun global).
  3. Nonaktifkan injeksi otomatis sidecar 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 kolom LABELS, hapus:

     kubectl label namespace YOUR_NAMESPACE istio.io/rev-
    

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

     kubectl label namespace YOUR_NAMESPACE istio-injection-
    

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

  4. Mulai ulang workload yang telah memasukkan sidecar untuk menghapus proxy.

  5. Jika Anda menggunakan Cloud Service Mesh terkelola, periksa implementasi platform kontrol yang Anda miliki di cluster. Hal ini akan membantu menghapus resource yang relevan di langkah selanjutnya.

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

    kubectl delete controlplanerevision asm-managed asm-managed-rapid asm-managed-stable -n istio-system --ignore-not-found=true
    
  7. Hapus webhook dari cluster Anda, jika ada.

    Cloud Service Mesh dalam cluster

    Hapus validatingwebhooksconfiguration dan mutatingwebhookconfiguration.

    kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot,istio.io/owned-by!=mesh.googleapis.com
    

    Cloud Service Mesh Terkelola

    A. Hapus validatingwebhooksconfiguration.

    kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
    

    B. Hapus semua mutatingwebhookconfiguration.

    kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNEL
    
  8. Setelah semua beban kerja muncul dan tidak ada proxy yang diamati, Anda dapat menghapus bidang kontrol dalam cluster dengan aman untuk menghentikan penagihan.

    Untuk menghapus plane kontrol dalam cluster, jalankan perintah berikut:

    istioctl uninstall --purge
    

    Jika tidak ada plane 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. Hal ini menghindari penghapusan resource bersama, seperti CRD.

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

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

     kubectl get ns
    

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

     NAME                 STATUS       AGE
     istio-system         Terminating  71m
     asm-system           Terminating  71m
    
  11. Jika Anda akan menghapus cluster, atau telah menghapusnya, pastikan setiap cluster tidak terdaftar dari fleet Anda.

  12. Jika Anda mengaktifkan konfigurasi default fleet Cloud Service Mesh terkelola dan ingin menonaktifkannya untuk cluster mendatang, nonaktifkan konfigurasi tersebut. 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 sebagai ID project Host Flotte Anda.

  13. Jika Anda berencana untuk berhenti menggunakan Cloud Service Mesh di tingkat fleet, nonaktifkan fitur service mesh untuk project host fleet Anda.

     gcloud container hub mesh disable --project FLEET_PROJECT_ID
    

    Dengan FLEET_PROJECT_ID sebagai ID project Host Flotte Anda.

  14. Jika Anda mengaktifkan Cloud Service Mesh terkelola, periksa dan hapus resource terkelola jika ada:

    1. Hapus deployment mdp-controller:

        kubectl delete deployment mdp-controller -n kube-system
      
    2. Jika Anda memiliki implementasi panel kontrol TRAFFIC_DIRECTOR, bersihkan resource Transparent Health Check. Biasanya, file ini dihapus secara otomatis, tetapi Anda dapat memastikannya dihapus dengan melakukan hal berikut:

      1. Hapus daemonset snk.

           kubectl delete daemonset snk -n kube-system
        
      2. Hapus aturan firewall.

           gcloud compute firewall-rules delete gke-csm-thc-FIRST_8_CHARS_OF_CLUSTER_ID
        

        Ganti kode berikut:

        • FIRST_8_CHARS_OF_CLUSTER_ID adalah 8 karakter pertama dari ID Cluster untuk cluster tertentu Anda.
    3. Periksa apakah configmap 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
      
    4. Hapus daemonset istio-cni-node:

        kubectl delete daemonset istio-cni-node -n kube-system
      
  15. Jika Anda meng-uninstal Cloud Service Mesh terkelola, hubungi Dukungan untuk memastikan semua resource Google Cloud dihapus. Namespace dan peta konfigurasi istio-system juga dapat terus dibuat ulang jika Anda tidak mengikuti langkah ini.

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