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
model
padrã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
HTTPRoute
da API Gateway para tomar decisões de roteamento. Por exemplo, as regrasHTTPRoute
podem corresponder ao cabeçalho injetado para direcionar o tráfego aoInferencePool
adequado. - 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 baseada em 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
GCPRoutingExtension
e um recursoGCPHealthCheckPolicy
para 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.