Résoudre les problèmes de configuration

Cette section explique les problèmes couramment rencontrés dans Cloud Service Mesh et indique comment les résoudre. Si vous avez besoin d'une aide supplémentaire, consultez la page Assistance.

Vérifier MembershipState

Vous pouvez vérifier à tout moment l'état le plus récent du réseau maillé en exécutant la commande suivante :

gcloud container fleet mesh describe

Le résultat est semblable à :

...
membershipSpecs:
  projects/project_id/locations/global/memberships/cluster:
    mesh:
      management: MANAGEMENT_AUTOMATIC
membershipStates:
  projects/project_id/locations/global/memberships/cluster:
    servicemesh:
      ...
      conditions:
        - code: CONFIG_VALIDATION_WARNING
          documentationLink: https://cloud.google.com/...
          details: Application of one or more configs has failed. Error details are shown on individual config resources. See documentation link for more detail.
          severity: WARNING
...

Codes d'erreur MembershipState

Si Cloud Service Mesh signale des conditions à MembershipState pour un cluster, cela peut signifier que les configurations de maillage (telles que les ressources personnalisées Istio) n'ont pas pu être appliquées. Les descriptions de code d'erreur suivantes fournissent plus d'informations sur la manière de les résoudre.

Code d'erreur Cause Résolution
CONFIG_APPLY_INTERNAL_ERROR Une ou plusieurs configurations n'ont pas pu être appliquées en raison d'une erreur interne. Contactez le service client.
QUOTA_EXCEEDED_* Une ou plusieurs configurations n'ont pas pu être appliquées, car les ressources ont atteint une limite de quota. Pour en savoir plus sur les quotas spécifiques et sur la manière de les augmenter, consultez la page Quotas.
CONFIG_VALIDATION_ERROR Une ou plusieurs configurations n'ont pas pu être appliquées en raison d'une configuration non valide. Pour les ressources personnalisées Istio, les configurations non valides sont entièrement supprimées de la traduction. Des erreurs spécifiques sont écrites dans les configurations qui les ont provoquées. Pour en savoir plus sur la manière de les diagnostiquer, consultez la section Erreurs de validation de la configuration.
CONFIG_VALIDATION_WARNING Nous avons rencontré des problèmes potentiels dans une ou plusieurs configurations. Pour les ressources personnalisées Istio, les champs non valides spécifiques sont ignorés, mais les configurations globales sont traitées. Il peut y avoir un comportement inattendu. Pour en savoir plus sur la manière de les diagnostiquer, consultez la section Erreurs de validation de la configuration.
MULTICLUSTER_SECRET_WARNING Le cluster utilise un secret multicluster Istio créé manuellement au lieu d'utiliser l'API multicluster déclarative pour la découverte de points de terminaison. Passez à l'implémentation déclarative de la configuration de la découverte de points de terminaison multicluster. Pour en savoir plus, consultez la page Secrets multicluster.
WORKLOAD_IDENTITY_REQUIRED Workload Identity n'est pas activé pour le cluster ou au moins l'un des pools de nœuds. Activez Workload Identity au niveau du cluster et du pool de nœuds. Pour obtenir des instructions, consultez la page Activer Workload Identity.
MANAGED_CNI_NOT_ENABLED Le CNI géré n'est pas activé pour ce cluster. Activez le CNI géré pour respecter les bonnes pratiques dans votre réseau maillé. Pour en savoir plus, consultez la page Activer le CNI géré.
NON_STANDARD_SIDECAR_BINARY_USAGE Une ou plusieurs commandes dans les conteneurs Istio utilisent des binaires autres que `envoy`, `pilot_agent` ou `iptables`. Supprimez la dépendance aux binaires non compatibles. Pour en savoir plus, consultez la page Utilisation de binaires non compatibles.
UNSUPPORTED_GATEWAY_CLASS_USAGE Le cluster est configuré avec des classes de passerelle (Istio et Anthos Service Mesh) qui nécessitent une migration vers la passerelle d'entrée Istio pour s'aligner sur les bonnes pratiques. Consultez la documentation pour obtenir des instructions détaillées.
UNSUPPORTED_MULTIPLE_CONTROL_PLANES Le cluster a provisionné plusieurs canaux de plan de contrôle. Cloud Service Mesh n'est compatible qu'avec un seul canal par cluster. Pour en savoir plus, consultez la page Corriger plusieurs plans de contrôle.
REQUIRED_ORG_POLICY_DISABLED Une règle d'administration désactivée doit être activée. Veuillez désactiver cette règle pour le projet afin de garantir le bon fonctionnement de Cloud Service Mesh. Pour en savoir plus, consultez la page Activer une règle d'administration requise.
MISSING_CONTROL_PLANE_CONFIG La configuration de Cloud Service Mesh est manquante pour le cluster. Veuillez suivre les instructions de la documentation Configuration manquante du plan de contrôle pour créer cette configuration. Votre maillage de services fonctionne toujours , mais il nécessite une mise à jour.

Erreurs de validation de la configuration

Les codes CONFIG_VALIDATION_WARNING et CONFIG_VALIDATION_ERROR indiquent que des problèmes ont été détectés dans les configurations de maillage (ressources personnalisées Istio ou Kubernetes ) et qu'un sous-ensemble de configurations n'a peut-être pas été correctement appliqué.

Comportement de la validation de la configuration

Cloud Service Mesh utilise un processus de validation de la configuration à deux niveaux :

  1. Validation synchrone : un webhook de validation effectue des vérifications de syntaxe initiales. Si une configuration est fondamentalement incorrecte, la mise à jour est rejetée au niveau de l'API Kubernetes et kubectl apply échoue immédiatement.
  2. Validation asynchrone : la vérification sémantique s'effectue en arrière-plan lors de la traduction. Si cette phase détecte une configuration non valide, le système supprime de manière asynchrone la ressource personnalisée (CR) pour éviter qu'elle n'endommage le reste du maillage tout en continuant à appliquer le reste des configurations valides.

Pour mieux comprendre ce comportement, consultez la section Comprendre la validation de la configuration.

Localiser les configurations non valides

Étant donné que les ressources personnalisées non valides sont supprimées de manière asynchrone, vous devez vérifier activement leur état. De nombreux détails d'erreur par ressource sont réécrits dans le champ d'état de la ressource applicable et affichés dans l'état de la fonctionnalité Fleet.

La commande suivante peut être utilisée pour localiser les configurations non valides et afficher les messages d'erreur spécifiques. (Remarque : Ces informations concernent spécifiquement les ressources Istio, et toutes les erreurs de validation ne sont pas affichées ici.)

for resource in serviceentries destinationrules virtualservices gateways peerauthentications authorizationpolicies requestauthentications sidecars telemetries envoyfilters;
  do kubectl get $resource --all-namespaces --output=json | \
   jq  '.items[] | select(.status.conditions != null and any(.status.conditions[]; .type == "Accepted" and .status == "False")) | {"name": .metadata.name, "namespace": .metadata.namespace, "kind": .kind, "conditions": .status.conditions}';
done

Le résultat est semblable à :

{
  "name": "demo-envoy-filter",
  "namespace": "default",
  "kind": "EnvoyFilter",
  "conditions": [
    {
      "lastTransitionTime": "2024-04-04T21:10:18.046975988Z",
      "message": "This API is not supported",
      "reason": "Invalid",
      "status": "False",
      "type": "Accepted"
    }
  ]
}