Información sobre la compatibilidad de Cloud Service Mesh
En esta guía, se detalla cómo evaluar la compatibilidad de una flota para la modernización del plano de control. Para ello, se confirma que su configuración, infraestructura y escala sean compatibles con la implementación del plano de control TRAFFIC_DIRECTOR.
Habilita o inhabilita las verificaciones de compatibilidad
Para iniciar las verificaciones de compatibilidad, habilita el modo de validación para la flota, lo que activa una auditoría continua de todas las configuraciones de Istio, las configuraciones de infraestructura y los parámetros de escala. Habilitar estas verificaciones no realiza ningún cambio en tu flota ni en tus clústeres; solo habilita los informes de compatibilidad.
Habilita las verificaciones
Para comenzar la auditoría de compatibilidad, ejecuta el siguiente comando gcloud:
gcloud alpha container fleet mesh update --modernization-compatibility validation-enabled --project FLEET_PROJECT_ID
Reemplaza FLEET_PROJECT_ID por el ID de tu proyecto host de la flota.
Por lo general, FLEET_PROJECT_ID tiene el mismo nombre que el proyecto.
Una vez habilitado, Cloud Service Mesh comienza a evaluar la flota y todos los clústeres aprovisionados de Cloud Service Mesh en la flota para la compatibilidad de modernización.
Inhabilita las verificaciones
Para detener la generación de informes de los resultados de compatibilidad, ejecuta el siguiente comando:
gcloud alpha container fleet mesh update --modernization-compatibility validation-disabled --project FLEET_PROJECT_ID
Este comando quita las condiciones de compatibilidad de modernización de los estados de membresía, así como el estado ModernizationCompatible de las CR de Istio individuales.
Información sobre la compatibilidad
La compatibilidad de modernización se informa mediante condiciones a nivel de la flota y de la membresía (clúster). El sistema realiza varias verificaciones en diferentes momentos, y todas las verificaciones se ejecutan al menos una vez al día. Espera hasta un día para que se actualice el estado después de habilitar las verificaciones o aplicar correcciones.
Para ver estos resultados, recupera el estado más reciente de la malla con el siguiente comando:
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
Compatibilidad a nivel de clúster
Busca condiciones con gravedad WARNING o ERROR en membershipStates.servicemesh para cada clúster aprovisionado de Cloud Service Mesh en la flota. Si existen incompatibilidades, el resultado será similar al siguiente:
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
...
Sigue el documentationLink que se proporciona en cada condición para comprender y resolver la incompatibilidad específica.
Resuelve problemas de compatibilidad
Resuelve anotaciones de pod incompatibles
El código MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION indica que el clúster no se puede modernizar al plano de control TRAFFIC_DIRECTOR porque ciertos pods tienen anotaciones de Istio no compatibles o no válidas.
Resultado de ejemplo del comando gcloud container fleet mesh describe con la condición MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION establecida para la membresía:
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
Para resolver estas anotaciones de pod, haz lo siguiente:
Identifica las anotaciones problemáticas: Revisa el campo
detailsde la condición de estado para encontrar las claves de anotación no compatibles o no válidas. Busca todos los pods con las claves de anotación problemáticas.Corrige y verifica:
- Modifica las especificaciones de YAML para tus implementaciones o pods para quitar o modificar las anotaciones identificadas y asegurarte de que no incluyan anotaciones no compatibles. Vuelve a aplicar el YAML actualizado a tu clúster.
- Una vez que se corrijan todas las anotaciones de pod, la condición
MODERNIZATION_INCOMPATIBLE_POD_ANNOTATIONya no aparecerá para esa membresía.
Resuelve configuraciones incompatibles
El código MODERNIZATION_INCOMPATIBLE_CONFIG indica que el clúster no se puede modernizar al plano de control TRAFFIC_DIRECTOR debido a configuraciones incompatibles. Estas incompatibilidades pueden deberse a lo siguiente:
- Recursos personalizados (CR) de Istio específicos que usan funciones o campos no compatibles o que contienen valores no válidos
- Configuración de Istio MeshConfig no válida o no compatible
- Superación de los límites de escalabilidad
- Uso de anotaciones de servicio o espacio de nombres no compatibles
Resultado de ejemplo del comando gcloud container fleet mesh describe con la condición MODERNIZATION_INCOMPATIBLE_CONFIG establecida para la membresía:
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
Para resolver estas configuraciones, haz lo siguiente:
Analiza los detalles de la condición: Revisa el campo
detailsde la condición de estado. Resume los errores individuales y, además, identifica los tipos de recursos con problemas de configuración. En el ejemplo de detalles proporcionado, deberás abordar los problemas de escala y MeshConfig, y también inspeccionar los recursosGatewayyServiceEntryen busca de errores.Identifica y analiza los recursos incompatibles: Usa la siguiente secuencia de comandos para enumerar todos los recursos personalizados (CR) de Istio que no superan las verificaciones de compatibilidad. La secuencia de comandos requiere que se instalen
kubectlyjq. El resultado incluye los detalles específicos del error que se encuentran enstatus.conditions(tipo:ModernizationCompatible, estado:"False") de cada recurso.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]}' doneResultado de ejemplo:
--- 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" ] }Corrige y aplica las configuraciones: Modifica tu YAML quitando los campos no compatibles o reemplazando los valores no válidos por valores compatibles. Para obtener ayuda, consulta la documentación sobre las funciones compatibles de Cloud Service Mesh administrado y las APIs de Istio no compatibles. (Por ejemplo, en el ejemplo proporcionado, actualiza la
ServiceEntryresolución deDNS_ROUND_ROBINaDNS).Verifica las correcciones: Después de aplicar las correcciones, espera hasta 24 horas para que las verificaciones periódicas actualicen el estado.
La condición
ModernizationCompatiblede los recursos corregidos debe cambiar a estado:"True". Verifica el estado del recurso con lo siguiente:kubectl get resource name -n namespace -o yamlResultado de ejemplo:
status: conditions: - lastTransitionTime: "2026-06-05T06:12:52.219963391Z" message: Resource is compatible for modernization reason: Compatible status: "True" type: ModernizationCompatibleVuelve a ejecutar el comando
gcloud container fleet mesh describe. Una vez que se resuelvan todos los problemas relacionados, la condiciónMODERNIZATION_INCOMPATIBLE_CONFIGya no aparecerá para esa membresía.