Aprende a configurar el enrutamiento basado en el cuerpo, una capacidad de la puerta de enlace de inferencia de GKE que te permite enrutar solicitudes de inferencia extrayendo el 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
La puerta de enlace de inferencia de GKE 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 la solicitud: 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
model
estándar del cuerpo de la solicitud HTTP. - Inyección de encabezado: Luego, el valor del parámetro del modelo extraído se inyecta como un nuevo encabezado de solicitud (con la clave
X-Gateway-Model-Name
). - Decisión de enrutamiento: Con el nombre del modelo ahora disponible en un encabezado de solicitud, la puerta de enlace de inferencia de GKE puede usar construcciones
HTTPRoute
existentes de la API de Gateway para tomar decisiones de enrutamiento. Por ejemplo, las reglas deHTTPRoute
pueden coincidir con el encabezado insertado para dirigir el tráfico alInferencePool
adecuado. - 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 realizar una selección detallada del extremo dentro del grupo elegido. - Enrutamiento final: La solicitud se enruta a la réplica del modelo específico que seleccionó la extensión Endpoint Picker.
Este proceso garantiza que, incluso cuando la información del modelo se encuentre en lo profundo del cuerpo de la solicitud, tu puerta de enlace de inferencia de GKE 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 Body-Based Routing (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 de BBR es un servidor de gRPC externo. Cuando el balanceador de cargas necesita inspeccionar el cuerpo de una solicitud para determinar el nombre del modelo, realiza una llamada a gRPC al servicio de BBR. Luego, el servicio de BBR procesa la solicitud y devuelve información al balanceador de cargas, como los encabezados que se deben insertar para el enrutamiento.
Para habilitar el enrutamiento basado en el cuerpo, implementa la extensión de 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 la puerta de enlace de GKE Inference.
Implementa el router basado en el cuerpo
La extensión de enrutamiento basado en el cuerpo se implementa como un objeto 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 servicio y una Deployment para la extensión de Body-Based Routing.
- Un recurso
GCPRoutingExtension
y un recursoGCPHealthCheckPolicy
para adjuntar la extensión de enrutamiento basado en el cuerpo a tu recurso de GKE Gateway
Configura HTTPRoute
para el enrutamiento según el modelo
Después de implementar y configurar la extensión, 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 de HTTPRoute
para el enrutamiento que tiene en cuenta el 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 Body-Based Routing está diseñada para funcionar 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 configuró ningún 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 y transmisión del cuerpo de la solicitud: 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 errores de enrutamiento (por ejemplo, un error 404 si no se pueden aplicar las reglas de coincidencia de encabezado).
Mantenimiento a largo plazo: La extensión Body-Based Routing 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 la garantía de su funcionamiento continuo.
¿Qué sigue?
- Obtén más información para personalizar GKE Inference Gateway.
- Obtén más información sobre GKE Inference Gateway.
- Supervisa tus recursos de Gateway.
- Obtén más información sobre la API de Gateway.