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 Directorio de servicios de de servicios con Cloud Service Mesh, que permite que la malla de servicios y aplicar políticas de tráfico a los servicios registrados en el Directorio de servicios. 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, debes registrar un servicio Directorio de servicios y, luego, vincula el servicio a una malla de servicios de Cloud servicio de backend. 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. La malla de servicios de Cloud cambios 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, como las políticas de administración avanzada de tráfico, que configurar 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 registrarte automáticamente Google Kubernetes Engine, balanceadores de cargas internos y Private Service Connect al Directorio de servicios, lo que simplifica aún más el servicio de acceso 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, creas un nuevo servicio de backend para a las vinculaciones de servicios de referencia.

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

Integra la implementación de Cloud Service Mesh en el Directorio de servicios habilita nuevos casos de uso que son útiles cuando depende de servicios que otras organizaciones o equipos son propietarios o publican.

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

El Directorio de servicios se integra en los productos de Google Cloud como GKE, balanceadores de cargas de red de transferencia internos y 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 el botón se actualizan los extremos del servicio del Directorio de servicios 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 más 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ú, un consumidor, usas Cloud Service Mesh y conectas un servicio de backend a como un servicio del Directorio de servicios, la sobrecarga de la coordinación entre equipos se reducen.

  • Debes adjuntar el servicio, Payments, por nombre.
  • Cloud Service Mesh comparte información sobre el servicio Payments con su 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 lo comparte 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 servicios de Cloud 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 en Cloud Service Mesh, para que los clientes en malla, como Envoy y gRPC, y y las puertas de enlace autoadministradas, como Apigee, pueden 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 una malla de servicios de Cloud de backend, 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 Cloud Service Mesh esté implementado en tu organización, es posible que tengas clientes que no usan 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. Tus clientes que no usan Cloud Service Mesh puede buscar y usar 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 Service Directory.

¿Qué sigue?