LLMRoute est une définition de ressource personnalisée (CRD) Kubernetes fournie par Alibaba Cloud Service Mesh (ASM) pour le routage déclaratif du trafic LLM. Définissez des conditions de correspondance basées sur les en-têtes de requête, les libellés source ou les passerelles, puis acheminez le trafic vers des fournisseurs externes de grands modèles de langage (LLM) ou vers des pools d'inférence au sein du cluster.
Contrairement à un objet Istio standard VirtualService, l'objet LLMRoute est conçu spécifiquement pour les charges de travail LLM. Il prend nativement en charge le routage vers les hôtes des fournisseurs et les backends InferencePool, ce qui élimine le besoin de configurations complexes de service virtuel.
Pour une procédure détaillée complète, consultez la rubrique Routage du trafic : Utiliser ASM pour gérer le trafic LLM.
Exemple de configuration
Le manifeste suivant crée une ressource LLMRoute qui dirige le trafic des abonnés vers DashScope via une règle dédiée. Tout autre trafic est transmis au backend par défaut :
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
Hiérarchie des types
Le diagramme suivant illustre les relations entre les différents types de CRD :
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
Ressource de niveau supérieur qui associe un hôte de destination à un ensemble de règles de routage.
| Champ | Type | Description |
|---|---|---|
host |
String |
URL de l'hôte de destination. Doit être unique parmi les différents fournisseurs LLM. |
gateways |
[]String |
Passerelles auxquelles ces règles s'appliquent. Le comportement est identique à celui du champ gateways dans un objet Istio VirtualService. |
rules |
[]LLMRule | Liste ordonnée des règles de routage. |
LLMRule
Règle de routage unique qui associe des conditions de correspondance à des cibles de backend.
Apparaît dans : LLMRoute.rules
| Champ | Type | Description |
|---|---|---|
name |
String |
Nom de la règle. Utilisez un nom descriptif (par exemple, vip-route ou default). |
matches |
[]LLMRequestMatch | Conditions qu'une requête doit satisfaire pour que cette règle s'applique. |
backendRefs |
[]LLMBackendRef | Backends qui reçoivent le trafic correspondant à cette règle. |
Exemple — Acheminer le trafic des abonnés vers un fournisseur spécifique :
rules:
- name: vip-route
matches:
- headers:
user-type:
exact: subscriber
backendRefs:
- providerHost: dashscope.aliyuncs.com
LLMRequestMatch
Conditions qu'une requête doit remplir.
Apparaît dans : LLMRule.matches
| Champ | Type | Description |
|---|---|---|
Headers | map[String]StringMatch | En-têtes HTTP à faire correspondre. Chaque entrée définit un nom d'en-tête et un critère de correspondance (exact, prefix ou regex). |
SourceLabels | map[String]String | Libellés de la charge de travail source auxquels les requêtes doivent correspondre. |
Gateways | []String | Passerelles permettant de délimiter cette correspondance. Limite la règle au trafic entrant par des passerelles spécifiques. |
LLMBackendRef
Référence un backend qui traite les requêtes correspondantes. Listez plusieurs backends avec des poids différents pour répartir le trafic.
Apparaît dans : LLMRule.backendRefs
| Champ | Type | Description |
|---|---|---|
ProviderHost |
String |
URL de l'hôte d'un fournisseur LLM externe (par exemple, dashscope.aliyuncs.com). Mutuellement exclusif avec BackendRef. |
Weight |
Int32 |
Poids relatif du trafic. Lorsque plusieurs backends sont listés, le trafic est distribué proportionnellement selon le poids. |
BackendRef |
BackendObjectReference | Référence à un objet backend situé dans le cluster. Mutuellement exclusif avec ProviderHost. |
Définissez soit ProviderHost, soit BackendRef par entrée, mais pas les deux simultanément.
Utilisez
ProviderHostpour router vers une API LLM externe.Utilisez
BackendRefpour router vers un objetInferencePoolsitué dans le cluster.
BackendObjectReference
Identifie un objet backend situé dans le cluster grâce à ses coordonnées Kubernetes.
Apparaît dans : LLMBackendRef.BackendRef
| Champ | Type | Description |
|---|---|---|
Group |
String |
Groupe auquel appartient l'objet backend. |
Kind |
String |
Type de l'objet backend. |
Name |
String |
Nom de la ressource. |
Namespace |
String |
Espace de noms où réside la ressource. |
Port |
Int32 |
Port exposé par le backend. |
Actuellement, seules les ressources InferencePool peuvent être référencées en tant qu'objets backend.
Étapes suivantes
Routage du trafic : Utiliser ASM pour gérer le trafic LLM — Exemple complet de configuration de
LLMRoutepour le trafic LLM en productionRéférence Istio StringMatch — Types de correspondance pris en charge pour le champ
Headers(exact,prefix,regex)