Cómo resolver problemas de configuración

En esta sección, se explican los problemas comunes de Cloud Service Mesh y cómo solucionarlos. Si necesitas asistencia adicional, consulta Obtén asistencia.

Cómo verificar MembershipState

En cualquier momento, puedes ejecutar el siguiente comando para verificar el estado más reciente de la malla:

gcloud container fleet mesh describe

El resultado es similar al siguiente:

...
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
...

Códigos de error de MembershipState

Si Cloud Service Mesh informa condiciones a MembershipState para un clúster, es posible que no se hayan podido aplicar las configuraciones de malla (como los recursos personalizados de Istio). En las siguientes descripciones de códigos de error, se proporciona más información para abordarlos.

Código de error Causa Resolución
CONFIG_APPLY_INTERNAL_ERROR No se pudo aplicar una o más configuraciones debido a un error interno. Comunícate con el equipo de asistencia al cliente.
QUOTA_EXCEEDED_* No se pudieron aplicar una o más configuraciones debido a que los recursos alcanzaron un límite de cuota. Consulta Cuotas para obtener información sobre las cuotas específicas y cómo aumentarlas.
CONFIG_VALIDATION_ERROR No se pudo aplicar una o más configuraciones debido a que la configuración no es válida. Los errores específicos se escriben en los parámetros de configuración que los causaron. En la sección Errores de validación de configuración, se describe cómo diagnosticarlos.
CONFIG_VALIDATION_WARNING Detectamos posibles problemas en uno o más parámetros de configuración. Es posible que no se hayan aplicado, y si se aplicaron, es posible que se produzca un comportamiento imprevisto. En la sección Errores de validación de configuración, se describe cómo diagnosticarlos.
MULTICLUSTER_SECRET_WARNING El clúster usa un secreto de varios clústeres de Istio creado de forma manual en lugar de usar la API declarativa de varios clústeres para el descubrimiento de extremos. Se trasladó la configuración de detección de extremos de varios clústeres a la implementación declarativa. Puedes encontrar más información en la página Secretos de varios clústeres.
WORKLOAD_IDENTITY_REQUIRED Workload Identity no está habilitada para el clúster o, al menos, para uno de los grupos de nodos. Habilita Workload Identity a nivel del clúster y del grupo de nodos. Para obtener instrucciones, consulta la página Habilita la identidad de carga de trabajo.
MANAGED_CNI_NOT_ENABLED La CNI administrada no está habilitada para este clúster. Habilita CNI administrado para mantener las prácticas recomendadas en tu malla. Puedes encontrar más información en la página Habilita CNI administrada.
NON_STANDARD_SIDECAR_BINARY_USAGE Uno o más comandos dentro de los contenedores de Istio usan objetos binarios distintos de "envoy", "pilot_agent" o "iptables". Se quitó la dependencia de los objetos binarios no admitidos. Puedes obtener más información en la página Uso de objetos binarios no admitidos.
UNSUPPORTED_GATEWAY_CLASS_USAGE El clúster está configurado con clases de puerta de enlace (Istio y Anthos Service Mesh) que requieren la migración a la puerta de enlace de Istio Ingress para alinearse con las prácticas recomendadas. Consulta la documentación para obtener instrucciones detalladas.

Errores de validación de la configuración

Los códigos CONFIG_VALIDATION_WARNING y CONFIG_VALIDATION_ERROR indican que se encontraron problemas en la configuración de malla (recursos personalizados de Istio o Kubernetes) y que es posible que un subconjunto de configuraciones no se haya aplicado correctamente.

Muchos detalles de errores por recurso se escriben en el recurso aplicable. El siguiente comando se puede usar para ubicar las configuraciones no válidas y ver los mensajes de error específicos. (Nota: Estos son específicos para los recursos de Istio y es posible que no se muestren todos los errores de validación aquí).

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

El resultado es similar al siguiente:

{
  "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"
    }
  ]
}