Puerta de enlace


En esta página, se describe la implementación de Google Kubernetes Engine (GKE) de la API de Gateway de Kubernetes mediante el controlador de la puerta de enlace de GKE. Para implementar puertas de enlace en GKE, consulta Implementar puertas de enlace o Implementar puertas de enlace de varios clústeres.

La API de Gateway es un estándar de código abierto para herramientas de redes de servicios. La API de Gateway evoluciona el recurso Ingress y lo mejora de las siguientes maneras:

  • Orientado a funciones: La puerta de enlace se compone de recursos de API que corresponden a las funciones organizativas del operador de clúster, el desarrollador y el proveedor de infraestructura. Esto permite a los operadores de clúster definir cómo numerosos equipos de desarrolladores diferentes y que no coordinan pueden usar la infraestructura compartida.

  • Portátil: La API de Gateway es un estándar de código abierto con muchas implementaciones. Se diseñó con el concepto de conformidad flexible, que promueve una API central muy portátil (como Ingress) que aún tiene la flexibilidad y extensibilidad para admitir las capacidades nativas del entorno y la implementación. Esto permite que los conceptos y los recursos principales sean coherentes en todas las implementaciones y todos los entornos, lo que reduce la complejidad y aumenta la familiaridad del usuario.

  • Expresivo: Los recursos de la API de Gateway proporcionan una funcionalidad integrada para la coincidencia basada en encabezados, la ponderación del tráfico y otras capacidades que solo son posibles en Ingress a través de anotaciones personalizadas.

Recursos de la API de Gateway

La API de Gateway es un modelo de recursos orientado a las funciones, diseñado para quienes interactúan con las herramientas de redes de Kubernetes. Como se muestra en el siguiente diagrama, este modelo permite que diferentes propietarios de servicios no coordinados compartan la misma infraestructura de red subyacente de forma segura, de manera que se centralizan las políticas y el control para el administrador de la plataforma.

GKE proporciona clases de Gateway. Los operadores de clúster crean
recursos de puertas de enlace basados en estas clases. Los desarrolladores de aplicaciones crean recursos HTTPRouter que se vinculan a recursos de Gateway.

La API de Gateway contiene los siguientes tipos de recursos:

  • GatewayClass: Define un recurso con alcance de clúster que es una plantilla para crear balanceadores de cargas en un clúster. GKE proporciona GatewayClasses que se pueden usar en clústeres de GKE.
  • Gateway: Define dónde y cómo los balanceadores de cargas escuchan el tráfico. Los operadores de clústeres crean Gateways en sus clústeres en función de una GatewayClass. GKE crea balanceadores de cargas que implementan la configuración definida en el recurso de Gateway.
  • HTTPRoute: Define reglas específicas del protocolo para enrutar solicitudes desde una puerta de enlace hacia servicios de Kubernetes. GKE admite HTTPRouters para el enrutamiento de tráfico basado en HTTP(S). Los desarrolladores de aplicaciones crean HTTPRoutes para exponer sus aplicaciones HTTP mediante puertas de enlace.

GatewayClass

Una GatewayClass es un recurso que define una plantilla para balanceadores de cargas de TCP/UDP (nivel 4) y balanceadores de cargas de HTTP(S) (nivel 7) en un clúster de Kubernetes. GKE proporciona GatewayClasses como recursos con alcance de clúster. Los operadores de clúster especifican una GatewayClass cuando crean puertas de enlace en sus clústeres.

Los diferentes GatewayClasses corresponden a diferentes balanceadores de cargas de Google Cloud. Cuando creas una Gateway basada en una GatewayClass, se crea el balanceador de cargas correspondiente para implementar la configuración especificada. Algunas Gateways admiten el balanceo de cargas de varios clústeres.

En la siguiente tabla, se enumeran las GatewayClasses disponibles en los clústeres de GKE y su tipo de balanceador de cargas subyacente. Para obtener detalles completos sobre las GatewayClasses, consulta las capacidades y especificaciones de GatewayClass.

Nombre de clase Descripción
gke-l7-rilb Balanceadores de cargas HTTP(S) regionales internos basados en el balanceo de cargas HTTP(S) interno
gke-l7-gxlb Balanceadores de cargas HTTP(S) externos globales basados en el balanceo de cargas HTTP(S) externo
gke-l7-rilb-mc Balanceadores de cargas regionales de varios clústeres basados en el balanceo de cargas HTTP(S) interno
gke-l7-gxlb-mc Balanceadores de cargas globales de varios clústeres basados en el balanceo de cargas de HTTP(S) externo

Cada GatewayClass está sujeta a las limitaciones del balanceador de cargas subyacente.

Puerta de enlace

Los operadores de clústeres crean Gateways para definir dónde y cómo los balanceadores de cargas escuchan el tráfico. Las Gateways toman su comportamiento (es decir, cómo se implementan) desde su GatewayClass asociada.

La especificación de Gateway incluye la GatewayClass para la Gateway, qué puertos y protocolos se escucharán, y qué rutas pueden vincularse a la Gateway. Una Gateway selecciona rutas en función de los metadatos de la Route; específicamente, el tipo, el espacio de nombres y las etiquetas de los recursos de Route.

Para ver un ejemplo de la implementación de una Gateway, consulta Implementa Gateways. Para ver un ejemplo de implementación de una Gateway de varios clústeres, consulta Implementa Gateways de varios clústeres.

HTTPRoute

Una HTTPRoute define cómo las solicitudes HTTP y HTTPS que recibe una Gateway se dirigen a los servicios. Los desarrolladores de aplicaciones crean HTTPRoutes para exponer sus aplicaciones a través de Gateways.

Una HTTPRoute define desde qué puertas de enlace se puede enrutar el tráfico, hacia qué servicios se debe enrutar y las reglas que definen con qué tráfico coincide la HTTPRoute. La vinculación de una puerta de enlace y una ruta es bidireccional, lo que significa que ambos recursos deben seleccionarse para que se vinculen. HTTPRoutes puede hacer coincidir solicitudes en función de los detalles del encabezado de la solicitud.

Una ruta se puede vincular a una o más Gateways, y una Gateway puede vincularse a muchas rutas.

Controlador de Gateway de GKE

El controlador de Gateway de GKE es la implementación de Google de la API de Gateway para Cloud Load Balancing. Al igual que el controlador de Ingress de GKE, el controlador de Gateway observa una API de Kubernetes para los recursos de la API de Gateway y concilia los recursos de Cloud Load Balancing a fin de implementar el comportamiento de las herramientas de redes especificado por los recursos de la Gateway.

Hay dos versiones del controlador de Gateway de GKE:

  • Un solo clúster: Administra las puertas de enlace de un solo clúster para un solo clúster de GKE.
  • Varios clústeres: Administra puertas de enlace de varios clústeres para uno o más clústeres de GKE.

Ambos controladores de Gateway son controladores alojados en Google que miran la API de Kubernetes para clústeres de GKE. A diferencia del controlador de Ingress de GKE, los controladores de Gateway no se alojan en los planos de control de GKE ni en el proyecto del usuario, lo que permite que sean más escalables y sólidos.

Los controladores de puerta de enlace no son un plano de datos de herramientas de redes y no procesan ningún tráfico. Se mantienen fuera de banda del tráfico y administran diversos planos de datos que procesan el tráfico. En el siguiente diagrama, se muestra la arquitectura de los controladores de puerta de enlace de GKE de un solo clúster y de varios clústeres. El controlador subyacente que se usa depende de la GatewayClass de la puerta de enlace implementada.

Los controladores de puerta de enlace de varios clústeres y de un solo clúster implementan y administran los balanceadores de cargas de GKE, pero no procesan el tráfico de red.

Control Controlador de puerta de enlace de un solo clúster Controlador de puerta de enlace de varios clústeres
Administrado por Google Google
Alcance del clúster Gateways de un solo clúster Gateways de varios clústeres
La ubicación de la implementación Se implementa de forma regional en la misma región que su clúster de GKE. Se implementa de forma global en varias regiones de Google Cloud.
Cómo habilitar Se habilita de forma predeterminada en GKE. Se habilita a través de la API de Ingress de varios clústeres y se registra en una flota. Consulta Habilitar puertas de enlace de varios clústeres.
GatewayClasses compatibles
  • gke-l7-rilb
  • gke-l7-gxlb
  • gke-l7-rilb-mc
  • gke-l7-gxlb-mc

Puedes usar varios controladores de Gateway, incluidos los controladores no proporcionados por Google, en un clúster de GKE de forma simultánea. Cada Gateway es compatible con un solo controlador de Gateway, lo que permite que se use simultáneamente el balanceo de cargas de varios clústeres.

Comparación entre Ingress y Gateway

Ingress y Gateway son estándares de código abierto para enrutar tráfico. La comunidad de Kubernetes diseñó Gateway, sobre la base de las lecciones aprendidas a partir de los ecosistemas de Ingress y de la malla de servicios. Gateway es una evolución de Ingress que proporciona la misma función, entregada como un superconjunto de las capacidades de Ingress. Ambos se pueden usar de forma simultánea sin conflictos, aunque con el tiempo, los recursos de Gateway y Route entregarán más funciones que no están disponibles en Ingress, lo que obligará a los usuarios a comenzar a usar Gateway, donde podrían haber usado Ingress antes.

Actualmente, el estándar de la API de Gateway se encuentra en la etapa v1Alpha1, lo que significa que, en este momento, solo es para uso experimental y de evaluación. Los cambios rotundos de la API se planifican antes de la versión beta de la API de Gateway. Del mismo modo, el controlador de la puerta de enlace de GKE también se encuentra en vista previa, destinado solo a la experimentación. Tus comentarios son fundamentales para la evolución del controlador de puerta de enlace de GKE y nos ayudarán a alcanzar la disponibilidad general. No dudes en escribirnos a gke-gateway-feedback@google.com para enviar tus comentarios y preguntas. Esperamos recibir noticias tuyas.

Precios

Todos los recursos de Compute Engine implementados a través del controlador de la Gateway se cobran en el proyecto en el que residen tus clústeres de GKE. El controlador de puerta de enlace de un solo clúster se ofrece sin cargo adicional como parte de los precios de GKE Standard y Autopilot. Puedes usar el controlador de puerta de enlace de varios clústeres sin cargo adicional durante la vista previa. Para obtener más información sobre los precios del controlador de puerta de enlace de varios clústeres de GKE, consulta Habilitar puertas de enlace de varios clústeres.

¿Qué sigue?