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 lancer 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. Comptez 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 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 :

  1. Identifier les annotations problématiques : vérifiez le champ details de 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.

  2. Corriger et valider :

    1. 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 pas d'annotations non compatibles. Appliquez à nouveau le fichier YAML mis à jour à votre cluster.
    2. Une fois que toutes les annotations de pod sont corrigées, la condition MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION ne s'affiche plus pour cette appartenance.