Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

GKE Gateway API e Service Extensions: o kit definitivo para desafios de tráfego complexos no GCP

By Chimbu ChinnaduraiAug 12, 20256 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

O Kubernetes revolucionou a orquestração de contêineres, e o Google Kubernetes Engine (GKE) oferece uma plataforma gerenciada e robusta para implantar e escalar aplicações em contêineres. Apesar de o GKE trazer recursos sólidos de descoberta de serviços e balanceamento de carga, ainda existem limitações na hora de aplicar lógica de processamento personalizada ao tráfego antes que ele chegue aos workloads.

É aí que entram as Service Extensions, uma solução poderosa para personalizar e turbinar o Cloud Load Balancing junto com a GKE Gateway API (Observação: este é um recurso do Kubernetes e não tem relação com o serviço Google Cloud API Gateway).

O que são Service Extensions no GCP?

As Service Extensions permitem injetar lógica personalizada diretamente no caminho dos dados, viabilizando modificações avançadas no tráfego que passa pelo load balancer. Funciona como um pipeline em que você insere seu próprio código em diferentes estágios para manipular requisições e respostas sem afetar os backends.

Existem dois tipos principais de Service Extensions:

  • Plugins: permitem inserir código personalizado inline diretamente no caminho de dados da rede. Construídos com WebAssembly (Wasm) e a Proxy-Wasm ABI, os plugins rodam como módulos Wasm em uma infraestrutura sandbox gerenciada pelo Google. Foram projetados para operações de baixa latência e são ideais para lógicas leves que precisam ser executadas bem próximas ao plano de dados.

  • Callouts: permitem que o Cloud Load Balancing faça chamadas gRPC para serviços externos — sejam eles gerenciados pelo Google ou pelo próprio usuário (inclusive os que rodam em Pods do GKE). Os Callouts oferecem mais flexibilidade, pois reaproveitam software existente e têm menos restrições de runtime, sendo adequados para lógicas mais complexas que podem precisar de dados ou estado externos.

O time do GKE anunciou recentemente o suporte em preview às Service Extensions na Gateway API. Com isso, dá para manipular cabeçalhos HTTP e payloads de requisições e respostas e até controlar o roteamento do tráfego, tudo sem mexer na seleção de serviços de backend nem nas políticas de segurança existentes.

Tipos de Service Extensions na GKE Gateway API

O controlador da GKE Gateway oferece, no momento, suporte a dois tipos de Callouts Service Extensions, cada um voltado a funcionalidades específicas:

  • ``GCPRoutingExtension: este tipo de extensão é focado no controle do roteamento de tráfego. Ideal para cenários em que você precisa direcionar o tráfego para diferentes serviços de backend ou aplicar lógica de roteamento personalizada.

  • ``GCPTrafficExtension: este tipo de extensão permite alterar os cabeçalhos e payloads de requisições e respostas. Ele atua sem afetar a seleção do serviço de backend nem as políticas de segurança, sendo perfeito para transformação e enriquecimento de dados.

Como configurar Service Extensions na GKE Gateway API

Para experimentar o recurso de service extension no GKE, você precisa de um cluster GKE versão 1.33 ou superior com a Gateway API habilitada. Antes de testar o recurso, vale também conferir as restrições e limitações atuais das Gateway Service Extensions no GKE.

Implante um Gateway

Para configurar uma Service Extension, primeiro é preciso implantar um recurso Gateway ou verificar se o Gateway existente usa uma GatewayClass compatível. Para detalhes sobre os load balancers compatíveis, consulte Google Cloud Service Extension compatibility with GatewayClasses.

  • Aplique o manifesto abaixo para implantar um gateway simples de application load balancer regional.

Implante uma aplicação de backend de exemplo

  • Aplique o manifesto abaixo para implantar a aplicação de backend de exemplo e os recursos HTTPRoute. O HTTPRoute define como as requisições HTTP são roteadas a partir de um listener do Gateway até a aplicação de backend.

  • Envie uma requisição de exemplo para o endereço IP da gateway API e teste a resposta do backend.

O resultado é parecido com este:

Implante um serviço callout de backend

Um serviço callout implementa a lógica personalizada das Gateway Service Extensions no GKE. O Load Balancer invoca as aplicações de backend com base nas configurações de GCPTrafficExtension ou GCPRoutingExtension para modificar ou rotear o tráfego.

Se você for implantar um serviço callout no cluster GKE, é preciso atender a todos os requisitos descritos nas limitações.

  • Gere um certificado autoassinado para o backend do serviço callout usando o mkcert ou outro método. Isso é necessário porque é preciso usar HTTP2 como appProtocol, que exige TLS de ponta a ponta.

  • Crie um Secret do K8S com o certificado autoassinado.

  • Aplique o manifesto abaixo para implantar a aplicação callout de exemplo. Para mais exemplos de código, confira o repositório service-extensions no GitHub.

  • A aplicação de exemplo faz uma modificação básica de cabeçalho tanto na requisição quanto na resposta. Consulte o service_callout_example.py para mais detalhes — e desenvolva sua própria aplicação conforme as necessidades do negócio.

Configure as Service Extensions

Você pode configurar uma GCPRoutingExtension ou uma GCPTrafficExtension para personalizar o fluxo do seu tráfego.

  • Aplique o manifesto abaixo para criar um recurso GCPRoutingExtension. O load balancer vai chamar o app do serviço de extensão para as requisições enviadas ao caminho routeextension e, em seguida, encaminhá-las para a aplicação de backend store.

  • Atualize o recurso HTTPRoute com o host service-extensions.com, já que o serviço callout altera o cabeçalho host antes de encaminhar as requisições para o app store.

  • O controlador da Gateway API pode levar alguns minutos para sincronizar as alterações. Use o comando kubectl describe gateway GATEWAY_NAME para confirmar que a GCPRoutingExtension está vinculada ao Gateway.

  • O resultado mostra as anotações que o GKE usa para armazenar os vínculos entre o Gateway e os recursos subjacentes do Google Cloud. A anotação networking.gke.io/lb-route-extensions confirma a vinculação do gateway com a GCPRoutingExtension.
  • Agora teste o tráfego no caminho routeextension substituindo GATEWAY_IP_ADDRESS.

  • O resultado é parecido com este e você verá as alterações no host_header dentro da resposta.

Use a GCPTrafficExtension para implementar lógica personalizada de requisição e resposta, roteamento sofisticado, transformações e políticas de segurança.

  • Aplique o manifesto abaixo para criar um recurso GCPTrafficExtension. O load balancer vai chamar o app do serviço de extensão para as requisições enviadas ao caminho trafficetension. Você pode personalizar e controlar a invocação do load balancer para a aplicação callout atualizando o supportedEvents.

  • Agora teste o tráfego no caminho trafficextension substituindo GATEWAT_IP_ADDRESS.

  • O resultado é parecido com este e você verá as alterações no cabeçalho de resposta personalizado em hello, além de o corpo da resposta ter sido removido.
Logs do Pod de exemplo:

As Service Extensions do GCP para a GKE Gateway API são um avanço importante na forma como times de plataforma podem gerenciar, moldar e proteger o tráfego na camada de ingress. Seja para aplicar autenticação personalizada, manipular cabeçalhos, fazer traffic shaping ou integrar com sistemas externos, as Service Extensions tornam tudo isso possível de forma declarativa e escalável.

Mesmo ainda em preview, este é um ótimo momento para explorar as Service Extensions, testá-las em ambientes não produtivos e desenvolver serviços de extensão reutilizáveis e sob medida para sua plataforma.

Se você está pensando em fazer uma PoC, saiba que não está sozinho. A DoiT está aqui para te ajudar a avaliar, planejar e migrar com foco total nos resultados do seu negócio. Com mais de 100 especialistas sêniores em nuvem dedicados a criar soluções sob medida, nosso time está pronto para conduzir esse processo com tranquilidade e otimizar sua infraestrutura, garantindo conformidade e atendendo às demandas futuras com eficiência.

Nossos especialistas estão prontos para oferecer orientação estratégica e expertise técnica em cada etapa. Vamos conversar sobre o que faz mais sentido para a sua empresa nesta fase de aplicação de políticas, garantindo uma infraestrutura de nuvem robusta, em conformidade e otimizada para o sucesso. Fale com a gente hoje mesmo.