Saiba como configurar o roteamento com base no corpo, um recurso do gateway de inferência do GKE que permite rotear solicitações de inferência extraindo o nome do modelo diretamente do corpo da solicitação HTTP.
Isso é útil principalmente para aplicativos que seguem especificações como a API da OpenAI, em que o identificador do modelo geralmente é incorporado ao payload da solicitação em vez de cabeçalhos ou caminhos de URL.
Como funciona o roteamento com base no corpo
O gateway de inferência do GKE implementa o roteamento com base no corpo como uma extensão ext_proc
do proxy Envoy. O fluxo de solicitação foi projetado para se integrar
perfeitamente às suas configurações atuais da API Gateway:
- Recepção de solicitações: o balanceador de carga da camada 7 recebe uma solicitação de inferência.
 - Extração de parâmetros do corpo: o balanceador de carga da Camada 7 encaminha a solicitação para a extensão "Body to Header". Essa extensão extrai o parâmetro 
modelpadrão do corpo da solicitação HTTP. - Injeção de cabeçalho: o valor do parâmetro do modelo extraído é injetado
como um novo cabeçalho de solicitação (com a chave 
X-Gateway-Model-Name). - Decisão de roteamento: com o nome do modelo agora disponível em um cabeçalho de solicitação, o gateway de inferência do GKE pode usar construções 
HTTPRouteda API Gateway para tomar decisões de roteamento. Por exemplo, as regrasHTTPRoutepodem corresponder ao cabeçalho injetado para direcionar o tráfego aoInferencePooladequado. - Seleção de endpoint: o balanceador de carga da camada 7 seleciona o 
InferencePool(BackendService) e o grupo de endpoints apropriados. Em seguida, ele encaminha informações de solicitação e endpoint para a extensão Seletor de endpoints para seleção refinada de endpoints no pool escolhido. - Roteamento final: a solicitação é encaminhada para a réplica do modelo específica selecionada pela extensão Endpoint Picker.
 
Esse processo garante que, mesmo quando as informações do modelo estão no corpo da solicitação, o gateway de inferência do GKE possa rotear o tráfego de maneira inteligente para os serviços de back-end corretos.
Configurar o roteamento com base no corpo
A extensão de roteamento com base no corpo (BBR, na sigla em inglês) para o gateway de inferência do GKE é executada como um serviço gerenciado no cluster do Kubernetes. Do ponto de vista do balanceador de carga da camada 7, a extensão BBR é um servidor gRPC externo. Quando o balanceador de carga precisa inspecionar um corpo de solicitação para determinar o nome do modelo, ele faz uma chamada gRPC para o serviço BBR. Em seguida, o serviço BBR processa a solicitação e retorna informações ao balanceador de carga, como cabeçalhos a serem inseridos para roteamento.
Para ativar o roteamento com base no corpo, implante a extensão BBR como um pod e a integre usando os recursos GCPRoutingExtension e HTTPRoute.
Pré-requisitos
Verifique se você tem um cluster do GKE (versão 1.32 ou mais recente).
Siga o guia principal para configurar o GKE Inference Gateway.
Implantar o roteador com base no corpo
A extensão de roteamento com base no corpo é implantada como uma implantação e um serviço do Kubernetes, além de um recurso GCPRoutingExtension no cluster.
Você pode usar o Helm para uma instalação simplificada.
Para implantar os recursos necessários para o roteador baseado em corpo, execute o seguinte comando:
helm install body-based-router oci://registry.k8s.io/gateway-api-inference-extension/charts/body-based-routing \
    --set provider.name=gke \
    --set inferenceGateway.name=GATEWAY_NAME
Substitua GATEWAY_NAME pelo nome do recurso de gateway.
Esse comando implanta os seguintes recursos:
- Um serviço e uma implantação para a extensão de roteamento com base no corpo.
 - Um recurso 
GCPRoutingExtensione um recursoGCPHealthCheckPolicypara anexar a extensão de roteamento com base no corpo ao recurso do gateway do GKE. 
Configurar o HTTPRoute para o roteamento com reconhecimento de modelo
Depois que a extensão for implantada e configurada, será possível definir recursos HTTPRoute
que usam o cabeçalho injetado (X-Gateway-Model-Name) para decisões
de roteamento.
Confira a seguir um exemplo de manifesto HTTPRoute para roteamento com reconhecimento de modelo:
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: routes-to-llms
spec:
  parentRefs:
  - name: GATEWAY_NAME
  rules:
  - matches:
    - headers:
      - type: Exact
        name: X-Gateway-Model-Name
        value: chatbot # Matches the extracted model name
      path:
        type: PathPrefix
        value: /
    backendRefs:
    - name: gemma # Target InferencePool for 'chatbot' model
      kind: InferencePool
      group: "inference.networking.k8s.io"
  - matches:
    - headers:
      - type: Exact
        name: X-Gateway-Model-Name
        value: sentiment # Matches another extracted model name
      path:
        type: PathPrefix
        value: /
    backendRefs:
    - name: llama # Target InferencePool for 'sentiment' model
      kind: InferencePool
      group: "inference.networking.k8s.io"
Para aplicar esse manifesto ao cluster, salve-o como httproute-for-models.yaml
e execute o seguinte comando:
kubectl apply -f httproute-for-models.yaml
Considerações e limitações
Ao planejar a implementação do roteamento com base no corpo, considere o seguinte:
Comportamento de falha ao fechar:a extensão de roteamento com base no corpo foi projetada para operar no modo "falha ao fechar". Se a extensão não estiver disponível ou não conseguir processar uma solicitação, isso vai resultar em um erro (por exemplo, um código de resposta 404 ou 503 se nenhum back-end padrão estiver configurado), em vez de um roteamento incorreto. Verifique se as implantações estão altamente disponíveis para manter a confiabilidade do serviço.
Tamanho e streaming do corpo da solicitação:o processamento de corpos de solicitação HTTP grandes, especialmente com o streaming ativado, pode gerar complexidades. Se o proxy do Envoy for forçado a transmitir o corpo da solicitação (normalmente para corpos maiores que 250 KB), talvez ele não consiga injetar novos cabeçalhos. Isso pode levar a falhas de roteamento, por exemplo, um erro 404 se as regras de correspondência de cabeçalho não puderem ser aplicadas.
Manutenção de longo prazo:a extensão de roteamento com base no corpo é executada como um componente nos clusters do GKE. Você é responsável pelo gerenciamento do ciclo de vida, incluindo upgrades, patches de segurança e garantia de operação contínua.
A seguir
- Saiba como personalizar o GKE Inference Gateway.
 - Leia mais sobre o GKE Inference Gateway.
 - Monitore os recursos do gateway.
 - Saiba mais sobre a API Gateway.