Comprendre la compatibilité de Cloud Service Mesh
Ce guide explique en détail comment évaluer la compatibilité d'un parc pour la modernisation du plan de contrôle en vérifiant que sa configuration, son infrastructure et son échelle sont compatibles avec l'implémentation du plan de contrôle TRAFFIC_DIRECTOR.
Activer ou désactiver les vérifications de compatibilité
Pour lancer les vérifications de compatibilité, activez le mode validation pour le parc. Cela déclenche un audit continu de toutes les configurations Istio, des configurations d'infrastructure et des paramètres de scaling. L'activation de ces vérifications n'entraîne aucune modification de votre parc ni de vos clusters. Elle permet uniquement de générer des rapports de compatibilité.
Activer les vérifications
Pour commencer l'audit de compatibilité, exécutez la commande gcloud suivante :
gcloud alpha container fleet mesh update --modernization-compatibility validation-enabled --project FLEET_PROJECT_ID
Remplacez FLEET_PROJECT_ID par l'ID de votre projet hôte de parc.
En général, le FLEET_PROJECT_ID porte le même nom que le projet.
Une fois activé, Cloud Service Mesh commence à évaluer la compatibilité du parc et de tous les clusters provisionnés Cloud Service Mesh du parc avec la modernisation.
Désactiver les vérifications
Pour arrêter le signalement des résultats de compatibilité, exécutez la commande suivante :
gcloud alpha container fleet mesh update --modernization-compatibility validation-disabled --project FLEET_PROJECT_ID
Cette commande supprime les conditions de compatibilité de la modernisation des états d'appartenance, ainsi que l'état ModernizationCompatible des ressources personnalisées Istio individuelles.
Comprendre la compatibilité
La compatibilité avec la modernisation est indiquée à l'aide de conditions au niveau du parc et de l'appartenance (cluster). Le système effectue différentes vérifications à différents moments, toutes les vérifications étant effectuées au moins une fois par jour. Laissez passer jusqu'à un jour pour que l'état soit mis à jour après l'activation des vérifications ou l'application des corrections.
Pour afficher ces résultats, récupérez le dernier état du réseau maillé à l'aide de la commande suivante :
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
Compatibilité au niveau du parc
Affichez l'état global de la modernisation de votre parc sous state.servicemesh.conditions.
Le parc est compatible : si votre parc est compatible, une condition avec le code
MODERNIZATION_COMPATIBLEs'affiche :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: INFOLe parc n'est pas compatible : si votre parc n'est pas encore compatible avec la modernisation, une condition avec le code
MODERNIZATION_INCOMPATIBLEs'affiche :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: INFOSi votre parc n'est pas compatible, examinez les conditions pour identifier les lacunes spécifiques. Recherchez d'autres conditions au niveau du parc de gravité
WARNINGouERROR, ainsi que des conditions au niveau du cluster sousmembershipStates.servicemeshpour résoudre les éventuels problèmes bloquants.
Compatibilité au niveau du cluster
Recherchez les conditions de gravité WARNING ou ERROR sous membershipStates.servicemesh pour chaque cluster provisionné Cloud Service Mesh du parc. S'il existe des incompatibilités, le résultat est semblable à ceci :
...
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
...
Suivez les documentationLink fournies dans chaque condition pour comprendre et résoudre l'incompatibilité spécifique.
Résoudre les problèmes de compatibilité
Résoudre les problèmes d'annotations de pod incompatibles
Le code MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION indique que le cluster ne peut pas être modernisé vers le plan de contrôle TRAFFIC_DIRECTOR, car certains pods comportent des annotations Istio non compatibles ou non valides.
Exemple de résultat de la commande gcloud container fleet mesh describe avec la condition MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION définie pour l'appartenance :
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
Pour résoudre ces annotations de pod :
Identifier les annotations problématiques : vérifiez le champ
detailsde la condition d'état pour trouver les clés d'annotation non compatibles ou non valides. Recherchez tous les pods avec les clés d'annotation problématiques.Corriger et valider :
- Modifiez les spécifications YAML de vos déploiements ou pods pour supprimer ou modifier les annotations identifiées, en veillant à ce qu'elles n'incluent aucune annotation non compatible. Appliquez à nouveau le fichier YAML mis à jour à votre cluster.
- Une fois que toutes les annotations de pod sont corrigées, la condition
MODERNIZATION_INCOMPATIBLE_POD_ANNOTATIONne s'affiche plus pour cette appartenance.
Résoudre les configurations incompatibles
Le code MODERNIZATION_INCOMPATIBLE_CONFIG indique que le cluster ne peut pas être modernisé vers le plan de contrôle TRAFFIC_DIRECTOR en raison de configurations incompatibles. Ces incompatibilités peuvent être dues aux éléments suivants :
- Ressources personnalisées Istio spécifiques utilisant des fonctionnalités ou des champs non compatibles, ou contenant des valeurs non valides.
- Paramètres MeshConfig Istio non valides ou non acceptés.
- Dépassement des limites d'évolutivité.
- Utilisation d'annotations de service ou d'espace de noms non compatibles.
Exemple de résultat de la commande gcloud container fleet mesh describe avec la condition MODERNIZATION_INCOMPATIBLE_CONFIG définie pour l'appartenance :
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
Pour résoudre ces configurations :
Analysez les détails de l'état : vérifiez le champ
detailsde la condition d'état. Il récapitule les erreurs individuelles et identifie les types de ressources présentant des problèmes de configuration. Dans l'exemple de détails fourni, vous devez résoudre les problèmes d'échelle et de MeshConfig, et inspecter les ressourcesGatewayetServiceEntrypour détecter les erreurs.Identifier et examiner les ressources incompatibles : utilisez le script suivant pour lister toutes les ressources personnalisées (CR) Istio dont les vérifications de compatibilité ont échoué. Le script nécessite l'installation de
kubectletjq. La sortie inclut les détails spécifiques des erreurs trouvées sousstatus.conditions(type :ModernizationCompatible, état :"False") de chaque ressource.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]}' doneExemple de résultat :
--- 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" ] }Corrigez et appliquez les configurations : modifiez votre fichier YAML en supprimant les champs non compatibles ou en remplaçant les valeurs non valides par des valeurs compatibles. Pour obtenir de l'aide, consultez la documentation sur les fonctionnalités compatibles avec Cloud Service Mesh géré et les API Istio non compatibles. (Par exemple, dans l'exemple fourni, mettez à jour la résolution
ServiceEntrydeDNS_ROUND_ROBINàDNS.)Vérifiez les corrections : après avoir appliqué les corrections, attendez jusqu'à 24 heures que les vérifications périodiques mettent à jour l'état.
La condition
ModernizationCompatiblesur les ressources fixes doit passer à l'état"True". Vérifiez l'état de la ressource à l'aide de la commande suivante :kubectl get resource name -n namespace -o yamlExemple de résultat :
status: conditions: - lastTransitionTime: "2026-06-05T06:12:52.219963391Z" message: Resource is compatible for modernization reason: Compatible status: "True" type: ModernizationCompatibleRéexécutez la commande
gcloud container fleet mesh describe. Une fois tous les problèmes associés résolus, la conditionMODERNIZATION_INCOMPATIBLE_CONFIGne s'affichera plus pour cet abonnement.
Résoudre les problèmes d'incompatibilité de la taille du parc
Le code MODERNIZATION_INCOMPATIBLE_FLEET_SCALE indique que le parc ne peut pas être modernisé vers le plan de contrôle TRAFFIC_DIRECTOR, car l'échelle des ressources du parc dépasse les limites acceptées pour la modernisation.
Au cours de cette phase, nous vous aidons à moderniser vos parcs avec les limites suivantes :
- Jusqu'à 1 500 points de terminaison (proxys) du plan de données dans l'ensemble du parc.
- Jusqu'à 200 services Cloud Service Mesh dans le parc.