Consulta cómo configurar el enrutamiento basado en el cuerpo, una función de GKE Inference Gateway que te permite enrutar solicitudes de inferencia extrayendo el nombre del modelo directamente del cuerpo de la solicitud HTTP.
Esto resulta especialmente útil en aplicaciones que cumplen especificaciones como la API de OpenAI, donde el identificador del modelo suele estar insertado 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 ext_proc
extensión del proxy de Envoy. El flujo de solicitudes se ha diseñado para integrarse
sin problemas con las configuraciones de la API Gateway que ya tengas:
- Recepción de la solicitud: el balanceador de carga de la capa 7 recibe una solicitud de inferencia entrante.
- Extracción de parámetros del cuerpo: el balanceador de carga de capa 7 reenvía la solicitud a la extensión de cuerpo a encabezado. Esta extensión extrae el parámetro
model
estándar del cuerpo de la solicitud HTTP. - Inyección de encabezado: el valor del parámetro de modelo extraído se inyecta como un nuevo encabezado de solicitud (con la clave
X-Gateway-Model-Name
). - Decisión de enrutamiento: ahora que el nombre del modelo está disponible en un encabezado de solicitud, la pasarela de inferencia de GKE puede usar las
HTTPRoute
construcciones de la API Gateway para tomar decisiones de enrutamiento. Por ejemplo, las reglasHTTPRoute
pueden compararse con el encabezado insertado para dirigir el tráfico alInferencePool
adecuado. - Selección de endpoints: el balanceador de carga de capa 7 selecciona el
InferencePool
(BackendService) y el grupo de endpoints adecuados. A continuación, reenvía la información de la solicitud y del endpoint a la extensión Endpoint Picker para seleccionar el endpoint con precisión en el grupo elegido. - Ruta final: la solicitud se dirige a la réplica del modelo específico seleccionada por la extensión Endpoint Picker.
Este proceso asegura que, incluso cuando la información del modelo se encuentra en lo más profundo del cuerpo de la solicitud, tu GKE Inference Gateway pueda enrutar el tráfico de forma inteligente a los servicios backend correctos.
Configurar el enrutamiento basado en el cuerpo
La extensión de enrutamiento basado en el cuerpo (BBR) de GKE Inference Gateway se ejecuta como un servicio que gestionas en tu clúster de Kubernetes. Desde la perspectiva del balanceador de carga de capa 7, la extensión BBR es un servidor gRPC externo. Cuando el balanceador de carga necesita inspeccionar el cuerpo de una solicitud para determinar el nombre del modelo, hace una llamada gRPC al servicio BBR. A continuación, el servicio BBR procesa la solicitud y devuelve información al balanceador de carga, como los encabezados que se deben insertar para el enrutamiento.
Para habilitar el enrutamiento basado en el cuerpo, despliega la extensión BBR como un pod e intégrala mediante 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.
Desplegar el router basado en el cuerpo
La extensión de enrutamiento basado en el cuerpo se despliega como un despliegue y un servicio de Kubernetes, junto con un recurso GCPRoutingExtension
en tu clúster.
Puedes usar Helm para simplificar la instalación.
Para desplegar 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
Sustituye GATEWAY_NAME
por el nombre de tu recurso Gateway.
Este comando implementa los siguientes recursos:
- Un servicio y un despliegue para la extensión de enrutamiento basado en el cuerpo.
- Un recurso
GCPRoutingExtension
y un recursoGCPHealthCheckPolicy
para adjuntar la extensión de enrutamiento basado en el cuerpo a tu recurso de puerta de enlace de GKE.
Configurar HTTPRoute
para el enrutamiento en función del modelo
Una vez que la extensión se haya implementado y configurado, puedes definir recursos HTTPRoute
que usen el encabezado insertado (X-Gateway-Model-Name
) para tomar decisiones de enrutamiento.
A continuación, se muestra un ejemplo de manifiesto HTTPRoute
para el enrutamiento basado en modelos:
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 de la función de enrutamiento basado en el cuerpo, ten en cuenta lo siguiente:
Comportamiento de cierre en caso de fallo: la extensión de enrutamiento basado en el cuerpo se ha diseñado para funcionar en modo de cierre en caso de fallo. 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 ha configurado ningún backend predeterminado) en lugar de enrutarla incorrectamente. Asegúrate de que tus implementaciones tengan una alta disponibilidad para mantener la fiabilidad del servicio.
Tamaño y streaming del cuerpo de la solicitud: procesar cuerpos de solicitudes HTTP grandes, sobre todo si el streaming está habilitado, puede generar complejidades. Si el proxy de Envoy se ve obligado a transmitir el cuerpo de la solicitud (normalmente, para cuerpos de más de 250 KB), es posible que no pueda insertar nuevos encabezados. 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 de enrutamiento basado en el cuerpo se ejecuta como un componente en tus clústeres de GKE. Eres responsable de la gestión de su ciclo de vida, incluidas las actualizaciones y los parches de seguridad, así como de asegurar su funcionamiento continuo.
Siguientes pasos
- Consulta cómo personalizar GKE Inference Gateway.
- Consulta más información sobre GKE Inference Gateway.
- Monitoriza tus recursos de Gateway.
- Más información sobre la API Gateway