Kubernetes ha transformado la orquestación de contenedores, y Google Kubernetes Engine (GKE) proporciona una plataforma potente y gestionada para desplegar y escalar aplicaciones en contenedores. Aunque GKE ofrece sólidas capacidades para el descubrimiento de servicios y el equilibrio de carga, aún existen limitaciones para aplicar una lógica de procesamiento personalizada al tráfico antes de que llegue a las cargas de trabajo.
Aquí es donde Extensiones de Servicio entran en juego, proporcionando una solución atractiva para personalizar y mejorar el Cloud Load Balancing con la API GKE Gateway (Nota: se trata de una función de Kubernetes y no está relacionada con el servicio Google Cloud API Gateway ).
¿Qué son las extensiones de servicio en GCP?
Las Extensiones de Servicio permiten a los usuarios inyectar lógica personalizada directamente en la ruta de datos, permitiendo modificaciones avanzadas en el tráfico que fluye a través del equilibrador de carga. Es como una tubería en la que puedes insertar tu propio código en varias etapas para manipular las peticiones y respuestas sin afectar a los backends.
Hay dos tipos principales de Extensiones de Servicio:
- Plugins: Permiten insertar código personalizado en línea directamente en la ruta de datos de red. Construidos utilizando WebAssembly (Wasm) y la ABI Proxy-Wasm, los plugins se ejecutan como módulos Wasm en una infraestructura sandbox gestionada por Google. Están diseñados para operaciones de baja latencia y son ideales para la lógica ligera que necesita ejecutarse muy cerca del plano de datos.

- Llamadas: Permiten al Equilibrio de Carga en la Nube realizar llamadas gRPC a servicios externos, ya sean servicios gestionados por Google o por el usuario (incluidos los que se ejecutan en GKE Pods). Las llamadas ofrecen una mayor flexibilidad, ya que pueden reutilizar el software existente y tienen menos restricciones de tiempo de ejecución, lo que las hace adecuadas para una lógica más compleja que pueda requerir datos o estados externos.

El equipo de GKE ha anunciado recientemente la compatibilidad preliminar con las Extensiones de Servicio en la API de la Pasarela. Esto permite a los usuarios manipular las cabeceras HTTP y las cargas útiles de las solicitudes y respuestas, e incluso controlar el enrutamiento del tráfico, todo ello sin afectar a las selecciones de servicios backend existentes ni a las políticas de seguridad.
Tipos de extensiones del servicio API de la pasarela GKE
El controlador de Pasarela GKE admite actualmente dos tipos de Extensiones de Servicio de Llamadas, cada una diseñada para funcionalidades específicas:
- GCPRoutingExtension: Este tipo de extensión se centra en controlar el enrutamiento del tráfico. Es ideal para escenarios en los que necesitas dirigir el tráfico a diferentes servicios backend o aplicar una lógica de enrutamiento personalizada.

- GCPTráficoExtensión: Este tipo de extensión te permite cambiar las cabeceras y cargas útiles de las solicitudes y respuestas. Funciona sin afectar a la selección de servicios backend ni a las políticas de seguridad, lo que la hace perfecta para la transformación y el enriquecimiento de datos.

Configurar extensiones de servicio en la API de la pasarela GKE
Para explorar la función de extensión de servicios en GKE, necesitas un clúster GKE con la versión 1.33 o posterior y la API de Gateway activada. Además, revisa las Restricciones y limitaciones actuales de las Extensiones de Servicio de Pasarela en GKE antes de probar esta función.
Despliega una pasarela
Para configurar una extensión de servicio, primero debes desplegar un recurso Gateway o verificar que el recurso Gateway existente utiliza una GatewayClass compatible. Para más detalles sobre los equilibradores de carga compatibles, consulta Compatibilidad de la Extensión de Servicio de Google Cloud con GatewayClasses.
- Aplica el siguiente manifiesto para desplegar una sencilla pasarela regional de equilibrador de carga de aplicaciones.

Despliega una aplicación backend de tienda de ejemplo
- Aplica el manifiesto siguiente para desplegar la aplicación backend de ejemplo y los recursos HTTPRoute. El HTTPRoute especifica el comportamiento de enrutamiento de las peticiones HTTP desde un receptor Gateway a la aplicación backend.

- Envía una petición de muestra a la dirección IP de la API de la pasarela para probar la respuesta del backend.
El resultado es similar al siguiente:

Despliega un servicio de llamada backend
Un servicio de llamada implementa la lógica personalizada para las Extensiones de Servicio de Pasarela en GKE. El Equilibrador de Carga invoca las aplicaciones backend basándose en las configuraciones de GCPTrafficExtension o GCPRoutingExtension, para modificar o enrutar el tráfico. 
Si vas a desplegar un servicio de llamada en el clúster GKE, debes cumplir todos los requisitos mencionados en las limitaciones.
- Genera un certificado autofirmado para el backend del servicio de llamadas utilizando mkcert o cualquier otro método. Esto es necesario porque debes utilizar HTTP2 ya que esappProtocolel que requiere TLS de extremo a extremo.
- Crea un K8S Secret con el cert autofirmado.

- Aplica el manifiesto siguiente para desplegar la aplicación de ejemplo de llamada. Para ver más ejemplos de código, consulta el repositorio GitHub de extensiones de servicio.

- La aplicación de ejemplo realiza una modificación básica de la cabecera tanto de la solicitud como de la respuesta. Consulta service_callout_example.py para más detalles, y puedes desarrollar tu propia aplicación basándote en los requisitos de la empresa.
Configurar las extensiones de servicio
Puedes configurar un GCPRoutingExtension o un GCPTrafficExtension para personalizar tu flujo de tráfico.
- Aplica el manifiesto siguiente para crear un recurso GCPRoutingExtension, y el equilibrador de carga llamará a la aplicación de servicio de extensión para las peticiones enviadas a la rutarouteextensiony luego las reenviará a la aplicación de tienda backend.

- Actualiza el recurso HTTPRouteconservice-extensions.comhost ya que el servicio de llamada realiza una modificación del encabezado host antes de reenviar las peticiones a la app de la tienda.

- El controlador API de la pasarela puede tardar unos minutos en sincronizar los cambios. Utiliza el comando kubectl describe gateway GATEWAY_NAMEpara confirmar que elGCPRoutingExtensionestá vinculado a la Pasarela.

- El resultado muestra las anotaciones, que GKE utiliza para almacenar los enlaces entre la pasarela y los recursos subyacentes de Google Cloud. La anotación networking.gke.io/lb-route-extensionsconfirma la vinculación de la pasarela aGCPRoutingExtension.
- Ahora prueba el tráfico a la ruta routeextensionsustituyendoGATEWAY_IP_ADDRESS.

- La salida se parece a la siguiente, y puedes notar los cambios en el host_headerdentro de la respuesta.
Puedes utilizar GCPTrafficExtension para implementar una lógica de solicitud y respuesta personalizada, enrutamientos sofisticados, transformaciones y políticas de seguridad.
- Aplica el manifiesto siguiente para crear un recurso GCPTrafficExtension, y el equilibrador de carga llamará a la aplicación de servicio de extensión para las solicitudes enviadas a la rutatrafficetension. Puedes personalizar y controlar la invocación del equilibrador de carga a la aplicación de llamada actualizando elsupportedEvents.
- Ahora prueba el tráfico a la ruta trafficextensionsustituyendoGATEWAT_IP_ADDRESS.

- La salida se parece a la siguiente, y puedes observar que la cabecera de respuesta del cliente cambia en helloy se elimina el cuerpo de la respuesta.
Muestra de registros Pod:
Conclusión
Las Extensiones de Servicio de GCP para la API GKE Gateway representan un avance significativo en la forma en que los equipos de plataforma pueden gestionar, dar forma y proteger el tráfico en la capa de entrada. Tanto si necesitas aplicar autenticación personalizada, manipular cabeceras, realizar moldeado de tráfico o integrarte con sistemas externos, las Extensiones de Servicio te permiten hacerlo de forma declarativa y escalable.
Aunque aún está en fase de previsualización, supone una excelente oportunidad para explorar las Extensiones de Servicio, probarlas en entornos que no sean de producción y desarrollar servicios de extensión reutilizables adaptados a los requisitos de tu plataforma.
Si estás considerando una PdC, no estás solo. DoiT está aquí para ayudarte a evaluar, planificar y migrar con un fuerte enfoque en los resultados de tu negocio. Con más de 100 expertos senior en la nube especializados en la creación de soluciones en la nube personalizadas, nuestro equipo está preparado para ayudarte a navegar por este proceso sin problemas y optimizar tu infraestructura para garantizar el cumplimiento y satisfacer las demandas futuras de forma eficiente.
Nuestros expertos están preparados para proporcionarte orientación estratégica y conocimientos técnicos en cada paso del camino. Hablemos de lo que tiene más sentido para tu empresa durante esta fase de aplicación de políticas, asegurándonos de que tu infraestructura en la nube es sólida, cumple la normativa y está optimizada para el éxito. Ponte en contacto con nosotros hoy mismo.
 
															 
 







