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_proc
extensã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
model
padrã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
HTTPRoute
existentes para tomar decisões de encaminhamento. Por exemplo, as regrasHTTPRoute
podem corresponder ao cabeçalho injetado para direcionar o tráfego para oInferencePool
adequado. - 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 Endpoint Picker para uma seleção detalhada do ponto final 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
GCPRoutingExtension
e um recursoGCPHealthCheckPolicy
para 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 HTTPRoute
recursos 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.