Aprende a configurar el enrutamiento basado en el cuerpo, una capacidad de GKE Inference Gateway que te permite enrutar solicitudes de inferencia mediante la extracción del nombre del modelo directamente del cuerpo de la solicitud HTTP.
Esto es particularmente útil para las aplicaciones que cumplen con especificaciones como la API de OpenAI, en la que el identificador del modelo suele estar integrado en la carga útil de la solicitud en lugar de en los encabezados o las rutas de URL.
Cómo funciona el enrutamiento basado en el cuerpo
GKE Inference Gateway implementa el enrutamiento basado en el cuerpo como una extensión ext_proc del proxy de Envoy. El flujo de solicitudes está diseñado para integrarse sin problemas con las configuraciones existentes de la API de Gateway:
- Recepción de solicitudes: El balanceador de cargas de capa 7 recibe una solicitud de inferencia entrante.
- Extracción de parámetros del cuerpo: El balanceador de cargas de capa 7 reenvía la
solicitud a la extensión Body to Header. Esta extensión extrae el parámetro
modelestándar del cuerpo de la solicitud HTTP. - Inserción de encabezados: El valor del parámetro del modelo extraído se inserta
como un encabezado de la solicitud nuevo (con la clave
X-Gateway-Model-Name). - Decisión de enrutamiento: Con el nombre del modelo ahora disponible en un encabezado de solicitud, GKE Inference Gateway puede usar las construcciones existentes de la API de Gateway
HTTPRoutepara tomar decisiones de enrutamiento. Por ejemplo, las reglasHTTPRoutepueden coincidir con el encabezado insertado para dirigir el tráfico alInferencePooladecuado. - Selección de extremos: El balanceador de cargas de capa 7 selecciona el
InferencePool(BackendService) y el grupo de extremos adecuados. Luego, reenvía la información de la solicitud y el extremo a la extensión Endpoint Picker para la selección detallada de extremos dentro del grupo elegido. - Enrutamiento final: La solicitud se enruta a la réplica de modelo específica seleccionada por la extensión Endpoint Picker.
Este proceso ayuda a garantizar que, incluso cuando la información del modelo se encuentre en el cuerpo de la solicitud, tu GKE Inference Gateway pueda enrutar el tráfico de forma inteligente a los servicios de backend correctos.
Configura el enrutamiento basado en el cuerpo
La extensión de enrutamiento basado en el cuerpo (BBR) para GKE Inference Gateway se ejecuta como un servicio que administras dentro de tu clúster de Kubernetes. Desde la perspectiva del balanceador de cargas de capa 7, la extensión BBR es un servidor gRPC externo. Cuando el balanceador de cargas necesita inspeccionar el cuerpo de una solicitud para determinar el nombre del modelo, realiza una llamada gRPC al servicio BBR. Luego, el servicio BBR procesa la solicitud y muestra información al balanceador de cargas, como los encabezados que se insertarán para el enrutamiento.
Para habilitar el enrutamiento basado en el cuerpo, implementa la extensión BBR como un Pod y la integra con los recursos GCPRoutingExtension y HTTPRoute.
Requisitos previos
Asegúrate de tener un clúster de GKE (versión 1.32 o posterior).
Sigue la guía principal para configurar GKE Inference Gateway.
Implementa el router basado en el cuerpo
La extensión de enrutamiento basado en el cuerpo se implementa como un Deployment y un Service de Kubernetes, junto con un recurso GCPRoutingExtension dentro de tu clúster.
Puedes usar Helm para una instalación simplificada.
Para implementar los recursos necesarios para el router basado en el cuerpo, ejecuta el siguiente 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
Reemplaza GATEWAY_NAME por el nombre de tu recurso de Gateway.
Este comando implementa los siguientes recursos:
- Un Service y un Deployment para la extensión de enrutamiento basado en el cuerpo
- Un recurso
GCPRoutingExtensiony un recursoGCPHealthCheckPolicypara adjuntar la extensión de enrutamiento basado en el cuerpo a tu recurso de GKE Gateway
Configura HTTPRoute para el enrutamiento con reconocimiento del modelo
Una vez que la extensión se implementa y configura, puedes definir recursos HTTPRoute que usen el encabezado insertado (X-Gateway-Model-Name) para las decisiones de enrutamiento.
A continuación, se muestra un ejemplo de manifiesto HTTPRoute para el enrutamiento con reconocimiento del 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 manifiesto a tu clúster, guárdalo como httproute-for-models.yaml y ejecuta el siguiente comando:
kubectl apply -f httproute-for-models.yaml
Consideraciones y limitaciones
Cuando planifiques la implementación del enrutamiento basado en el cuerpo, ten en cuenta lo siguiente:
Comportamiento de cierre ante fallas: La extensión de enrutamiento basado en el cuerpo está diseñada para operar en un modo de "cierre ante fallas". Si la extensión no está disponible o no puede procesar una solicitud, se produce un error (por ejemplo, un código de respuesta 404 o 503 si no se configura un backend predeterminado) en lugar de enrutar de forma incorrecta. Asegúrate de que tus implementaciones tengan alta disponibilidad para mantener la confiabilidad del servicio.
Tamaño del cuerpo de la solicitud y transmisión: El procesamiento de cuerpos de solicitudes HTTP grandes, en especial con la transmisión habilitada, puede generar complejidades. Si el proxy de Envoy se ve obligado a transmitir el cuerpo de la solicitud (por lo general, para cuerpos de más de 250 KB), es posible que no pueda insertar encabezados nuevos. Esto puede provocar fallas de enrutamiento (por ejemplo, un error 404 si no se pueden aplicar las reglas de coincidencia de encabezados).
Mantenimiento a largo plazo: La extensión de enrutamiento basado en el cuerpo se ejecuta como un componente dentro de tus clústeres de GKE. Eres responsable de la administración de su ciclo de vida, incluidas las actualizaciones, los parches de seguridad y de garantizar su funcionamiento continuo.
¿Qué sigue?
- Obtén información para personalizar GKE Inference Gateway.
- Obtén más información sobre GKE Inference Gateway.
- Obtén más información sobre la API de Gateway.