Configurer le routage basé sur le corps


Découvrez comment configurer le routage basé sur le corps, une fonctionnalité de GKE Inference Gateway qui vous permet de router les requêtes d'inférence en extrayant le nom du modèle directement du corps de la requête HTTP.

Cela est particulièrement utile pour les applications qui respectent des spécifications telles que l'API OpenAI, où l'identifiant du modèle est souvent intégré dans la charge utile de la requête plutôt que dans les en-têtes ou les chemins d'URL.

Fonctionnement du routage basé sur le corps

La passerelle d'inférence GKE implémente le routage basé sur le corps en tant qu'extension ext_proc du proxy Envoy. Le flux de requête est conçu pour s'intégrer de manière fluide à vos configurations d'API Gateway existantes :

  1. Réception de la requête : l'équilibreur de charge de couche 7 reçoit une requête d'inférence entrante.
  2. Extraction des paramètres du corps : l'équilibreur de charge de couche 7 transfère la requête à l'extension "Body to Header" (Corps vers en-tête). Cette extension extrait le paramètre model standard du corps de la requête HTTP.
  3. Injection d'en-tête : la valeur du paramètre de modèle extrait est ensuite injectée en tant que nouvel en-tête de requête (avec la clé X-Gateway-Model-Name).
  4. Décision de routage : le nom du modèle étant désormais disponible dans un en-tête de requête, la passerelle d'inférence GKE peut utiliser les constructions HTTPRoute de l'API Gateway existantes pour prendre des décisions de routage. Par exemple, les règles HTTPRoute peuvent correspondre à l'en-tête injecté pour diriger le trafic vers le InferencePool approprié.
  5. Sélection du point de terminaison : l'équilibreur de charge de couche 7 sélectionne le InferencePool (BackendService) et le groupe de points de terminaison appropriés. Il transmet ensuite les informations sur la requête et le point de terminaison à l'extension Endpoint Picker pour une sélection précise du point de terminaison dans le pool choisi.
  6. Routage final : la requête est routée vers le réplica de modèle spécifique sélectionné par l'extension Endpoint Picker.

Ce processus garantit que, même lorsque les informations du modèle sont profondément enfouies dans le corps de la requête, votre passerelle GKE Inference peut acheminer intelligemment le trafic vers les services de backend appropriés.

Configurer le routage basé sur le corps

L'extension Body-Based Routing (BBR) pour GKE Inference Gateway s'exécute en tant que service que vous gérez dans votre cluster Kubernetes. Du point de vue de l'équilibreur de charge de couche 7, l'extension BBR est un serveur gRPC externe. Lorsque l'équilibreur de charge doit inspecter le corps d'une requête pour déterminer le nom du modèle, il effectue un appel gRPC au service BBR. Le service BBR traite ensuite la requête et renvoie des informations à l'équilibreur de charge, telles que les en-têtes à injecter pour le routage.

Pour activer le routage basé sur le corps, déployez l'extension BBR en tant que pod et intégrez-la à l'aide des ressources GCPRoutingExtension et HTTPRoute.

Prérequis

Déployer le routeur basé sur le corps

L'extension de routage basé sur le corps est déployée en tant que déploiement et service Kubernetes, ainsi qu'une ressource GCPRoutingExtension dans votre cluster. Vous pouvez utiliser Helm pour simplifier l'installation.

Pour déployer les ressources requises pour le routeur basé sur le corps, exécutez la commande suivante :

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

Remplacez GATEWAY_NAME par le nom de votre ressource Gateway.

Cette commande déploie les ressources suivantes :

  • Un service et un déploiement pour l'extension de routage basé sur le corps.
  • Une ressource GCPRoutingExtension et une ressource GCPHealthCheckPolicy pour associer l'extension de routage basé sur le corps à votre ressource GKE Gateway.

Configurer HTTPRoute pour le routage tenant compte du modèle

Une fois l'extension déployée et configurée, vous pouvez définir des ressources HTTPRoute qui utilisent l'en-tête injecté (X-Gateway-Model-Name) pour les décisions de routage.

Voici un exemple de fichier manifeste HTTPRoute pour le routage tenant compte du modèle :

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"

Pour appliquer ce fichier manifeste à votre cluster, enregistrez-le sous le nom httproute-for-models.yaml et exécutez la commande suivante :

kubectl apply -f httproute-for-models.yaml

Remarques et limites

Lorsque vous planifiez l'implémentation du routage basé sur le corps, tenez compte des points suivants :

  • Comportement en cas d'échec : l'extension Body-Based Routing est conçue pour fonctionner en mode "fail-closed". Si l'extension n'est pas disponible ou ne parvient pas à traiter une requête, une erreur se produit (par exemple, un code de réponse 404 ou 503 si aucun backend par défaut n'est configuré) au lieu d'un routage incorrect. Assurez-vous que vos déploiements sont hautement disponibles pour maintenir la fiabilité du service.

  • Taille et streaming du corps de la requête : le traitement de corps de requête HTTP volumineux, en particulier avec le streaming activé, peut entraîner des complications. Si le proxy Envoy est forcé de diffuser en flux continu le corps de la requête (généralement pour les corps de plus de 250 ko), il peut être incapable d'injecter de nouveaux en-têtes. Cela peut entraîner des échecs de routage (par exemple, une erreur 404 si les règles de correspondance des en-têtes ne peuvent pas être appliquées).

  • Maintenance à long terme : l'extension Body-Based Routing s'exécute en tant que composant dans vos clusters GKE. Vous êtes responsable de la gestion de son cycle de vie, y compris des mises à niveau, des correctifs de sécurité et de la continuité de son fonctionnement.

Étape suivante