Informazioni sulla compatibilità di Cloud Service Mesh
Questa guida descrive in dettaglio come valutare la compatibilità di un parco risorse per la modernizzazione del piano di controllo, confermando che la configurazione, l'infrastruttura e la scalabilità sono compatibili con l'implementazione del piano di controllo TRAFFIC_DIRECTOR.
Attivare o disattivare i controlli di compatibilità
Per avviare i controlli di compatibilità, abilita la modalità di convalida per il parco risorse, che attiva un audit continuo di tutte le configurazioni di Istio, le configurazioni dell'infrastruttura e i parametri di scalabilità. L'abilitazione di questi controlli non comporta modifiche al parco risorse o ai cluster, ma solo la generazione di report sulla compatibilità.
Abilitare i controlli
Per avviare l'audit di compatibilità, esegui il seguente comando gcloud:
gcloud alpha container fleet mesh update --modernization-compatibility validation-enabled --project FLEET_PROJECT_ID
Sostituisci FLEET_PROJECT_ID con l'ID del 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 la compatibilità del parco risorse e di tutti i cluster di cui è stato eseguito il provisioning in Cloud Service Mesh nel parco risorse per la modernizzazione.
Disabilitare i controlli
Per interrompere la generazione di report sui risultati di compatibilità, esegui il seguente comando:
gcloud alpha container fleet mesh update --modernization-compatibility validation-disabled --project FLEET_PROJECT_ID
Questo comando rimuove le condizioni di compatibilità di modernizzazione dagli stati di appartenenza, nonché lo stato ModernizationCompatible dalle risorse personalizzate di Istio individuali.
Informazioni sulla compatibilità
La compatibilità di 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 prima che lo stato venga aggiornato dopo aver abilitato i controlli o applicato le correzioni.
Per visualizzare questi risultati, recupera l'ultimo stato del mesh con il seguente comando:
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
Compatibilità a livello di cluster
Cerca le condizioni con gravità WARNING o ERROR in membershipStates.servicemesh per ogni cluster di cui è stato eseguito il provisioning in Cloud Service Mesh nel parco risorse. Se esistono incompatibilità, l'output è simile al seguente:
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 il documentationLink fornito in ogni condizione per comprendere e risolvere l'incompatibilità specifica.
Risolvere i problemi di compatibilità
Risolvere le annotazioni dei pod incompatibili
Il codice MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION indica che non è possibile modernizzare il cluster nel piano di controllo TRAFFIC_DIRECTOR perché alcuni pod hanno annotazioni di 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 dei 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 deployment o i pod per rimuovere o modificare le annotazioni identificate, assicurandoti che non includano annotazioni non supportate. Applica di nuovo il file YAML aggiornato al cluster.
- Una volta corrette tutte le annotazioni dei pod, la condizione
MODERNIZATION_INCOMPATIBLE_POD_ANNOTATIONnon verrà più visualizzata per l'appartenenza.
Risolvere le configurazioni incompatibili
Il codice MODERNIZATION_INCOMPATIBLE_CONFIG indica che non è possibile modernizzare il cluster nel piano di controllo TRAFFIC_DIRECTOR a causa di configurazioni incompatibili. Queste incompatibilità possono derivare da:
- Risorse personalizzate di 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 queste configurazioni:
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 di scalabilità e MeshConfig e ispezionare le risorseGatewayeServiceEntryper verificare la presenza di errori.Identifica e analizza le risorse incompatibili: utilizza il seguente script per elencare tutte le risorse personalizzate di Istio che non superano i controlli di compatibilità. Per lo script è necessario che siano installati
kubectlejq. L'output include i dettagli specifici degli errori trovati instatus.conditions(type:ModernizationCompatible, status:"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
ServiceEntryrisoluzione daDNS_ROUND_ROBINaDNS).Verifica le correzioni: dopo aver applicato le correzioni, attendi fino a 24 ore prima che i controlli periodici aggiornino lo stato.
La condizione
ModernizationCompatiblesulle risorse corrette 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'appartenenza.