Disinstalla Cloud Service Mesh
Questa pagina spiega come disinstallare Cloud Service Mesh se utilizzi le API Istio. Se utilizzi le API Compute Engine, non sono necessari passaggi. Per comprendere le differenze, consulta la panoramica di Cloud Service Mesh.
Se segui queste istruzioni per disinstallare Cloud Service Mesh, vengono rimosse tutte le configurazioni, indipendentemente dal tipo di control plane (in-cluster o gestito). Se stai eseguendo una migrazione da in-cluster a gestito, segui la guida alla migrazione invece.
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.
Per evitare l'interruzione del traffico dell'applicazione:
- Esegui il downgrade di tutte le policy mTLS STRICT a PERMISSIVE.
- Rimuovi eventuali AuthorizationPolicy che potrebbero bloccare il traffico.
Disattiva la gestione automatica su questo cluster (indipendentemente dal fatto che l'abbia 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
).
Disabilita l'inserimento automatico di sidecar nei tuoi spazi dei nomi, se è abilitato. Esegui il comando seguente 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 visualizzi
istio.io/rev=
nella colonnaLABELS
, rimuovilo:kubectl label namespace YOUR_NAMESPACE istio.io/rev-
Se nell'output visualizzi
istio-injection
nella colonnaLABELS
, rimuovilo:kubectl label namespace YOUR_NAMESPACE istio-injection-
Se non vedi le etichette
istio.io/rev
oistio-injection
, l'inserimento automatico non è stato attivato nello spazio dei nomi.Riavvia i workload a cui sono stati inseriti i sidecar per rimuovere i proxy.
Se utilizzi Cloud Service Mesh gestito, controlla quale implementazione del control plane hai nel cluster. In questo modo potrai eliminare le risorse pertinenti nei passaggi successivi.
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
Elimina i webhook dal cluster, se esistenti.
Cloud Service Mesh nel cluster
Elimina
validatingwebhooksconfiguration
emutatingwebhookconfiguration
.kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot,istio.io/owned-by!=mesh.googleapis.com
Cloud Service Mesh gestito
A. Elimina l'attributo
validatingwebhooksconfiguration
.kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
B. Elimina tutta l'
mutatingwebhookconfiguration
.kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNEL
Una volta che tutti i carichi di lavoro sono attivi e non vengono osservati proxy, puoi eliminare in sicurezza il piano di controllo in-cluster per interrompere la fatturazione.
Per rimuovere il control plane in-cluster, esegui questo comando:
istioctl uninstall --purge
Se non sono presenti altri control plane, puoi eliminare lo spazio dei nomi
istio-system
per eliminare tutte le risorse Cloud Service Mesh. In caso contrario, elimina i servizi corrispondenti alle revisioni di Cloud Service Mesh. In questo modo si evita di eliminare risorse condivise, come le CRD.Elimina gli spazi dei nomi
istio-system
easm-system
:kubectl delete namespace istio-system asm-system --ignore-not-found=true
Controlla se le eliminazioni sono state eseguite correttamente:
kubectl get ns
L'output dovrebbe indicare uno stato
Terminating
e restituire i risultati come mostrato. In caso contrario, potresti dover eliminare manualmente le risorse rimanenti negli spazi dei nomi e riprovare.NAME STATUS AGE istio-system Terminating 71m asm-system Terminating 71m
Se eliminerai i cluster o li hai già eliminati, assicurati che ogni cluster sia annullato dal tuo parco risorse.
Se hai abilitato la configurazione predefinita del parco risorse di Cloud Service Mesh gestito e vuoi disabilitarla per i cluster futuri, disabilitala. Puoi saltare questo passaggio se disinstalli 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 tuo progetto host del parco risorse.
Se prevedi di interrompere l'utilizzo di Cloud Service Mesh a livello di parco risorse, disattiva la funzionalità di mesh di servizi per il progetto host del parco risorse.
gcloud container hub mesh disable --project FLEET_PROJECT_ID
Dove FLEET_PROJECT_ID è l'ID del tuo progetto host del parco risorse.
Se hai attivato Cloud Service Mesh gestito, controlla ed elimina le risorse gestite se sono presenti:
Elimina il deployment
mdp-controller
:kubectl delete deployment mdp-controller -n kube-system
Recupera ed elimina la risorsa personalizzata di controllo del piano dati:
Ottieni il CR di controllo del piano dati:
kubectl get dataplanecontrol
Elimina il CR di controllo del piano dati:
kubectl delete dataplanecontrol DATA_PLANE_CONTROL_CR_NAME
Sostituisci DATA_PLANE_CONTROL_CR_NAME con l'output del comando precedente.
Elimina i CRD
controlplanerevision
e dataplanecontrol:kubectl delete crd controlplanerevisions.mesh.cloud.google.com dataplanecontrols.mesh.cloud.google.com
Se hai l'implementazione del piano di controllo
TRAFFIC_DIRECTOR
, pulisci le risorse del controllo di integrità trasparente. Normalmente vengono rimossi automaticamente, ma puoi assicurarti che vengano puliti procedendo nel seguente modo:Elimina il daemonset
snk
.kubectl delete daemonset snk -n kube-system
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.
Verifica se è presente il configmap
istio-cni-plugin-config
: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
Elimina il daemonset
istio-cni-node
:kubectl delete daemonset istio-cni-node -n kube-system
Se disinstalli Cloud Service Mesh gestito, contatta l'assistenza per assicurarti che tutte le risorseGoogle Cloud vengano pulite. Se non segui questo passaggio, è possibile che lo spazio dei nomi
istio-system
e le mappe di configurazione continuino a essere ricreati.
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 i binding RBAC, vengono rimossi sistematicamente dal cluster. Durante il processo 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 riattivazione senza problemi di Cloud Service Mesh in futuro.