LLMRoute es una definición de recurso personalizado (CRD) de Kubernetes que proporciona Alibaba Cloud Service Mesh (ASM) para el enrutamiento declarativo de tráfico de LLM. Defina condiciones de coincidencia basadas en encabezados de solicitud, etiquetas de origen o gateways y, a continuación, enrute el tráfico hacia proveedores externos de modelos grandes de lenguaje (LLM) o hacia pools de inference dentro del clúster.
A diferencia de un VirtualService estándar de Istio, LLMRoute está diseñado específicamente para cargas de trabajo de LLM. Admite de forma nativa el enrutamiento por host de proveedor y backends de InferencePool, lo que elimina la necesidad de configuraciones complejas de servicios virtuales.
Para consultar una guía completa, consulte Traffic routing: Use ASM to manage LLM traffic.
Configuración de ejemplo
El siguiente manifiesto crea un LLMRoute que envía el tráfico de suscriptores a DashScope mediante una regla dedicada. El resto del tráfico se dirige al backend predeterminado:
apiVersion: istio.alibabacloud.com/v1beta1
kind: LLMRoute
metadata:
name: dashscope-route
spec:
host: dashscope.aliyuncs.com # Must be unique across LLM providers
rules:
- name: vip-route
matches:
- headers:
user-type:
exact: subscriber # Match only subscriber requests
backendRefs:
- providerHost: dashscope.aliyuncs.com
- backendRefs: # Default rule (no match conditions)
- providerHost: dashscope.aliyuncs.com
Jerarquía de tipos
El siguiente diagrama muestra cómo se relacionan los tipos del CRD entre sí:
LLMRoute
├── host (String)
├── gateways ([]String)
└── rules ([]LLMRule)
├── name (String)
├── matches ([]LLMRequestMatch)
│ ├── Headers (map[String]StringMatch)
│ ├── SourceLabels (map[String]String)
│ └── Gateways ([]String)
└── backendRefs ([]LLMBackendRef)
├── ProviderHost (String) * mutually exclusive
├── Weight (Int32)
└── BackendRef (BackendObjectReference) * mutually exclusive
├── Group (String)
├── Kind (String)
├── Name (String)
├── Namespace (String)
└── Port (Int32)
LLMRoute
Recurso de nivel superior que vincula un host de destino con un conjunto de reglas de enrutamiento.
|
Campo |
Tipo |
Descripción |
|
|
|
URL del host de destino. Debe ser única para cada proveedor de LLM. |
|
|
|
Gateways a los que se aplican estas reglas. Se comporta igual que |
|
|
[]LLMRule |
Lista ordenada de reglas de enrutamiento. |
LLMRule
Regla de enrutamiento individual que asocia condiciones de coincidencia con backends de destino.
Aparece en: LLMRoute.rules
|
Campo |
Tipo |
Descripción |
|
|
|
Nombre de la regla. Utilice un nombre descriptivo (por ejemplo, |
|
|
Condiciones que debe cumplir una solicitud para que se aplique esta regla. |
|
|
|
Backends que reciben el tráfico coincidente con esta regla. |
Ejemplo: enrutar tráfico de suscriptores a un proveedor específico:
rules:
- name: vip-route
matches:
- headers:
user-type:
exact: subscriber
backendRefs:
- providerHost: dashscope.aliyuncs.com
LLMRequestMatch
Condiciones que debe cumplir una solicitud.
Aparece en: LLMRule.matches
| Campo | Tipo | Descripción |
|---|---|---|
Headers | map[String]StringMatch | Encabezados HTTP con los que se compara. Cada entrada define un nombre de encabezado y un criterio de coincidencia (exact, prefix o regex). |
SourceLabels | map[String]String | Etiquetas en la carga de trabajo de origen con las que deben coincidir las solicitudes. |
Gateways | []String | Gateways que limitan el alcance de esta coincidencia. Restringe la regla al tráfico que ingresa a través de gateways específicos. |
LLMBackendRef
Hace referencia a un backend que atiende las solicitudes coincidentes. Liste varios backends con distintos pesos para dividir el tráfico.
Aparece en: LLMRule.backendRefs
|
Campo |
Tipo |
Descripción |
|
|
|
URL del host de un proveedor externo de LLM (por ejemplo, |
|
|
|
Peso relativo del tráfico. Cuando se listan varios backends, el tráfico se distribuye proporcionalmente según el peso. |
|
|
Referencia a un objeto de backend dentro del clúster. Es mutuamente excluyente con |
Establezca ProviderHost o BackendRef por entrada, pero no ambos.
Utilice
ProviderHostpara enrutar hacia una API externa de LLM.Utilice
BackendRefpara enrutar hacia unInferencePooldentro del clúster.
BackendObjectReference
Identifica un objeto de backend dentro del clúster mediante sus coordenadas de Kubernetes.
Aparece en: LLMBackendRef.BackendRef
|
Campo |
Tipo |
Descripción |
|
|
|
Grupo al que pertenece el objeto de backend. |
|
|
|
Tipo del objeto de backend. |
|
|
|
Nombre del recurso. |
|
|
|
Namespace donde reside el recurso. |
|
|
|
Puerto expuesto por el backend. |
Actualmente, solo los recursos InferencePool pueden referenciarse como objetos de backend.
Pasos siguientes
Enrutamiento de tráfico: uso de ASM para gestionar el tráfico de LLM — ejemplo integral de configuración de
LLMRoutepara tráfico de LLM en producciónReferencia de StringMatch de Istio — tipos de coincidencia compatibles para el campo
Headers(exact,prefix,regex)