O LLMRoute é uma Custom Resource Definition (CRD) do Kubernetes fornecida pelo Alibaba Cloud Service Mesh (ASM) para roteamento declarativo de tráfego de LLM. Defina condições de correspondência com base em cabeçalhos de requisição, rótulos de source ou gateways e direcione o tráfego para provedores externos de Large Language Model (LLM) ou pools de inferência no cluster.
Ao contrário do VirtualService padrão do Istio, o LLMRoute foi desenvolvido especificamente para cargas de trabalho de LLM. Ele oferece suporte nativo a roteamento por host de provedor e backends InferencePool, eliminando a necessidade de configurações complexas de virtual service.
Para obter um tutorial completo, consulte Roteamento de tráfego: Use o ASM para gerenciar tráfego de LLM.
Configuração de exemplo
O manifesto a seguir cria um LLMRoute que envia o tráfego de assinantes para o DashScope por meio de uma regra dedicada. Todo o tráfego restante segue para o backend padrão:
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
Hierarquia de tipos
O diagrama a seguir ilustra a relação entre os tipos do 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
Recurso de nível superior que associa um host de destino a um conjunto de regras de roteamento.
|
Campo |
Tipo |
Descrição |
|
|
|
URL do host de destino. Deve ser única entre os diferentes provedores de LLM. |
|
|
|
Gateways aos quais essas regras se aplicam. O comportamento é idêntico ao campo |
|
|
[]LLMRule |
Lista ordenada de regras de roteamento. |
LLMRule
Regra de roteamento individual que combina condições de correspondência com backends de destino.
Presente em: LLMRoute.rules
|
Campo |
Tipo |
Descrição |
|
|
|
Nome da regra. Use um nome descritivo (por exemplo, |
|
|
Condições que a requisição deve atender para aplicar esta regra. |
|
|
|
Backends que recebem o tráfego correspondente a esta regra. |
Exemplo -- rotear tráfego de assinantes para um provedor específico:
rules:
- name: vip-route
matches:
- headers:
user-type:
exact: subscriber
backendRefs:
- providerHost: dashscope.aliyuncs.com
LLMRequestMatch
Condições obrigatórias para uma requisição.
Presente em: LLMRule.matches
| Campo | Tipo | Descrição |
|---|---|---|
Headers | map[String]StringMatch | Cabeçalhos HTTP para correspondência. Cada entrada define um nome de cabeçalho e um critério de correspondência (exact, prefix ou regex). |
SourceLabels | map[String]String | Rótulos na carga de trabalho de source correspondentes às requisições. |
Gateways | []String | Gateways que definem o escopo desta correspondência. Restringe a regra ao tráfego proveniente de gateways específicos. |
LLMBackendRef
Referencia um backend que atende às requisições correspondentes. Liste vários backends com pesos diferentes para dividir o tráfego.
Presente em: LLMRule.backendRefs
|
Campo |
Tipo |
Descrição |
|
|
|
URL do host de um provedor externo de LLM (por exemplo, |
|
|
|
Peso relativo do tráfego. Com múltiplos backends listados, o sistema distribui o tráfego proporcionalmente ao peso. |
|
|
Referência a um objeto de backend no cluster. Mutuamente exclusivo com |
Defina ProviderHost ou BackendRef por entrada — nunca ambos.
Use
ProviderHostpara rotear para uma API externa de LLM.Use
BackendRefpara rotear para umInferencePoolno cluster.
BackendObjectReference
Identifica um objeto de backend no cluster pelas coordenadas do Kubernetes.
Presente em: LLMBackendRef.BackendRef
|
Campo |
Tipo |
Descrição |
|
|
|
Grupo ao qual o objeto de backend pertence. |
|
|
|
Tipo do objeto de backend. |
|
|
|
Nome do recurso. |
|
|
|
Namespace onde o recurso reside. |
|
|
|
Porta exposta pelo backend. |
Atualmente, apenas recursos InferencePool podem ser referenciados como objetos de backend.
Próximos passos
Roteamento de tráfego: Use o ASM para gerencie tráfego de LLM — exemplo de ponta a ponta sobre como configurar o
LLMRoutepara tráfego de LLM em produçãoReferência de StringMatch do Istio — tipos de correspondência suportados para o campo
Headers(exact,prefix,regex)