Arquitectura de servicios

Last reviewed 2024-04-19 UTC

Un servicio de Kubernetes es una abstracción que te permite exponer un conjunto de Pods como una sola entidad. Los servicios son componentes básicos fundamentales para exponer y administrar aplicaciones alojadas en contenedores en un clúster de Kubernetes. Los servicios en este plano se diseñan de forma estandarizada en relación con los espacios de nombres, la identidad, la exposición del servicio y la comunicación de servicio a servicio.

Espacios de nombres

Cada espacio de nombres tiene su propio conjunto de recursos, como pods, implementaciones y servicios. Los espacios de nombres te permiten organizar tus aplicaciones y aislarlas. El plano usa espacios de nombres para agrupar servicios según su propósito. Por ejemplo, puedes crear un espacio de nombres para todos tus servicios de frontend y un espacio de nombres para tus servicios de backend. Esta agrupación facilita administrar tus servicios y controlar el acceso a ellos.

Exposición del servicio

Un servicio se expone a Internet a través de GKE Gateway Controller. GKE Gateway Controller crea un balanceador de cargas con Cloud Load Balancing en una configuración multirregional y de varios clústeres. Cloud Load Balancing usa la infraestructura de red de Google para proporcionar al servicio una dirección IP anycast que permite el acceso de baja latencia al servicio. El acceso del cliente al servicio se realiza a través de conexiones HTTPS, y las solicitudes HTTP del cliente se redireccionan a HTTPS. El balanceador de cargas usa el Administrador de certificados para administrar los certificados públicos. Los servicios están protegidos por Cloud Armor y Cloud CDN. En el siguiente diagrama, se muestra cómo se exponen los servicios a Internet.

Servicios de plano que están expuestos a Internet.

Cloud Service Mesh

El plano usa Cloud Service Mesh para la autenticación y autorización mutuas de todas las comunicaciones entre servicios. En esta implementación, Cloud Service Mesh usa el servicio de CA para emitir certificados TLS que permiten autenticar pares y ayudan a garantizar que solo los clientes autorizados puedan acceder a un servicio. El uso de TLS mutua (mTLS) para la autenticación también ayuda a garantizar que todas las comunicaciones de TCP entre servicios se encripten durante el envío. Para el tráfico de entrada del servicio a la malla de servicios, el plano usa GKE Gateway Controller.

Servicios distribuidos

Un servicio distribuido es una abstracción de un servicio de Kubernetes que se ejecuta en el mismo espacio de nombres en varios clústeres. Un servicio distribuido permanece disponible incluso si uno o más clústeres de GKE no están disponibles, siempre que cualquier clúster en buen estado restante pueda entregar la carga. Para crear un servicio distribuido en los clústeres, Cloud Service Mesh proporciona conectividad de capa 4 y capa 7 entre los servicios de una aplicación en todos los clústeres del entorno. Esta conectividad permite que los servicios de Kubernetes en varios clústeres actúen como un único servicio lógico. El tráfico entre clústeres solo se enruta a otra región si no se puede generar tráfico dentro de la región debido a una falla regional.

Identidad del servicio

Los servicios que se ejecutan en GKE tienen identidades asociadas. El plano configura Workload Identity para permitir que una cuenta de servicio de Kubernetes actúe como una cuenta de servicio de Google Cloud. Cada instancia de un servicio distribuido dentro del mismo entorno tiene una identidad común que simplifica la administración de permisos. Cuando accedes a las APIs de Google Cloud, los servicios que se ejecutan como la cuenta de servicio de Kubernetes se autentican de forma automática como la cuenta de servicio de Google Cloud. Cada servicio tiene solo los permisos mínimos necesarios para que el servicio funcione.

Próximos pasos