
Kubernetes revolucionó la orquestación de contenedores y Google Kubernetes Engine (GKE) ofrece una plataforma gestionada y potente para desplegar y escalar aplicaciones en contenedores. Si bien GKE tiene capacidades sólidas de descubrimiento de servicios y balanceo de carga, sigue habiendo limitaciones para aplicar lógica de procesamiento personalizada al tráfico antes de que llegue a los workloads.
Ahí es donde entran los Service Extensions: una solución muy interesante para personalizar y potenciar Cloud Load Balancing junto con la GKE Gateway API (Nota: se trata de una funcionalidad de Kubernetes y no tiene relación con el servicio API Gateway de Google Cloud).
¿Qué son los Service Extensions en GCP?
Los Service Extensions permiten inyectar lógica personalizada directamente en el data path, habilitando modificaciones avanzadas sobre el tráfico que pasa por el load balancer. Funciona como un pipeline en el que puedes insertar tu propio código en distintas etapas para manipular las solicitudes y respuestas sin afectar a los backends.
Hay dos tipos principales de Service Extensions:
- Plugins: permiten insertar código personalizado en línea, dentro del data path de red. Construidos con WebAssembly (Wasm) y la ABI Proxy-Wasm, los plugins se ejecutan como módulos Wasm sobre una infraestructura sandbox gestionada por Google. Están pensados para operaciones de baja latencia y son ideales para lógica liviana que necesita ejecutarse muy cerca del data plane.

- Callouts: permiten que Cloud Load Balancing realice llamadas gRPC a servicios externos, ya sean servicios gestionados por Google o por el usuario (incluidos los que corren en Pods de GKE). Los callouts ofrecen mayor flexibilidad porque pueden reutilizar software existente y tienen menos restricciones en tiempo de ejecución, lo que los vuelve adecuados para lógica más compleja que pueda requerir datos o estado externos.

El equipo de GKE anunció hace poco el soporte en preview de Service Extensions en la Gateway API. Esto permite manipular headers HTTP y payloads de solicitudes y respuestas, e incluso controlar el enrutamiento del tráfico, todo sin alterar la selección de servicios backend ni las políticas de seguridad existentes.
Tipos de Service Extensions de GKE Gateway API
Hoy, el controlador de GKE Gateway soporta dos tipos de Callouts Service Extensions, cada uno pensado 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 distintos servicios backend o aplicar lógica de enrutamiento personalizada.

- ``GCPTrafficExtension: este tipo de extensión te permite modificar headers y payloads de solicitudes y respuestas. Opera sin afectar la selección de servicios backend ni las políticas de seguridad, lo que lo vuelve ideal para transformar y enriquecer datos.

Configurar Service Extensions en GKE Gateway API
Para probar la funcionalidad de Service Extensions en GKE necesitas un cluster de GKE en versión 1.33 o superior y la Gateway API habilitada. Antes de probar esta funcionalidad, repasa también las restricciones y limitaciones vigentes de los Gateway Service Extensions en GKE.
Desplegar un Gateway
Para configurar un Service Extension, primero debes desplegar un recurso Gateway o verificar que el Gateway existente use una GatewayClass compatible. Para más detalles sobre los load balancers compatibles, consulta Google Cloud Service Extension compatibility with GatewayClasses.
- Aplica el siguiente manifiesto para desplegar un gateway sencillo de application load balancer regional.

Desplegar una aplicación backend de tienda de ejemplo
- Aplica el siguiente manifiesto para desplegar la aplicación backend de ejemplo y los recursos HTTPRoute. El HTTPRoute define cómo se enrutan las solicitudes HTTP desde un listener del Gateway hacia la aplicación backend.

- Envía una solicitud de prueba a la dirección IP de la gateway API para comprobar la respuesta del backend.
El resultado se ve así:

Desplegar un servicio backend de callout
Un servicio de callout implementa la lógica personalizada para los Gateway Service Extensions en GKE. El Load Balancer invoca a las aplicaciones backend según la configuración de GCPTrafficExtension o GCPRoutingExtension para modificar o enrutar el tráfico.
Si vas a desplegar un servicio de callout en el cluster de GKE, debes cumplir todos los requisitos indicados en las limitaciones.
Genera un certificado autofirmado para el backend del servicio de callout con mkcert u otro método. Esto es necesario porque debes usar HTTP2 como
appProtocol, que requiere TLS de extremo a extremo.Crea un Secret de K8S con el certificado autofirmado.

- Aplica el siguiente manifiesto para desplegar la aplicación de callout de ejemplo. Para más muestras de código, consulta el repositorio de GitHub service-extensions.

- La aplicación de ejemplo realiza una modificación básica de headers tanto en la solicitud como en la respuesta. Consulta service_callout_example.py para más detalles y desarrolla tu propia aplicación según las necesidades del negocio.
Configurar los Service Extensions
Puedes configurar un GCPRoutingExtension o un GCPTrafficExtension para personalizar tu flujo de tráfico.
- Aplica el siguiente manifiesto para crear un recurso
GCPRoutingExtension. El load balancer invocará la app del servicio de extensión para las solicitudes enviadas a la rutarouteextensiony luego las reenviará a la aplicación backend de la tienda.

- Actualiza el recurso
HTTPRoutecon el hostservice-extensions.com, ya que el servicio de callout modifica el host header antes de reenviar las solicitudes a la app de la tienda.

- El controlador de Gateway API puede tardar unos minutos en sincronizar los cambios. Usa el comando
kubectl describe gateway GATEWAY_NAMEpara confirmar que elGCPRoutingExtensionestá vinculado al Gateway.

- El resultado muestra las anotaciones que GKE utiliza para almacenar los vínculos entre el Gateway y los recursos subyacentes de Google Cloud. La anotación
networking.gke.io/lb-route-extensionsconfirma la vinculación del gateway con elGCPRoutingExtension. - Ahora prueba el tráfico hacia la ruta
routeextensionreemplazandoGATEWAY_IP_ADDRESS.

- El resultado se ve similar al siguiente y puedes notar los cambios en el
host_headerde la respuesta.
Puedes usar GCPTrafficExtension para implementar lógica personalizada de solicitudes y respuestas, enrutamiento sofisticado, transformaciones y políticas de seguridad.
Aplica el siguiente manifiesto para crear un recurso
GCPTrafficExtension. El load balancer invocará la app del servicio de extensión para las solicitudes enviadas a la rutatrafficetension. Puedes personalizar y controlar la invocación del load balancer hacia la aplicación de callout actualizando lossupportedEvents.Ahora prueba el tráfico hacia la ruta
trafficextensionreemplazandoGATEWAT_IP_ADDRESS.

- El resultado se ve similar al siguiente y puedes ver los cambios del header de respuesta del cliente en
hello, además de que el cuerpo de la respuesta queda eliminado.
Logs del Pod de ejemplo:Los GCP Service Extensions para GKE Gateway API marcan un avance importante en la forma en que los equipos de plataforma pueden gestionar, dar forma y proteger el tráfico en la capa de ingress. Ya sea que necesites aplicar autenticación personalizada, manipular headers, hacer traffic shaping o integrarte con sistemas externos, los Service Extensions te permiten hacerlo de forma declarativa y escalable.
Aunque todavía está en preview, es una excelente oportunidad para explorar los Service Extensions, probarlos en entornos no productivos y desarrollar servicios de extensión reutilizables a la medida de las necesidades de tu plataforma.
Si estás evaluando una PoC, no estás solo. DoiT está aquí para ayudarte a evaluar, planificar y migrar con foco en los resultados de tu negocio. Con más de 100 expertos senior en cloud especializados en diseñar soluciones personalizadas, nuestro equipo te acompaña en todo el proceso para optimizar tu infraestructura, garantizar el cumplimiento normativo y responder con eficiencia a las demandas futuras.
Nuestros expertos te brindan orientación estratégica y conocimiento técnico en cada paso del camino. Conversemos sobre lo que más le conviene a tu empresa en esta fase de aplicación de políticas y aseguremos que tu infraestructura cloud sea robusta, conforme y esté optimizada para el éxito. Contáctanos hoy.