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 para exponer y gestionar aplicaciones en contenedores en un clúster de Kubernetes. Los servicios de este plan se han diseñado de forma estandarizada teniendo en cuenta los espacios de nombres, la identidad, la exposición de servicios y la comunicación entre servicios.
Espacios de nombres
Cada espacio de nombres tiene su propio conjunto de recursos, como pods, servicios y despliegues. Los espacios de nombres te permiten organizar tus aplicaciones y aislarlas entre sí. El plano usa espacios de nombres para agrupar los servicios por su finalidad. Por ejemplo, puedes crear un espacio de nombres para todos tus servicios frontend y otro para tus servicios backend. Esta agrupación facilita la gestión de tus servicios y el control de acceso a ellos.
Exposición de servicios
Un servicio se expone a Internet a través del controlador de GKE Gateway. El controlador de GKE Gateway crea un balanceador de carga mediante Cloud Load Balancing en una configuración multiclúster y multirregional. Cloud Load Balancing usa la infraestructura de red de Google para proporcionar al servicio una dirección IP de Anycast que permite acceder al servicio con baja latencia. El acceso de los clientes al servicio se realiza a través de conexiones HTTPS y las solicitudes HTTP de los clientes se redirigen a HTTPS. El balanceador de carga usa Certificate Manager para gestionar 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.
Cloud Service Mesh
El plano usa Cloud Service Mesh para la autenticación y la autorización mutuas de todas las comunicaciones entre servicios. En esta implementación, Cloud Service Mesh usa Servicio de Autoridades de Certificación para emitir certificados TLS con el fin de autenticar a los peers y asegurarse de que solo los clientes autorizados puedan acceder a un servicio. Usar TLS mutuo (mTLS) para la autenticación también ayuda a asegurar que todas las comunicaciones TCP entre servicios se cifren en tránsito. Para el tráfico de entrada de servicios en la malla de servicios, el blueprint usa el controlador de GKE Gateway.
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 sigue estando disponible aunque uno o varios clústeres de GKE no lo estén, siempre que los clústeres que queden en buen estado puedan atender la carga. Para crear un servicio distribuido en varios 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 de varios clústeres actúen como un único servicio lógico. El tráfico entre clústeres solo se dirige a otra región si no se puede producir tráfico dentro de la región debido a un fallo regional.
Identidad de servicio
Los servicios que se ejecutan en GKE tienen identidades asociadas. El blueprint configura Workload Identity Federation para GKE, de forma que una cuenta de servicio de Kubernetes pueda actuar como una Google Cloud cuenta de servicio. Cada instancia de un servicio distribuido en el mismo entorno tiene una identidad común, lo que simplifica la gestión de permisos. Al acceder a las APIs de Google Cloud, los servicios que se ejecutan como la cuenta de servicio de Kubernetes se autentican automáticamente como la Google Cloud cuenta de servicio. Cada servicio solo tiene los permisos mínimos necesarios para funcionar.
Siguientes pasos
- Consulta información sobre registros y monitorización (el siguiente documento de esta serie).