Integración de Cloud Service Mesh con el Directorio de servicios

En este documento, se proporciona una descripción general de cómo usar el registro de servicios del Directorio de servicios con Cloud Service Mesh, lo que permite que Cloud Service Mesh aplique políticas de tráfico a los servicios registrados en el Directorio de servicios y enrute tráfico a ellos. Este documento está dirigido a los desarrolladores de Cloud Service Mesh que deseen integrar sus aplicaciones con otros servicios en Google Cloud.

El Directorio de servicios es un registro de servicios que almacena información sobre los servicios de red que se registran con él, incluidos sus nombres, ubicaciones y atributos. Puedes registrar tus servicios de forma automática, capturando todos los detalles, y todos los servicios se pueden registrar, sin importar su infraestructura.

El registro puede contener servicios de Google Cloud y también servicios híbridos que se ejecutan de forma local o en otras nubes públicas. Para comprender mejor la información de este documento, te recomendamos que te familiarices con los conceptos básicos de las operaciones del Directorio de servicios.

Cuando usas el registro de servicios del Directorio de servicios con Cloud Service Mesh, la integración hace que los servicios del registro de servicios estén disponibles para las aplicaciones en la malla y las puertas de enlace configuradas por Cloud Service Mesh. La integración de Cloud Service Mesh en el Directorio de servicios es compatible, con Envoy y con gRPC sin proxy, para las integraciones del Directorio de servicios con balanceadores de cargas de red de transferencia interna, balanceadores de cargas de aplicaciones internas y Private Service Connect de nivel 4.

Para integrar tus servicios, registra un servicio con el Directorio de servicios y, luego, vincúlalo a un servicio de backend de Cloud Service Mesh. Después de establecer una vinculación, Cloud Service Mesh consulta el Directorio de servicios para obtener información sobre el servicio registrado y cómo se puede acceder a él. Cloud Service Mesh también realiza un seguimiento de cualquier cambio en el servicio. El uso de la integración permite que tu malla de servicios y la puerta de enlace autoadministrada envíen tráfico a estos servicios. También te permite aplicar políticas (por ejemplo, políticas avanzadas de administración de tráfico) que configuras en Cloud Service Mesh.

Cuando usas esta integración, la vinculación del servicio actúa como un backend, sin importar el tipo de backend que usa el servicio en sí. La integración simplifica tu implementación de Cloud Service Mesh, ya que este puede enviar tráfico al servicio sin importar el tipo de backend.

Cuando un servicio se registra en el Directorio de servicios, no necesitas configurar grupos de instancias ni diferentes tipos de grupos de extremos de red (NEG) para obtener acceso a los servicios que necesitas. Puedes registrar automáticamente Google Kubernetes Engine, los balanceadores de cargas internos y Private Service Connect en el Directorio de servicios, lo que simplifica aún más el acceso de Cloud Service Mesh a estos servicios.

Recursos que usa la integración

La integración entre Cloud Service Mesh y el Directorio de servicios usa los siguientes recursos.

Servicios del Directorio de servicios

El Directorio de servicios es un registro de servicios. El Directorio de servicios te permite registrar varios tipos de servicios, incluidos los servicios basados en Google Cloud o en otros entornos (por ejemplo, un centro de datos local). Cada servicio consta de un nombre único y cero o más extremos de servicio. Un extremo de servicio consiste en una dirección, un puerto, propiedades y metadatos. Si hay cero extremos,no puedes enrutar el tráfico al servicio.

Vinculaciones del servicio

Una vinculación del servicio es un recurso que incluye el nombre de dominio completamente calificado (FQDN) del servicio del Directorio de servicios. Por ejemplo, projects/test-proj/locations/us-east1/namespaces/test-namespace/services/test-service es un FQDN para un servicio del Directorio de servicios.

Servicios de backend

Los servicios de backend son recursos de configuración que proporcionan información a Cloud Service Mesh, incluidos los backends, como los grupos de instancias administrados, a los que el servicio de backend enruta el tráfico. Los servicios de backend que hacen referencia a las vinculaciones del servicio no pueden tener backends. Para usar la integración de Cloud Service Mesh con el Directorio de servicios, debes crear un servicio de backend nuevo para hacer referencia a las vinculaciones del servicio.

Un servicio de backend puede tener varias vinculaciones de servicios. Esta configuración es útil en una situación en la que tienes implementaciones regionales de la misma aplicación. Puedes registrar cada implementación regional en una instancia regional del Directorio de servicios, como el servicio regional 1 y el servicio regional 2. Cada uno de estos servicios regionales del Directorio de servicios se puede asociar con el mismo servicio de backend mediante dos vinculaciones de servicios. La vinculación del servicio global 1 se asociaría con el servicio regional 1 en la región A y la vinculación de servicio global 2 se asociaría con el servicio regional 2 en la región B.

Casos de uso

La integración de la implementación de Cloud Service Mesh con el Directorio de servicios habilita casos de uso nuevos que son útiles cuando dependes de servicios que otras organizaciones o equipos poseen o publican.

Haz que los servicios existentes estén disponibles para Cloud Service Mesh

El Directorio de servicios se integra en productos de Google Cloud, como GKE, los balanceadores de cargas de red de transferencia internos y los balanceadores de cargas de aplicaciones internos. Cuando los productores de servicios crean un servicio de GKE o un balanceador de cargas, pueden registrarlo en el Directorio de servicios.

Después de que un servicio se registra en el Directorio de servicios, puedes configurar Cloud Service Mesh para que se comunique con ese servicio. Luego, los clientes de Cloud Service Mesh pueden comunicarse con los servicios que se ejecutan detrás de los balanceadores de cargas de red de transferencia internos y los balanceadores de cargas de aplicaciones internos.

Mejora la coordinación entre los productores de servicios y los consumidores

Las empresas grandes tienen muchos equipos de desarrolladores independientes. Estos equipos hacen que sus servicios estén disponibles para otros equipos a fin de que más equipos puedan usar las capacidades que proporciona el servicio compartido. Esto crea dependencias entre equipos. Si bien estas dependencias permiten que los equipos compartan sus esfuerzos, las dependencias también crean una sobrecarga de coordinación.

Cuando usas el Directorio de servicios, un equipo (el productor) registra un servicio que desea que esté disponible para otras organizaciones o equipos (consumidores). El productor comparte una referencia a este servicio con un consumidor. El consumidor puede usar esta referencia para buscar el servicio del productor en el Directorio de servicios y descubrir los extremos del servicio. Por ejemplo, el extremo puede ser una dirección IP virtual (VIP) en la que el servicio del productor espera recibir tráfico.

La integración de Cloud Service Mesh con el Directorio de servicios te permite automatizar el proceso mediante la vinculación de un servicio del Directorio de servicios a un servicio de backend de Cloud Service Mesh, que tiene las siguientes ventajas:

  • Cloud Service Mesh resuelve automáticamente los extremos del servicio mediante su sincronización desde el Directorio de servicios. Si los extremos del servicio del Directorio de servicios se actualizan, Cloud Service Mesh sincroniza automáticamente estos cambios.
  • Puedes configurar varias políticas de enrutamiento y administración de tráfico, como tiempos de espera, en Cloud Service Mesh. Estas políticas te permiten ajustar con precisión la forma en que tus aplicaciones emiten solicitudes al servicio del Directorio de servicios. Para obtener información sobre el enrutamiento y la administración del tráfico en Cloud Service Mesh, consulta Administración avanzada del tráfico.
  • Cloud Service Mesh usa capacidades de administración de tráfico, como el balanceo de cargas basado en la proximidad, para dirigir el tráfico de forma óptima desde aplicaciones a extremos, por ejemplo, mediante la minimización del tiempo de ida y vuelta.
Uso del Directorio de servicios para el descubrimiento de servicios.
Usa el Directorio de servicios para el descubrimiento de servicios (haz clic para agrandar)

Cuando tú como consumidor usas Cloud Service Mesh y adjuntas un servicio de backend a un servicio del Directorio de servicios, se reduce la sobrecarga de la coordinación entre equipos.

  • Debes adjuntar el servicio, Payments, por nombre.
  • Cloud Service Mesh comparte información sobre el servicio Payments con sus clientes.

    • Por ejemplo, los proxies de sidecar que se ejecutan en tu malla de servicios ahora conocen el extremo (por ejemplo, 10.0.0.1:80) en el que se puede alcanzar el servicio.
  • Tus aplicaciones pueden llamar a este servicio por nombre sin que tú o tu aplicación necesiten saber algo sobre el extremo del servicio externo. En el diagrama, el servicio es Payments.

  • Cuando el productor de servicios actualiza el servicio externo (por ejemplo, cambia su extremo), Cloud Service Mesh recoge la actualización y la comparte sin problemas con sus clientes.

Accede a los servicios dentro de un perímetro mediante un punto de entrada

Un equipo puede agrupar una colección de servicios dentro de un perímetro de Controles del servicio de VPC y exponer esos servicios a través de un solo punto de entrada. Este punto de entrada se puede registrar en el Directorio de servicios y estar disponible para los usuarios que deseen acceder a los servicios dentro del perímetro. Para obtener más información sobre los perímetros de los Controles del servicio de VPC, consulta Configuración y detalles del perímetro de servicio.

Por ejemplo, un equipo crea una puerta de enlace de entrada con un balanceador de cargas de aplicaciones interno que distribuye solicitudes a una colección de servicios de Kubernetes en un clúster. Esta puerta de enlace de entrada se registra automáticamente como un servicio en el Directorio de servicios. Un consumidor que desea acceder a los servicios de Kubernetes puede buscar esta puerta de enlace de entrada en el Directorio de servicios. Luego, el consumidor puede configurar la malla de Cloud Service Mesh para acceder a los servicios dentro del perímetro a través de la puerta de enlace.

Conecta servicios entre dominios

Es posible que tengas servicios en diferentes dominios que necesites conectar.

Conecta servicios entre organizaciones

Es posible que desees acceder a servicios que son propiedad de otra organización, como las API de Google (por ejemplo, Cloud SQL) o servicios administrados de terceros.

El Directorio de servicios admite Private Service Connect. Cuando creas un extremo de Private Service Connect en tu red, el extremo se puede registrar como un servicio con el Directorio de servicios. Luego, puedes conectar este servicio a Cloud Service Mesh para que los clientes de malla, como los clientes de Envoy y gRPC, y las puertas de enlace autoadministradas, como Apigee, puedan llamar a estos servicios.

Uso del Directorio de servicios para el descubrimiento de servicios con Private Service Connect.
Uso del Directorio de servicios para el descubrimiento de servicios con Private Service Connect (haz clic para ampliar)

En el ejemplo anterior, mediante Cloud Storage, se ilustra cómo puedes usar Private Service Connect para llamar a las API de Google mediante un extremo en tu red de nube privada virtual.

Conecta servicios entre redes de VPC

Algunas empresas usan varias redes de VPC como parte de su implementación de Google Cloud. En esos casos, es posible que un servicio en una red de VPC necesite acceder a un servicio en una red de VPC diferente. Puedes configurar el intercambio de tráfico de VPC para acceder a un servicio en una red de VPC diferente, pero esta configuración crea complicaciones cuando hay rangos de direcciones IP superpuestos entre las redes que intercambian tráfico.

Private Service Connect puede hacer que un servicio de una red de VPC sea accesible para los servicios de otra red de VPC de forma privada y segura, mediante un solo extremo IP:port.

Vista detallada del uso del Directorio de servicios para el descubrimiento de servicios con Private Service Connect.
Vista detallada del uso del Directorio de servicios para el descubrimiento de servicios con Private Service Connect (haz clic para ampliar)

Ejemplos adicionales en diferentes dominios

En los dos ejemplos anteriores, se ilustran casos en los que podrías necesitar cruzar dominios, pero hay muchos ejemplos adicionales. Por ejemplo, creas una puerta de enlace que se encuentre en la intersección de dos regiones de Google Cloud. Los servicios en una región pueden llegar a los servicios en otra región a través de esta puerta de enlace. Debes registrar la puerta de enlace como un servicio en el Directorio de servicios y, luego, usarla con Cloud Service Mesh como se describe en este documento.

Aplica políticas cuando se accede a los servicios

Cloud Service Mesh admite capacidades como la administración avanzada de tráfico que se pueden configurar mediante políticas. Por ejemplo, puedes establecer una política de duplicación de tráfico para que, cada vez que un cliente envíe una solicitud a un servicio de backend en particular, el tráfico también se envíe a un segundo servicio de backend.

Cuando vinculas un servicio del Directorio de servicios a un servicio de backend de Cloud Service Mesh, puedes configurar estos tipos de políticas en Cloud Service Mesh. Los proxies de sidecar, los proxies intermedios o perimetrales y los clientes sin proxy aprenden acerca de estas políticas y las aplican.

Estos son algunos ejemplos:

  • División del tráfico basada en el peso, por ejemplo, entre dos servicios del Directorio de servicios
  • Duplicación del tráfico, por ejemplo, a un servicio de auditoría
Las solicitudes para el servicio de “users” se duplican al servicio “audit”
Las solicitudes para el servicio users se duplican al servicio audit (haz clic para ampliar)

Compatibilidad con Cloud Service Mesh y clientes existentes

Incluso cuando se implementa Cloud Service Mesh en tu organización, es posible que tengas clientes que no usen Cloud Service Mesh. Por ejemplo, es posible que debas acceder a un servicio desde una máquina virtual que no forme parta de una malla de servicios.

Cuando vinculas un servicio del Directorio de servicios a un servicio de backend de Cloud Service Mesh, los clientes de Cloud Service Mesh obtienen información actualizada sobre ese servicio de forma automática. Los clientes que no usan Cloud Service Mesh pueden buscar y usar la información del servicio en el Directorio de servicios.

Limitaciones

Cloud Service Mesh no admite NEG de FQDN (NEG de INTERNET_FQDN_PORT) en la integración de Directorio de servicios.

¿Qué sigue?