Aprenda a configurar o roteamento baseado no corpo, um recurso do GKE Inference Gateway que permite encaminhar 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 OpenAI, em que o identificador do modelo geralmente é incorporado ao payload da solicitação, em vez de cabeçalhos ou caminhos de URL.
Como o roteamento baseado no corpo funciona
O GKE Inference Gateway implementa o roteamento baseado no corpo como uma extensão ext_proc do proxy do Envoy. O fluxo de solicitações foi projetado para se integrar perfeitamente às configurações 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 do corpo ao cabeçalho. 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 da solicitação (com a chave
X-Gateway-Model-Name). - Decisão de roteamento: com o nome do modelo disponível em um cabeçalho de solicitação,
o GKE Inference Gateway pode usar construções da API Gateway
HTTPRoutepara 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 adequados. Em seguida, ele encaminha as informações de solicitação e endpoint para a extensão do seletor de endpoints para uma seleção refinada de endpoints no pool escolhido. - Roteamento final: a solicitação é encaminhada para a réplica de modelo específica selecionada pela extensão do seletor de endpoints.
Esse processo ajuda a garantir que, mesmo quando as informações do modelo estão no corpo da solicitação, o GKE Inference Gateway possa encaminhar o tráfego de maneira inteligente para os serviços de back-end corretos.
Configurar o roteamento baseado no corpo
A extensão de roteamento baseado no corpo (BBR, na sigla em inglês) para o GKE Inference Gateway é 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 injetados para roteamento.
Para ativar o roteamento baseado no corpo, implante a extensão BBR como um pod e integre-a 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 baseado no corpo
A extensão de roteamento baseado 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 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 do gateway.
Esse comando implanta os seguintes recursos:
- Um serviço e uma implantação para a extensão de roteamento baseado no corpo.
- Um recurso
GCPRoutingExtensione um recursoGCPHealthCheckPolicypara anexar a extensão de roteamento baseado no corpo ao recurso do gateway do GKE.
Configurar HTTPRoute para roteamento com reconhecimento de modelo
Depois que a extensão for implantada e configurada, você poderá 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 baseado no corpo, considere o seguinte:
Comportamento de falha fechada:a extensão de roteamento baseado no corpo foi projetada para operar no modo "falha fechada". Se a extensão não estiver disponível ou falhar ao processar uma solicitação, ela 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 rotear incorretamente. 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 introduzir 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 baseado 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
- Aprenda a personalizar o GKE Inference Gateway.
- Leia mais sobre o GKE Inference Gateway.
- Saiba mais sobre a API Gateway.