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 :
- Réception de la requête : l'équilibreur de charge de couche 7 reçoit une requête d'inférence entrante.
- 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. - 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
). - 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èglesHTTPRoute
peuvent correspondre à l'en-tête injecté pour diriger le trafic vers leInferencePool
approprié. - 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. - 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
Assurez-vous de disposer d'un cluster GKE (version 1.32 ou ultérieure).
Suivez le guide principal pour configurer GKE Inference Gateway.
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 ressourceGCPHealthCheckPolicy
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
- Découvrez comment personnaliser la passerelle d'inférence GKE.
- En savoir plus sur GKE Inference Gateway
- Surveillez vos ressources Gateway.
- En savoir plus sur l'API Gateway