Configure o encaminhamento com base no corpo


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:

  1. Receção do pedido: o equilibrador de carga da camada 7 recebe um pedido de inferência de entrada.
  2. 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.
  3. 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).
  4. 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 regras HTTPRoute podem corresponder ao cabeçalho injetado para direcionar o tráfego para o InferencePool adequado.
  5. 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.
  6. 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

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 recurso GCPHealthCheckPolicy 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 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?