Informazioni sulla compatibilità di Cloud Service Mesh
Questa guida descrive in dettaglio come valutare la compatibilità di un parco risorse per la modernizzazione del control plane verificando che la sua configurazione, la sua infrastruttura e la sua scalabilità siano compatibili con l'implementazione del control plane TRAFFIC_DIRECTOR.
Attivare o disattivare i controlli di compatibilità
Per avviare i controlli di compatibilità, attiva la modalità di convalida per il parco risorse, che attiva un controllo continuo di tutte le configurazioni Istio, delle configurazioni dell'infrastruttura e dei parametri di scalabilità. L'attivazione di questi controlli non comporta modifiche al parco risorse o ai cluster; consente solo la generazione di report sulla compatibilità.
Abilita controlli
Per iniziare il controllo di compatibilità, esegui questo comando gcloud:
gcloud alpha container fleet mesh update --modernization-compatibility validation-enabled --project FLEET_PROJECT_ID
Sostituisci FLEET_PROJECT_ID con l'ID del tuo progetto host del parco risorse.
In genere, FLEET_PROJECT_ID ha lo stesso nome del progetto.
Una volta abilitato, Cloud Service Mesh inizia a valutare il parco risorse e tutti i cluster di cui è stato eseguito il provisioning in Cloud Service Mesh nel parco risorse per la compatibilità con la modernizzazione.
Disattiva i controlli
Per interrompere la generazione di report sui risultati di compatibilità, esegui questo comando:
gcloud alpha container fleet mesh update --modernization-compatibility validation-disabled --project FLEET_PROJECT_ID
Questo comando rimuove le condizioni di compatibilità della modernizzazione dagli stati di appartenenza, nonché lo stato ModernizationCompatible dai CR Istio individuali.
Informazioni sulla compatibilità
La compatibilità con la modernizzazione viene segnalata utilizzando le condizioni a livello di parco risorse e di appartenenza (cluster). Il sistema esegue vari controlli in momenti diversi, con tutti i controlli eseguiti almeno una volta al giorno. Attendi fino a un giorno per l'aggiornamento dello stato dopo aver attivato i controlli o applicato le correzioni.
Per visualizzare questi risultati, recupera lo stato più recente della mesh con il seguente comando:
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
Compatibilità a livello di parco risorse
Visualizza lo stato complessivo della modernizzazione del parco risorse in
state.servicemesh.conditions.
La flotta è compatibile: se la tua flotta è compatibile, vedrai una condizione con il codice
MODERNIZATION_COMPATIBLE:name: projects/project_id/locations/global/features/servicemesh state: servicemesh: conditions: - code: MODERNIZATION_COMPATIBLE details: 'Fleet is eligible for modernization.' documentationLink: https://cloud.google.com/service-mesh/... severity: INFOIl parco risorse non è compatibile: se il tuo parco risorse non è ancora compatibile per la modernizzazione, vedrai una condizione con il codice
MODERNIZATION_INCOMPATIBLE:name: projects/project_id/locations/global/features/servicemesh state: servicemesh: conditions: - code: MODERNIZATION_INCOMPATIBLE details: 'Fleet is not yet eligible for modernization.' documentationLink: https://cloud.google.com/service-mesh/... severity: INFOSe il tuo parco risorse non è compatibile, esamina le condizioni per lacune specifiche. Controlla la presenza di condizioni aggiuntive a livello di parco risorse con gravità
WARNINGoERROR, nonché condizioni a livello di cluster inmembershipStates.servicemeshper risolvere eventuali blocchi.
Compatibilità a livello di cluster
Cerca le condizioni con gravità WARNING o ERROR in
membershipStates.servicemesh per ogni cluster di Cloud Service Mesh di cui è stato eseguito il provisioning nel parco risorse. Se
esistono incompatibilità, l'output è simile a questo:
membershipSpecs:
projects/project_id/locations/global/memberships/cluster-a:
mesh:
management:MANAGEMENT_AUTOMATIC
membershipStates:
projects/project_id/locations/global/memberships/cluster-a:
servicemesh:
conditions:
- code: MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION
details: 'Pod pod-a in namespace test-namespace: invalid annotations: ["status.sidecar.istio.io/port": failed to parse port - "invalid", port must be a number and should be in the range 1..65535]; unsupported annotations: ["ambient.istio.io/redirection"] .'
documentationLink: https://cloud.google.com/service-mesh/...
severity: WARNING
- code: WORKLOAD_IDENTITY_REQUIRED
details: 'Workload Identity is not enabled for the cluster or at least one of the node pools.'
documentationLink: https://cloud.google.com/...
severity: ERROR
...
Segui le documentationLink fornite in ogni condizione per comprendere e risolvere l'incompatibilità specifica.
Risolvere i problemi di compatibilità
Risolvi le annotazioni dei pod incompatibili
Il codice MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION indica che il cluster
non può essere modernizzato al control plane TRAFFIC_DIRECTOR perché
alcuni pod hanno annotazioni Istio non supportate o non valide.
Output di esempio del comando gcloud container fleet mesh describe con la
condizione MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION impostata per l'appartenenza:
membershipStates:
projects/project_id/locations/global/memberships/membership-a:
servicemesh:
conditions:
- code: MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION
details: 'Pod pod-a in namespace test-namespace: invalid annotations: ["status.sidecar.istio.io/port": failed to parse port - "invalid", port must be a number and should be in the range 1..65535]; unsupported annotations: ["ambient.istio.io/redirection"] .'
documentationLink: https://cloud.google.com/service-mesh/...
severity: WARNING
Per risolvere queste annotazioni del pod:
Identifica le annotazioni problematiche: controlla il campo
detailsdella condizione di stato per trovare le chiavi di annotazione non supportate o non valide. Trova tutti i pod con le chiavi di annotazione problematiche.Correggi e verifica:
- Modifica le specifiche YAML per i tuoi deployment o pod per assicurarti che utilizzino solo annotazioni supportate (tutte le altre annotazioni non sono supportate). Rimuovi le annotazioni non supportate, correggi i valori non validi e riapplica il file YAML aggiornato al cluster.
- Una volta corrette tutte le annotazioni del pod, la condizione
MODERNIZATION_INCOMPATIBLE_POD_ANNOTATIONnon verrà più visualizzata per l'abbonamento.
Risolvere le configurazioni incompatibili
Il codice MODERNIZATION_INCOMPATIBLE_CONFIG indica che non è possibile modernizzare il cluster
al control plane TRAFFIC_DIRECTOR a causa di
configurazioni incompatibili. Queste incompatibilità possono derivare da:
- Risorse personalizzate (CR) Istio specifiche che utilizzano funzionalità o campi non supportati o che contengono valori non validi.
- Impostazioni MeshConfig di Istio non valide o non supportate.
- Superamento dei limiti di scalabilità.
- Utilizzo di annotazioni di servizi o spazi dei nomi non supportate.
Output di esempio del comando gcloud container fleet mesh describe con la
condizione MODERNIZATION_INCOMPATIBLE_CONFIG impostata per l'appartenenza:
membershipSpecs:
projects/project_id/locations/global/memberships/membership-a:
mesh:
management:MANAGEMENT_AUTOMATIC
membershipStates:
projects/project_id/locations/global/memberships/membership-a:
servicemesh:
conditions:
- code: MODERNIZATION_INCOMPATIBLE_CONFIG
details: 'One or more configs have warnings. Due to the following reason(s): Istio sidecar scale exceeds limit, MeshConfig "accessLogFile" is unsupported. Invalid Config Types: [Gateway, ServiceEntry], where more details are shown on individual config resources.See documentation link for more detail.'
documentationLink: https://cloud.google.com/service-mesh/...
severity: WARNING
Per risolvere questi problemi di configurazione:
Analizza i dettagli della condizione: controlla il campo
detailsdella condizione di stato. Riassume i singoli errori e identifica i tipi di risorse con problemi di configurazione. Per l'esempio di dettagli fornito, dovrai risolvere i problemi relativi a scalabilità e MeshConfig e controllare le risorseGatewayeServiceEntryper rilevare errori.Identifica e analizza le risorse incompatibili: utilizza il seguente script per elencare tutte le risorse personalizzate (CR) di Istio che non superano i controlli di compatibilità. Lo script richiede l'installazione di
kubectlejq. L'output include i dettagli specifici dell'errore rilevato instatus.conditions(tipo:ModernizationCompatible, stato:"False") di ogni risorsa.for resource in authorizationpolicies destinationrules gateways proxyconfigs peerauthentications requestauthentications serviceentries sidecars telemetries virtualservices wasmplugins workloadentries workloadgroups; do echo "--- Checking $resource ---" kubectl get $resource --all-namespaces -o json | \ jq -r '.items[] | select(.status.conditions != null and any(.status.conditions[]; .type == "ModernizationCompatible" and .status == "False")) | {"kind": .kind, "name": .metadata.name, "namespace": .metadata.namespace, "message": [.status.conditions[] | select(.type == "ModernizationCompatible").message]}' doneOutput di esempio:
--- Checking serviceentries --- { "kind": "ServiceEntry", "name": "demo-service-entry", "namespace": "se", "message": [ "WARNING: unsupported resolution type: DNS_ROUND_ROBIN" ] } .. --- Checking workloadentries --- { "kind": "WorkloadEntry", "name": "demo-we", "namespace": "default", "message": [ "WARNING: This API is not supported" ] }Correggi e applica le configurazioni: modifica il file YAML rimuovendo i campi non supportati o sostituendo i valori non validi con quelli compatibili. Per assistenza, consulta la documentazione Funzionalità supportate di Cloud Service Mesh gestito e API Istio non supportate. Ad esempio, nell'esempio fornito, aggiorna la risoluzione
ServiceEntrydaDNS_ROUND_ROBINaDNS.Verifica delle correzioni: dopo aver applicato le correzioni, attendi fino a 24 ore per l'aggiornamento dello stato tramite controlli periodici.
La condizione
ModernizationCompatibleper le risorse fisse deve cambiare in stato:"True". Controlla lo stato della risorsa utilizzando:kubectl get resource name -n namespace -o yamlOutput di esempio:
status: conditions: - lastTransitionTime: "2026-06-05T06:12:52.219963391Z" message: Resource is compatible for modernization reason: Compatible status: "True" type: ModernizationCompatibleEsegui di nuovo il comando
gcloud container fleet mesh describe. Una volta risolti tutti i problemi correlati, la condizioneMODERNIZATION_INCOMPATIBLE_CONFIGnon verrà più visualizzata per l'abbonamento.
Risolvere problemi di scalabilità del parco veicoli incompatibile
Il codice MODERNIZATION_INCOMPATIBLE_FLEET_SCALE indica che non è possibile modernizzare il parco risorse al control plane TRAFFIC_DIRECTOR perché la scalabilità delle risorse nel parco risorse supera i limiti supportati per la modernizzazione.
In questa fase supportiamo l'ammodernamento delle flotte con i seguenti limiti:
- Fino a 1500 endpoint (proxy) del data plane in tutto il parco risorse.
- Fino a 200 servizi Cloud Service Mesh nel parco risorse.