Disinstalla Cloud Service Mesh gestito
Questa pagina spiega come disinstallare Cloud Service Mesh gestito. Se stai disinstallando Cloud Service Mesh in-cluster, segui la guida alla disinstallazione in-cluster.
Se utilizzi una configurazione precedente con più control plane di cui è stato eseguito il provisioning, seguendo queste istruzioni vengono rimossi tutti i control plane di cui è stato eseguito il provisioning.
I control plane gestiti da asmcli non sono supportati per la disinstallazione, ma
i cluster con control plane gestiti da asmcli --managed o dall'API mesh
sono supportati. Se non hai la certezza del control plane, esegui questo comando:
kubectl get controlplanerevisions -n istio-system -l 'app.kubernetes.io/created-by!=asmcli'
La disinstallazione è supportata se è presente un elemento nell'output.
Impatto della rimozione di Cloud Service Mesh
Prima di disinstallare Cloud Service Mesh, considera le funzionalità che vengono rimosse dal cluster e dai carichi di lavoro. Quando rimuovi i proxy Cloud Service Mesh dai tuoi carichi di lavoro e li riavvii, le tue applicazioni tornano al comportamento di networking Kubernetes standard.
Sicurezza
Quando rimuovi Cloud Service Mesh, perdi le seguenti funzionalità di sicurezza:
- Crittografia TLS reciproca (mTLS): il traffico tra i servizi non viene più criptato in transito con i certificati mTLS gestiti dal mesh.
- Policy di autorizzazione: le risorse personalizzate
AuthorizationPolicydi Mesh non vengono più applicate. Devi configurare le risorseNetworkPolicydi Kubernetes o l'autenticazione e l'autorizzazione a livello di applicazione per limitare il traffico.
Osservabilità
Quando rimuovi Cloud Service Mesh, perdi le seguenti funzionalità di osservabilità:
- Telemetria e metriche: la raccolta automatica delle metriche di livello 7 (come tassi di richieste, tassi di errore e latenza) si interrompe. La telemetria del mesh non viene più inserita automaticamente in Cloud Monitoring. Le metriche GKE standard non sono interessate.
- Dashboard e SLO: le dashboard preconfigurate di Cloud Service Mesh e il monitoraggio degli obiettivi del livello di servizio (SLO) nella consoleGoogle Cloud non vengono più compilati.
- Registrazione e tracciamento degli accessi: i log di accesso del proxy sidecar con identità mTLS client e tracce distribuite automatizzate non vengono più generati.
Service Discovery e resilienza del networking
Quando rimuovi Cloud Service Mesh, perdi le seguenti funzionalità di rete e resilienza:
- Resilienza di rete: i carichi di lavoro perdono le funzionalità di resilienza a livello di sidecar, inclusi i tentativi automatici, i timeout delle richieste configurabili, gli interruttori di circuito, il rilevamento di outlier e la gestione del pool di connessioni. Le applicazioni devono gestire direttamente gli errori di connessione e i tentativi.
- Service Discovery multi-cluster: il rilevamento degli endpoint cross-cluster e il routing tra più cluster in un parco risorse non funzionano più tramite la mesh. I servizi possono rilevare gli endpoint solo all'interno del cluster locale utilizzando il DNS standard.
Disinstalla Cloud Service Mesh
Utilizza i seguenti comandi per disinstallare tutti i componenti di Cloud Service Mesh.
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.
Disabilita il multicluster se sono presenti altri cluster che eseguono l'individuazione degli endpoint sul cluster che stai disinstallando.
kubectl patch configmap/asm-options -n istio-system --type merge -p '{"data":{"multicluster_mode":"manual"}}'Trova i segreti 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.
Disattiva l'inserimento automatico di sidecar nei tuoi spazi dei nomi, se è abilitato. Esegui questo comando per visualizzare le etichette dello spazio 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 nell'output visualizzi
istio.io/rev=nella colonnaLABELS, rimuovilo:kubectl label namespace YOUR_NAMESPACE istio.io/rev-Se nell'output visualizzi
istio-injectionnella 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 workload a cui sono stati inseriti i sidecar per rimuovere i proxy.
Verifica che non siano collegati proxy 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 a
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 è stato registrato nel parco risorse.
- MEMBERSHIP_LOCATION è la località del tuo abbonamento (una regione o
global).
Verifica che lo stato di 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, la 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-(revisione), la configmap asm-options e lo spazio dei nomi
istio-systemper rimuovere mesh di servizi dal cluster o utilizzarli in un altro mesh di servizi compatibile con l'API Istio.Rimuovi CR Istio:
kubectl delete gateways,virtualservices,destinationrules,serviceentries,envoyfilters,sidecars,peerauthentications,requestauthentications,authorizationpolicies,telemetries,wasmplugins,proxyconfigs --all --all-namespacesRimuovi i CRD di Istio:
kubectl get crds -o name | grep --color=never 'istio.io' | xargs kubectl deleteRimuovi il configmap istio-(revisione). 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=trueControlla se le eliminazioni sono andate a buon fine:
kubectl get nsL'output dovrebbe indicare uno stato
Terminatinge restituire il risultato mostrato. In caso contrario, potresti dover eliminare manualmente le risorse rimanenti negli spazi dei nomi e riprovare.NAME STATUS AGE istio-system Terminating 71m
Se utilizzi Certificate Authority Service, pulisci le autorizzazioni e il pool di CA creati durante la configurazione di Certificate Authority Service per Managed Cloud Service Mesh.
Se hai abilitato la configurazione predefinita del parco risorse di Cloud Service Mesh gestito e vuoi disattivarla per i cluster futuri, disattivala. Puoi saltare questo passaggio se disinstalli solo da un singolo 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.