Disinstallare Cloud Service Mesh gestito
Questa pagina spiega come disinstallare Cloud Service Mesh gestito. Se stai disinstallando Cloud Service Mesh in-cluster, segui invece la guida alla disinstallazione in-cluster.
Se utilizzi una configurazione legacy con più control plane di cui è stato eseguito il provisioning, seguendo queste istruzioni rimuoverai tutti i control plane di cui è stato eseguito il provisioning.
I control plane gestiti da asmcli non sono supportati per la disinstallazione, ma
sono supportati i cluster con control plane gestiti da asmcli --managed o dall'API Mesh. Se non hai la certezza del control plane, esegui il comando seguente:
kubectl get controlplanerevisions -n istio-system -l 'app.kubernetes.io/created-by!=asmcli'
La disinstallazione è supportata se è presente un elemento elencato nell'output.
Disinstallare Cloud Service Mesh
Utilizza i seguenti comandi per disinstallare tutti i componenti di Cloud Service Mesh.
Per evitare interruzioni del traffico delle applicazioni:
- Esegui il downgrade di tutte le policy mTLS STRICT a PERMISSIVE.
- Rimuovi qualsiasi AuthorizationPolicy che potrebbe bloccare il traffico.
Disabilita il multicluster se sono presenti altri cluster che eseguono l'individuazione degli endpoint nel cluster che stai disinstallando.
kubectl patch configmap/asm-options -n istio-system --type merge -p '{"data":{"multicluster_mode":"manual"}}'Trova i secret che richiedono la pulizia, quindi eliminali:
kubectl get secrets -n istio-system -l istio/multiCluster=truekubectl delete secret SECRET_NAMEDove SECRET_NAME è il nome del secret. Ripeti questo passaggio per ogni secret elencato.
Disabilita l'inserimento automatico di sidecar negli spazi dei nomi, se è abilitato. Esegui il comando seguente per visualizzare le etichette degli spazi dei nomi:
kubectl get namespace YOUR_NAMESPACE --show-labelsL'output è simile al seguente:
NAME STATUS AGE LABELS demo Active 4d17h istio.io/rev=asm-181-5
Se vedi
istio.io/rev=nell'output nella colonnaLABELS, rimuovilo:kubectl label namespace YOUR_NAMESPACE istio.io/rev-Se vedi
istio-injectionnell'output nella colonnaLABELS, rimuovilo:kubectl label namespace YOUR_NAMESPACE istio-injection-Se non vedi le etichette
istio.io/revoistio-injection, l'inserimento automatico non è stato abilitato nello spazio dei nomi.
Riavvia i carichi di lavoro in cui sono stati inseriti i sidecar per rimuovere i proxy.
Verifica che nessun proxy sia connesso al control plane gestito:
kubectl get pods --all-namespaces -o json | jq -r ' .items[] | select( .spec.containers[].env[]? | select(.name == "PROXY_CONFIG" and (.value | contains("\"discoveryAddress\":\"meshconfig.googleapis.com:443\""))) ) | "\(.metadata.namespace)\t\(.metadata.name)" 'Aggiorna la gestione delle specifiche di appartenenza alla funzionalità mesh su
not-installed:gcloud alpha container fleet mesh update \ --project FLEET_PROJECT_ID \ --memberships MEMBERSHIP_NAME \ --location MEMBERSHIP_LOCATION \ --management not-installedSostituisci quanto segue:
- MEMBERSHIP_NAME è il nome dell'appartenenza elencato quando hai verificato che il cluster fosse registrato nel parco risorse.
- MEMBERSHIP_LOCATION è la località dell'appartenenza (una
regione o
global).
Verifica che lo stato dell'appartenenza alla funzionalità mesh per lo stato del control plane sia
DISABLED.gcloud container fleet mesh describe --project FLEET_PROJECT_IDL'output è simile al seguente:
servicemesh: controlPlaneManagement: details: - code: DISABLED details: Control Plane Management is not enabled. state: DISABLED dataPlaneManagement: details: - code: DISABLED details: Data Plane Management is not enabled. state: DISABLED state: description: 'Please see https://cloud.google.com/service-mesh/docs/install for instructions to onboard to Anthos Service Mesh.' ...Se lo stato del control plane è
DEPROVISIONING, ricontrolla dopo qualche minuto.- Se lo stato del control plane è
STALLED, l'operazione di disinstallazione è bloccata a causa di una condizione di errore interno. Se il problema persiste, contatta l'assistenza.
- Se lo stato del control plane è
(Facoltativo) Rimuovi i CR Istio, i CRD Istio, la ConfigMap istio-(revision), la ConfigMap asm-options e lo spazio dei nomi
istio-systemper rimuovere il mesh di servizi dal cluster o utilizzarli in un altro mesh di servizi compatibile con l'API Istio.Rimuovi i CR Istio:
kubectl delete gateways,virtualservices,destinationrules,serviceentries,envoyfilters,sidecars,peerauthentications,requestauthentications,authorizationpolicies,telemetries,wasmplugins,proxyconfigs --all --all-namespacesRimuovi i CRD Istio:
kubectl get crds -o name | grep --color=never 'istio.io' | xargs kubectl deleteRimuovi la ConfigMap istio-(revision). Puoi saltare questo passaggio se elimini lo spazio dei nomi
istio-system.kubectl delete configmap istio-RELEASE_CHANNEL -n istio-systemSostituisci RELEASE_CHANNEL con il tuo canale di rilascio (
asm-managed,asm-managed-stableoasm-managed-rapid).Rimuovi la ConfigMap asm-options:
kubectl delete configmap asm-options -n istio-systemRimuovi lo spazio dei nomi
istio-system:kubectl delete namespace istio-system --ignore-not-found=trueVerifica se le eliminazioni sono andate a buon fine:
kubectl get nsL'output deve indicare uno stato
Terminatinge restituire i valori come mostrato, altrimenti potresti dover eliminare manualmente le risorse rimanenti negli spazi dei nomi e riprovare.NAME STATUS AGE istio-system Terminating 71m
Se CNI gestito è stato abilitato nel cluster(l'impostazione predefinita per le installazioni moderne), libera spazio dalle risorse CNI:
Cluster standard: controlla la presenza della ConfigMap
istio-cni-plugin-configed eliminala:Verifica se è presente la ConfigMap
istio-cni-plugin-config:kubectl get configmap istio-cni-plugin-config -n kube-systemSe presente, elimina la ConfigMap
istio-cni-plugin-config:kubectl delete configmap istio-cni-plugin-config -n kube-system
Cluster Autopilot: GKE Autopilot limita le modifiche alle risorse nello spazio dei nomi
kube-system. Se mantieni il cluster Autopilot dopo aver disinstallato Cloud Service Mesh gestito, contatta l'assistenza per richiedere la rimozione dellaistio-cni-plugin-configConfigMap dakube-system.
Se utilizzi Certificate Authority Service, pulisci le autorizzazioni e il pool di CA creati durante la configurazione di Certificate Authority Service per Cloud Service Mesh gestito.
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 stai eseguendo la disinstallazione da un solo cluster.
gcloud container hub mesh disable --fleet-default-member-config --project FLEET_PROJECT_IDDove FLEET_PROJECT_ID è l'ID del progetto host del parco risorse.
Se prevedi di interrompere l'utilizzo di Cloud Service Mesh a livello di parco risorse, disabilita la funzionalità mesh di servizi per il progetto host del parco risorse.
gcloud container hub mesh disable --project FLEET_PROJECT_IDDove FLEET_PROJECT_ID è l'ID del progetto host del parco risorse.
Al termine di questi passaggi, tutti i componenti di Cloud Service Mesh, inclusi proxy, autorità di certificazione e ruoli e 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.