Disinstalla Cloud Service Mesh

Questa pagina spiega come disinstallare Cloud Service Mesh se utilizzi le API Istio. Se utilizzi le API Compute Engine, non è necessario alcun passaggio. Per comprendere le differenze, consulta la panoramica di Cloud Service Mesh.

Disinstalla Cloud Service Mesh

Utilizza i seguenti comandi per disinstallare tutti i componenti di Cloud Service Mesh. Questi comandi eliminano anche lo spazio dei nomi istio-system e tutte le definizioni di risorse personalizzate (CRD), incluse quelle che hai applicato.

  1. Per evitare l'interruzione del traffico delle applicazioni:

    • Esegui il downgrade di eventuali criteri mTLS RISTRICTIVI a PERMISSIVE.
    • Rimuovi eventuali AuthorizationPolicy che potrebbero bloccare il traffico.
  2. Disattiva la gestione automatica su questo cluster (indipendentemente dal fatto che sia stata applicata direttamente o utilizzando la configurazione predefinita del parco risorse):

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

    Sostituisci quanto segue:

    • MEMBERSHIP_NAME è il nome dell'appartenenza elencato quando hai verificato che il cluster è stato registrato nel parco risorse.
    • MEMBERSHIP_LOCATION è la località del tuo abbonamento (una regione o global).
  3. Disattiva l'inserimento automatico di sidecar nei tuoi spazi dei nomi, se è abilitato. Esegui il seguente comando per visualizzare le etichette dello spazio dei nomi:

     kubectl get namespace YOUR_NAMESPACE --show-labels
    

    L'output è simile al seguente:

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

    Se nell'output della colonna LABELS vedi istio.io/rev=,rimuovilo:

     kubectl label namespace YOUR_NAMESPACE istio.io/rev-
    

    Se nell'output della colonna LABELS vedi istio-injection,rimuovilo:

     kubectl label namespace YOUR_NAMESPACE istio-injection-
    

    Se non vedi le etichette istio.io/rev o istio-injection, significa che l'iniezione automatica non è stata attivata nello spazio dei nomi.

  4. Riavvia i workload in cui sono stati iniettati i sidecar per rimuovere i proxy.

  5. Se utilizzi Cloud Service Mesh gestito, controlla quale implementazione del piano di controllo hai nel tuo cluster. Questo ti aiuterà a eliminare le risorse pertinenti nei passaggi successivi.

  6. Se utilizzi Cloud Service Mesh gestito, rimuovi tutte le risorse controlplanerevision nel cluster:

    kubectl delete controlplanerevision asm-managed asm-managed-rapid asm-managed-stable -n istio-system --ignore-not-found=true
    
  7. Elimina i webhook dal cluster, se esistono.

    Cloud Service Mesh nel cluster

    Elimina validatingwebhooksconfiguration e mutatingwebhookconfiguration.

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

    Cloud Service Mesh gestito

    A. Elimina validatingwebhooksconfiguration.

    kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
    

    B. Elimina tutti i mutatingwebhookconfiguration.

    kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNEL
    
  8. Una volta avviati tutti i carichi di lavoro e non vengono rilevati proxy, puoi eliminare in sicurezza il piano di controllo all'interno del cluster per interrompere la fatturazione.

    Per rimuovere il piano di controllo in cluster, esegui il seguente comando:

    istioctl uninstall --purge
    

    Se non sono presenti altri piani di controllo, puoi eliminare lo spazio dei nomi istio-system per eliminare tutte le risorse di Cloud Service Mesh. In caso contrario, elimina i servizi corrispondenti alle revisioni di Cloud Service Mesh. In questo modo, eviterai di eliminare le risorse condivise, come i CRD.

  9. Elimina gli spazi dei nomi istio-system e asm-system:

     kubectl delete namespace istio-system asm-system --ignore-not-found=true
    
  10. Controlla se le eliminazioni sono andate a buon fine:

     kubectl get ns
    

    L'output deve indicare uno stato Terminating e restituire il risultato mostrato, altrimenti potrebbe essere necessario eliminare manualmente le risorse rimanenti nei namespace e riprovare.

     NAME                 STATUS       AGE
     istio-system         Terminating  71m
     asm-system           Terminating  71m
    
  11. Se intendi eliminare i cluster o li hai già eliminati, assicurati che ogni cluster sia annullato nel tuo parco risorse.

  12. Se hai attivato la configurazione predefinita del parco risorse di Cloud Service Mesh gestito e vuoi disattivarla per i cluster futuri, disattivala. Puoi saltare questo passaggio se esegui la disinstallazione solo da un singolo cluster.

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

    dove FLEET_PROJECT_ID è l'ID del progetto host del parco risorse.

  13. Se hai attivato Cloud Service Mesh gestito, controlla ed elimina le risorse gestite se sono presenti:

    1. Elimina il deployment mdp-controller:

        kubectl delete deployment mdp-controller -n kube-system
      
    2. Se hai implementato il piano di controllo TRAFFIC_DIRECTOR, ripulisci le risorse di controllo di integrità trasparente. In genere vengono rimossi automaticamente, ma puoi assicurarti che vengano ripuliti seguendo questa procedura:

      1. Elimina il set di daemon snk.

           kubectl delete daemonset snk -n kube-system
        
      2. Elimina la regola firewall.

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

        Sostituisci quanto segue:

        • FIRST_8_CHARS_OF_CLUSTER_ID sono i primi 8 caratteri dell'ID cluster per il tuo cluster specifico.
    3. Verifica se il configmap istio-cni-plugin-config è presente:

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

      Se presente, elimina il configmap istio-cni-plugin-config:

        kubectl delete configmap istio-cni-plugin-config -n kube-system
      
    4. Elimina il set di daemon istio-cni-node:

        kubectl delete daemonset istio-cni-node -n kube-system
      
  14. Se stai disinstallando Cloud Service Mesh gestito e mantieni il tuo cluster, contatta l'assistenza per assicurarti che tutte le risorse Google Cloud vengano eliminate. Anche lo spazio dei nomi e le mappe di configurazione istio-system potrebbero continuare a essere ricreati se non segui questo passaggio.

Al termine di questi passaggi, tutti i componenti di Cloud Service Mesh, inclusi i proxy, le autorità di certificazione in cluster e i ruoli e le associazioni RBAC, vengono rimossi sistematicamente dal cluster. Durante la procedura di installazione, a un account di servizio di proprietà di Google vengono concesse le autorizzazioni necessarie per stabilire le risorse del mesh di servizi all'interno del cluster. Queste istruzioni di disinstallazione non revocano queste autorizzazioni, consentendo una re-attivazione senza problemi di Cloud Service Mesh in futuro.