Informazioni sulla compatibilità di Cloud Service Mesh
L'implementazione del control plane ISTIOD è deprecata e devi valutare la compatibilità, risolvere le condizioni di blocco nei tuoi parchi risorse ed eseguire la modernizzazione prima della scadenza del supporto.
Questa guida descrive in dettaglio come valutare la compatibilità di un parco risorse per la modernizzazione del control plane confermando che la configurazione, l'infrastruttura e la scalabilità sono 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 audit continuo di tutte le configurazioni Istio, delle configurazioni dell'infrastruttura e dei parametri di scalabilità. L'attivazione di questi controlli non comporta alcuna modifica al parco risorse o ai cluster, ma attiva solo i report sulla compatibilità.
Abilita i controlli
Per iniziare l'audit 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 progetto host del parco risorse.
In genere, il 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 con Cloud Service Mesh nel parco risorse per verificarne la compatibilità con la modernizzazione.
Disabilita 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 dalle singole CR Istio.
Informazioni sulla compatibilità
La compatibilità con la modernizzazione viene segnalata utilizzando le condizioni sia a livello di parco risorse sia di appartenenza (cluster). Il sistema esegue vari controlli in momenti diversi, con tutti i controlli eseguiti almeno una volta al giorno. Dopo aver attivato i controlli o applicato le correzioni, attendi fino a un giorno per l'aggiornamento dello stato.
Per visualizzare questi risultati, recupera lo stato più recente del mesh con il seguente comando:
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
Compatibilità a livello di parco risorse
Visualizza lo stato di modernizzazione complessivo del tuo parco risorse in state.servicemesh.conditions.
Il parco risorse è compatibile: se il tuo parco risorse è 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 con 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 individuare eventuali lacune specifiche. Controlla se sono presenti altre condizioni a livello di parco risorse con gravità
WARNINGoERROR, nonché condizioni a livello di cluster inmembershipStates.servicemeshper risolvere eventuali problemi.
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 di 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 le documentationLink fornite all'interno di ogni condizione per comprendere e risolvere l'incompatibilità specifica.
Risolvi i problemi di compatibilità
Risolvi le annotazioni dei pod incompatibili
Il codice MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION indica che non è possibile modernizzare il cluster 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 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 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 applica nuovamente 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.
Risolvi 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 supportati.
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. Riepiloga 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 individuare eventuali errori.Identifica ed esamina le risorse incompatibili: utilizza il seguente script di esempio per elencare le risorse personalizzate (CR) Istio che non superano i controlli di compatibilità. Questo script viene fornito come esempio. Esaminalo e analizzalo per assicurarti che soddisfi i requisiti operativi e dell'ambiente prima di eseguirlo nel cluster. Lo script richiede l'installazione di
kubectlejq. L'output include i dettagli dell'errore specifico trovato instatus.conditions(tipo:ModernizationCompatible, stato:"False") di ogni risorsa.for resource in authorizationpolicies destinationrules envoyfilters gateways peerauthentications proxyconfigs 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 valori compatibili. Per assistenza, consulta la documentazione relativa alle funzionalità supportate di Cloud Service Mesh gestito e al supporto delle API in Cloud Service Mesh gestito. Ad esempio, nell'esempio fornito, aggiorna la risoluzione
ServiceEntrydaDNS_ROUND_ROBINaDNS.Verifica le correzioni: dopo aver applicato le correzioni, attendi fino a 24 ore per i controlli periodici per aggiornare lo stato.
La condizione
ModernizationCompatiblesulle risorse fisse dovrebbe 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.
Risolvi il problema della scalabilità del parco risorse 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 la modernizzazione dei parchi risorse con i seguenti limiti:
- Fino a 1500 endpoint del piano dati (proxy) nel parco risorse.
- Fino a 200 servizi Cloud Service Mesh nel parco risorse.