Descripción general de la malla de servicios de GKE de Cloud Service Mesh

Esta configuración es compatible con los clientes de la versión preliminar, pero no se recomienda para los usuarios nuevos de Cloud Service Mesh. Para obtener más información, consulta la Descripción general de Cloud Service Mesh.

Este documento está dirigido a usuarios de Google Kubernetes Engine que deseen implementar un Malla de servicios de Cloud Service Mesh con la API de Kubernetes Gateway.

Puedes configurar Cloud Service Mesh para GKE con el APIs de Kubernetes Gateway, que permiten comunicaciones de servicio a servicio, tráfico de cargas HTTP(S) global, balanceo de cargas global y aplicación de políticas de seguridad de la malla de datos.

API de Kubernetes y API de Google Cloud

Puedes configurar una malla de servicios de Cloud Service Mesh con dos APIs diferentes:

En este documento y las guías de configuración asociadas, se proporcionan instrucciones para usar el API de Kubernetes Gateway para configurar una Malla de servicios de Cloud Service Mesh.

Te recomendamos que uses las APIs de Kubernetes Gateway en Google Kubernetes Engine y recomendamos no usar ambas APIs para configurar el enrutamiento en la misma malla de servicios en GKE.

La API de enrutamiento de servicio usa los mismos nombres de recursos que los recursos en las API de puerta de enlace de Kubernetes, lo que te facilita el uso de las dos API. El kit de herramientas que configuras son funcionalmente equivalentes a Google Cloud recursos representados por la API de Service Enrutamiento para Cloud Service Mesh.

En las siguientes secciones, se describen los recursos y la arquitectura utilizados por el Integración de la malla de servicios de Cloud con las APIs de Kubernetes Gateway

API de puerta de enlace

La API de Gateway es una colección de recursos que modelan herramientas de redes de servicio en Kubernetes. El kit de herramientas API de Gateway es un proyecto de código abierto que se enfoca en admitir balanceador de cargas con una API de enrutamiento genérica. La API de enrutamiento genérica tiene muchas implementaciones. Se agregan las definiciones de recursos personalizados (CRD) de la malla de servicios de Cloud. como una extensión de la API de puerta de enlace de código abierto. Las CRD admiten casos prácticos de malla de servicios y usan la misma API de enrutamiento genérico que ingresa la API de Gateway.

La API de Gateway está organizada de forma jerárquica, con un recurso superior de Gateway y un GatewayClass asociado, al que adjuntas rutas. GKE incluye un recurso TDMesh que es un par del recurso Gateway. Puedes adjuntar los mismos tipos Route al recurso TDMesh. El recurso TDMesh es en el que adjuntas las rutas y políticas para las mallas de servicios.

API de puerta de enlace, recurso de puerta de enlace, recurso de malla y rutas
API de puerta de enlace, recurso de puerta de enlace, recurso de malla y rutas (haz clic para ampliar)

Flota

Una flota consiste en uno o más clústeres de GKE que se agrupan de manera lógica. Una flota permite administrar capacidades y aplicar políticas de forma coherente en varios entre los clústeres de Kubernetes. Cuando usas una flota, puedes administrar una malla de servicios de Cloud Service Mesh que abarcan varios clústeres.

Arquitectura

Cloud Service Mesh admite la API de puerta de enlace en GKE programar las capacidades de tus clústeres planos de datos para implementar los comportamientos de red especificadas en los recursos de la API de puerta de enlace. Cloud Service Mesh en sí es un servicio administrado por Google que no procesa ningún tráfico del plano de datos. Los proxies de Envoy que se ejecutan como sidecars a tus cargas de trabajo o clientes de gRPC sin proxy procesan el tráfico en el plano de datos. Cloud Service Mesh configura los proxies de Envoy y los proxies Clientes de gRPC a través de la API de xDSv3.

Cloud Service Mesh ofrece una solución de plano de control administrada y disponible a nivel global que es más robusta y escalable que la ejecución de controladores en el clúster. Porque es una solución global, Cloud Service Mesh puede balancear las cargas del tráfico distribuidas en varios clústeres de GKE. En la siguiente ilustración, Cloud Service Mesh administra el tráfico a los servicios en tres que están en una sola flota, con los recursos de la API de puerta de enlace.

Una malla de servicios de varios clústeres de Cloud Service Mesh configurada con la API de Gateway
Una malla de servicios de varios clústeres de Cloud Service Mesh configurada con la API de Gateway (haz clic para ampliar)

Debes designar un clúster en tu flota como el clúster de configuración. El clúster de configuración es donde se almacenan los recursos de la API de Gateway. Malla de servicios en la nube Solo mira los recursos que están en el clúster de configuración y omite los recursos que están en otros clústeres de la flota. Consulta Diseño del clúster de configuración en la documentación de GKE para obtener información más detallada sobre el clúster de configuración.

Con GKE Servicios de varios clústeres, Los recursos de la API de puerta de enlace en el clúster de configuración pueden hacer referencia a los servicios de Kubernetes en en cualquier clúster de una flota. Consulta Servicios de varios clústeres para obtener más información sobre el descubrimiento de servicios de varios clústeres.

Recursos

Cloud Service Mesh admite los proxies de Envoy y gRPC sin proxy en los datos de una malla de servicios. Ambos clientes reciben la configuración de Cloud Service Mesh para una malla de servicios en particular, a través de la especificación del nombre y número de proyecto correspondiente al recurso TDMesh en su respectivo arranque configuración. Las guías de configuración de Cloud Service Mesh con las APIs de Kubernetes Gateway proporcionar configuraciones del plano de datos de demostración con Envoy y gRPC sin proxy.

TDMesh recurso

El Recurso TDMesh es un recurso personalizado de Cloud Service Mesh. Es una extensión del modelo de código abierto APIs de puerta de enlace para admitir los casos de uso de la malla de servicios de Cloud Service Mesh. Mediante el recurso TDMesh, creas una instancia de la malla de servicios en la flota. Las rutas conectadas al recurso TDMesh especifican los comportamientos de enrutamiento de servicio a servicio en la malla de servicios.

Route recursos

Un subconjunto del Ruta de la API de Gateway Los recursos se pueden conectar a un recurso TDMesh para especificar el enrutamiento a nivel de servicio dentro de la malla de servicios. Cloud Service Mesh admite los siguientes Route recursos:

  • HTTPRoute
  • TCPRoute
  • TDGRPCRoute (recurso personalizado de Cloud Service Mesh)

Por ejemplo, puedes crear un HTTPRoute para especificar que las solicitudes HTTP dirigidas al host payments.svc.internal se enruten al servicio de Kubernetes service-payments. Cuando conectas el recurso HTTPRoute a un recurso TDMesh al que se suscriben las instancias del plano de datos, las solicitudes HTTP que envían las cargas de trabajo dentro de la malla se enrutan según corresponda.

Esta versión aumenta los recursos Route genéricos en la API de Gateway con un tipo de ruta nuevo, TDGRPCRoute. El tipo de ruta nuevo proporciona una experiencia de primera clase para enrutar solicitudes de gRPC, mediante la coincidencia con primitivas de gRPC nativas, como definiciones de métodos y servicios.

Usa los recursos de la API de puerta de enlace en GKE para configurar Cloud Service Mesh
Usa los recursos de la API de puerta de enlace en GKE para configurar Cloud Service Mesh (haz clic para ampliar)

Limitaciones

  • Cloud Service Mesh configura los siguientes comportamientos predeterminados para todos Servicios de Kubernetes en la malla de servicios. No puedes cambiar estos comportamientos.
    • Las verificaciones de estado de TCP se configuran en los puertos de servicio a los que hacen referencia cualquier recurso Route de la API de puerta de enlace.
    • Una duración predeterminada de 30 segundos tiempo de espera se configura para todas las solicitudes entrantes a servicios.
    • Afinidad de sesión está inhabilitada.
  • El Inyector automático de Envoy solo admite una malla por flota.
  • Las funciones de seguridad de Cloud Service Mesh no se pueden habilitar con el API de puerta de enlace.
  • Debes configurar los recursos TDMesh y Route en GKE solo con la API de puerta de enlace. No puedes usar la consola de Google Cloud, la CLI de gcloud ni las API de REST.
  • Todos los clústeres deben estar en un solo proyecto. No se admite una malla de servicios que abarque varios clústeres en varios proyectos.
  • No puedes configurar ni ver una malla de servicios de GKE mediante la consola de Google Cloud.
  • No se admite la observabilidad del plano de control con Cloud Logging ni Cloud Monitoring.

¿Qué sigue?