Información sobre la compatibilidad de Cloud Service Mesh
La implementación del plano de control de ISTIOD está obsoleta, por lo que debes evaluar la compatibilidad, resolver las condiciones de bloqueo en todas tus flotas y modernizar antes de la fecha límite de fin de la asistencia.
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 de TRAFFIC_DIRECTOR.
Cómo habilitar o inhabilitar las verificaciones de compatibilidad
Para iniciar las verificaciones de compatibilidad, habilita el modo de validación para la flota, lo que activará una auditoría continua de todos los parámetros de configuración de Istio, de infraestructura y de escala. Habilitar estas verificaciones no realiza ningún cambio en tu flota ni en tus clústeres, solo habilita la generación de 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 flota.
Por lo general, el 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 determinar la compatibilidad con la modernización.
Inhabilita las verificaciones
Para detener el envío de informes sobre 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 los CR de Istio individuales.
Comprende la compatibilidad
La compatibilidad con la modernización se informa con condiciones a nivel de la flota y de la membresía (clúster). El sistema realiza varias verificaciones en diferentes momentos, y todas 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 las correcciones.
Para ver estos resultados, recupera el estado de malla más reciente con el siguiente comando:
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
Compatibilidad a nivel de la flota
Consulta el estado general de modernización de tu flota en state.servicemesh.conditions.
La flota es compatible: Si tu flota es compatible, verás una condición con el código
MODERNIZATION_COMPATIBLE: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: INFOLa flota no es compatible: Si tu flota aún no es compatible con la modernización, verás una condición con el código
MODERNIZATION_INCOMPATIBLE: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 tu flota es incompatible, revisa las condiciones para las brechas específicas. Verifica si hay condiciones adicionales a nivel de la flota con gravedad
WARNINGoERROR, así como condiciones a nivel del clúster enmembershipStates.servicemeshpara resolver cualquier bloqueo.
Compatibilidad a nivel del 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 es 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 las documentationLinkinstrucciones que se proporcionan en cada condición para comprender y
resolver la incompatibilidad específica.
Cómo resolver problemas de compatibilidad
Cómo resolver 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 admitidas o no válidas.
Ejemplo de resultado 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: Verifica el campo
detailsde la condición de estado para encontrar las claves de anotación no admitidas o no válidas. Busca todos los Pods con las claves de anotación problemáticas.Corrige y verifica:
- Modifica las especificaciones YAML de tus Deployments o Pods para asegurarte de que solo usen anotaciones compatibles (todas las demás anotaciones no son compatibles). Quita las anotaciones no admitidas, corrige los valores no válidos y vuelve a aplicar el archivo YAML actualizado a tu clúster.
- Una vez que se corrijan todas las anotaciones del Pod, la condición
MODERNIZATION_INCOMPATIBLE_POD_ANNOTATIONdejará de aparecer para esa membresía.
Cómo resolver 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 los siguientes motivos:
- Recursos personalizados (CR) específicos de Istio que usan funciones o campos no admitidos, o que contienen valores no válidos
- La configuración de Istio MeshConfig no es válida o no se admite.
- Se superaron los límites de escalabilidad.
- Uso de anotaciones de espacio de nombres o servicio no admitidas
Ejemplo de resultado 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 estos problemas de configuración, haz lo siguiente:
Analiza los detalles de la condición: Verifica el campo
detailsde la condición de estado. Resume los errores individuales y, luego, identifica los tipos de recursos con problemas de configuración. En el ejemplo de detalles proporcionados, deberás abordar los problemas de escala y MeshConfig, y revisar los recursosGatewayyServiceEntrypara detectar errores.Identifica y analiza los recursos incompatibles: Usa el siguiente ejemplo de secuencia de comandos para enumerar los recursos personalizados (CR) de Istio que no superan las verificaciones de compatibilidad. Esta secuencia de comandos se proporciona como ejemplo. Revísala y analízala para asegurarte de que cumpla con los requisitos operativos y de tu entorno antes de ejecutarla en tu clúster. 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 envoyfilters gateways peerauthentications proxyconfigs 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 la configuración: Modifica tu archivo YAML quitando los campos no admitidos o reemplazando los valores no válidos por otros compatibles. Para obtener ayuda, consulta la documentación sobre las funciones admitidas de Cloud Service Mesh administrado y las APIs de Istio no admitidas. (Por ejemplo, en el ejemplo proporcionado, actualiza la resolución
ServiceEntrydeDNS_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
ModernizationCompatibleen los recursos fijos debería cambiar al estado:"True". Verifica el estado del recurso con el siguiente comando: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.
Cómo resolver problemas de escala de flota incompatible
El código MODERNIZATION_INCOMPATIBLE_FLEET_SCALE indica que la flota no se puede modernizar al plano de control TRAFFIC_DIRECTOR porque la escala de recursos en toda la flota supera los límites admitidos para la modernización.
En esta fase, admitimos la modernización de flotas con los siguientes límites:
- Hasta 1,500 extremos (proxies) del plano de datos en toda la flota.
- Hasta 200 servicios de Cloud Service Mesh en toda la flota