Saiba como configurar o encaminhamento baseado no corpo, uma capacidade do GKE Inference Gateway que lhe permite encaminhar pedidos de inferência extraindo o nome do modelo diretamente do corpo do pedido HTTP.
Isto é particularmente útil para aplicações que cumprem especificações como a API OpenAI, em que o identificador do modelo é frequentemente incorporado na carga útil do pedido em vez de nos cabeçalhos ou nos caminhos dos URLs.
Como funciona o planeamento de trajeto baseado no corpo
O GKE Inference Gateway implementa o encaminhamento baseado no corpo como uma ext_procextensão do proxy Envoy. O fluxo de pedidos foi concebido para se integrar
perfeitamente com as suas configurações da API Gateway existentes:
- Receção do pedido: o equilibrador de carga da camada 7 recebe um pedido de inferência de entrada.
- Extração de parâmetros do corpo: o equilibrador de carga da camada 7 encaminha o pedido para a extensão de corpo para cabeçalho. Esta extensão extrai o parâmetro modelpadrão do corpo do pedido HTTP.
- Injeção de cabeçalho: o valor do parâmetro do modelo extraído é, em seguida, injetado como um novo cabeçalho do pedido (com a chave X-Gateway-Model-Name).
- Decisão de encaminhamento: com o nome do modelo agora disponível num cabeçalho do pedido, o GKE Inference Gateway pode usar construções da API Gateway HTTPRouteexistentes para tomar decisões de encaminhamento. Por exemplo, as regrasHTTPRoutepodem corresponder ao cabeçalho injetado para direcionar o tráfego para oInferencePooladequado.
- Seleção de pontos finais: o balanceador de carga da camada 7 seleciona o InferencePool(BackendService) e o grupo de pontos finais adequados. Em seguida, encaminha as informações do pedido e do ponto final para a extensão do selecionador de pontos finais para uma seleção detalhada de pontos finais no conjunto escolhido.
- Encaminhamento final: o pedido é encaminhado para a réplica do modelo específica selecionada pela extensão Endpoint Picker.
Este processo garante que, mesmo quando as informações do modelo estão no corpo do pedido, o GKE Inference Gateway pode encaminhar o tráfego de forma inteligente para os serviços de back-end corretos.
Configure o encaminhamento com base no corpo
A extensão de encaminhamento baseado no corpo (BBR) para o GKE Inference Gateway é executada como um serviço que gere no seu 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 de inspecionar o corpo de um pedido para determinar o nome do modelo, faz uma chamada gRPC para o serviço BBR. Em seguida, o serviço BBR processa o pedido e devolve informações ao balanceador de carga, como cabeçalhos a serem injetados para o encaminhamento.
Para ativar o encaminhamento baseado no corpo, implemente a extensão BBR como um pod e integre-a através de recursos GCPRoutingExtension e HTTPRoute.
Pré-requisitos
- Certifique-se de que tem um cluster do GKE (versão 1.32 ou posterior). 
- Siga o guia principal para configurar o GKE Inference Gateway. 
Implemente o router corporal
A extensão de encaminhamento baseado no corpo é implementada como uma implementação e um serviço do Kubernetes, juntamente com um recurso GCPRoutingExtension no seu cluster.
Pode usar o Helm para uma instalação simplificada.
Para implementar os recursos necessários para o router baseado no 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 Gateway.
Este comando implementa os seguintes recursos:
- Um serviço e uma implementação para a extensão de encaminhamento baseado no corpo.
- Um recurso GCPRoutingExtensione um recursoGCPHealthCheckPolicypara anexar a extensão de encaminhamento baseado no corpo ao seu recurso GKE Gateway.
Configure HTTPRoute para o encaminhamento com reconhecimento de modelos
Depois de a extensão ser implementada e configurada, pode definir HTTPRouterecursos que usam o cabeçalho injetado (X-Gateway-Model-Name) para decisões de encaminhamento.
Segue-se um exemplo de um manifesto HTTPRoute para o encaminhamento com reconhecimento do 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 este manifesto ao seu cluster, guarde-o como httproute-for-models.yaml
e execute o seguinte comando:
kubectl apply -f httproute-for-models.yaml
Considerações e limitações
Quando planear a implementação do encaminhamento baseado no corpo, considere o seguinte:
- Comportamento de falha de bloqueio: a extensão Body-Based Routing foi concebida para funcionar num modo de "falha de bloqueio". Se a extensão não estiver disponível ou não conseguir processar um pedido, resulta num erro (por exemplo, um código de resposta 404 ou 503 se não estiver configurado nenhum back-end predefinido) em vez de um encaminhamento incorreto. Certifique-se de que as suas implementações estão altamente disponíveis para manter a fiabilidade do serviço. 
- Tamanho do corpo do pedido e streaming: o processamento de corpos de pedidos HTTP grandes, especialmente com o streaming ativado, pode introduzir complexidades. Se o proxy Envoy for forçado a transmitir o corpo do pedido (normalmente, para corpos com mais de 250 KB), pode não conseguir injetar novos cabeçalhos. Isto pode levar a falhas de encaminhamento (por exemplo, um erro 404 se as regras de correspondência de cabeçalhos não puderem ser aplicadas). 
- Manutenção a longo prazo: a extensão Body-Based Routing é executada como um componente nos seus clusters do GKE. É responsável pela gestão do ciclo de vida do software, incluindo atualizações, patches de segurança e garantir o funcionamento contínuo do mesmo. 
O que se segue?
- Saiba como personalizar o GKE Inference Gateway.
- Leia mais acerca do GKE Inference Gateway.
- Monitorize os recursos do gateway.
- Saiba mais acerca da API Gateway.