Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Referência de campos ASMSwimLaneGroup e ASMSwimLane

Última atualização: Jun 28, 2026

O Service Mesh (ASM) oferece duas CustomResourceDefinitions (CRDs) para gerenciar faixas de tráfego: ASMSwimLaneGroup e ASMSwimLane. Juntas, elas permitem isolar versões específicas de serviços ou serviços com determinadas características em ambientes de execução independentes, chamados faixas de tráfego, e rotear as requisições correspondentes para essas versões.

Como essas CRDs funcionam em conjunto

Um ASMSwimLaneGroup define o que isolar: os serviços participantes das faixas de tráfego e o gateway de entrada responsável por rotear as requisições. Já um ASMSwimLane define como isolar: quais versões de pods pertencem a uma faixa e quais regras de roteamento se aplicam.

A relação entre eles é a seguinte:

  • Um único ASMSwimLaneGroup agrupa vários serviços e especifica um gateway de entrada compartilhado.

  • Vários recursos ASMSwimLane associam-se a esse grupo por meio do rótulo swimlane-group: <group-name>. Cada faixa direciona o tráfego para uma versão específica dos serviços agrupados.

O ASM suporta dois modos de faixa:

  • Modo estrito (isPermissive: false ou não definido) — Todas as faixas devem conter todos os serviços definidos no grupo.

  • Modo permissivo (isPermissive: true) — As faixas podem conter um subconjunto dos serviços do grupo. Requisições para serviços ausentes retornam à faixa de base.

Exemplo de configuração

O YAML a seguir cria um grupo de faixas chamado mock para três serviços (mocka, mockb, mockc) no namespace default. Duas faixas, v1 e v2, correspondem aos pods pelo rótulo version. Um serviço virtual é gerado a partir do gateway Istio ingressgateway em istio-system para rotear requisições para cada faixa.

apiVersion: istio.alibabacloud.com/v1
kind: ASMSwimLaneGroup
metadata:
  name: mock
spec:
  ingress:
    gateway:
      name: ingressgateway
      namespace: istio-system
      type: ASM
  services:
  - name: mocka
    namespace: default
  - name: mockb
    namespace: default
  - name: mockc
    namespace: default
---
apiVersion: istio.alibabacloud.com/v1
kind: ASMSwimLane
metadata:
  labels:
    swimlane-group: mock
  name: v1
spec:
  ingressRules:
  - hosts:
    - '*'
    match:
      uri:
        exact: /mock
    name: r1
    online: true
    route:
      destination:
        host: mocka.default.svc.cluster.local
  labelSelector:
    version: v1
---
apiVersion: istio.alibabacloud.com/v1
kind: ASMSwimLane
metadata:
  labels:
    swimlane-group: mock
  name: v2
spec:
  ingressRules:
  - hosts:
    - '*'
    match:
      uri:
        exact: /mock
    name: r2
    online: true
    route:
      destination:
        host: mocka.default.svc.cluster.local
  labelSelector:
    version: v2

Ao aplicar esses recursos, as chamadas entre mocka, mockb e mockc permanecem na mesma versão. A faixa v1 roteia apenas para pods v1, e a faixa v2 roteia apenas para pods v2.

Campos do ASMSwimLaneGroup

O ASMSwimLaneGroup define um grupo de faixas de tráfego, ou seja, a configuração compartilhada para serviços e roteamento de entrada em várias faixas.

ASMSwimLaneGroupSpec

A seção spec contém a configuração principal.

Campo

Tipo

Obrigatório

Descrição

services

ClusterServiceRef[]

Sim

Serviços em um cluster Kubernetes participantes das faixas de tráfego.

ingress

SwimLaneGroupIngressConfiguration

Sim

Configuração do gateway de entrada para rotear requisições para diferentes versões de serviço.

isPermissive

bool

Não

Modo do grupo de faixas. true: modo permissivo. false ou não definido: modo estrito. Para mais detalhes, consulte Visão geral das faixas de tráfego.

permissiveModeConfiguration

PermissiveSwimLaneGroupConfiguration

Não

Configurações do modo permissivo. Obrigatório quando isPermissive for true.

ClusterServiceRef

Referencia um serviço Kubernetes participante das faixas de tráfego.

Campo

Tipo

Obrigatório

Descrição

name

string

Sim

Nome do serviço Kubernetes.

namespace

string

Sim

Namespace do serviço Kubernetes.

cluster

ClusterRef

Não

Referência ao cluster Kubernetes. Utilize este campo quando a instância do ASM gerenciar vários clusters.

ClusterRef

Identifica um cluster Kubernetes adicionado à instância do ASM.

Campo

Tipo

Obrigatório

Descrição

name

string

Não

Nome de exibição do cluster Kubernetes.

id

string

Não

ID do cluster Kubernetes.

SwimLaneGroupIngressConfiguration

Configura o gateway de entrada que roteia requisições para os serviços no grupo de faixas.

CampoTipoObrigatórioDescrição
gatewaySwimLaneGatewayConfigurationSimGateway Istio associado ao gateway de entrada.
ingressRoutingSwimLaneGroupIngressRouteConfigurationNãoEstratégia de roteamento de requisições para o grupo de faixas.
Nota

Requer ASM v1.21.6.92 ou posterior.

SwimLaneGatewayConfiguration

Especifique o gateway Istio associado ao gateway de entrada.

CampoTipoObrigatórioDescrição
namestringSimNome do gateway Istio.
namespacestringSimNamespace do gateway Istio.
typestringSimTipo do gateway Istio. Defina como ASM, indicando um gateway Istio fornecido pelo ASM.

SwimLaneGroupIngressRouteConfiguration

Defina a estratégia de roteamento de requisições para o grupo de faixas.

Campo

Tipo

Obrigatório

Descrição

ingressRoutingStrategy

string

Não

Estratégia de roteamento. Valores válidos: rule_based (padrão) — cada faixa define suas próprias regras de roteamento via ingressRules. weighted — as requisições são distribuídas entre as faixas por peso, usando uma regra de roteamento compartilhada.

weightedRoutingRule

WeightedSwimLaneIngressConfiguration

Não

Regra unificada de correspondência de requisições para roteamento baseado em peso. Entra em vigor apenas quando ingressRoutingStrategy for weighted.

WeightedSwimLaneIngressConfiguration

Defina a regra unificada de correspondência de requisições usada no roteamento baseado em peso.

Campo

Tipo

Obrigatório

Descrição

hosts

[]string

Sim

Hosts para correspondência. Devem ser declarados no gateway Istio associado ao grupo de faixas.

requestMatches

SwimLaneIngressRequestMatch

Não

Condições de correspondência de URI e cabeçalho.

PermissiveSwimLaneGroupConfiguration

Configure o modo permissivo para um grupo de faixas de tráfego. Obrigatório quando isPermissive for true.

Campo

Tipo

Obrigatório

Descrição

routeHeader

string

Sim

Cabeçalho de requisição que determina a qual faixa uma requisição pertence ao percorrer a cadeia de chamadas. Requisições que entram pelo gateway de entrada devem incluir este cabeçalho.

traceHeader

string

Sim

Cabeçalho de passagem ponta a ponta (E2E) propagado pela cadeia de chamadas. Deve ser único por requisição quando diferente de routeHeader. Exemplo: x-b3-trace-id.

fallbackTarget

string

Não

Nome da faixa de base. Quando uma requisição não consegue alcançar a versão do serviço de destino em sua faixa designada, ela retorna ao mesmo serviço nesta faixa de base.

Campos do ASMSwimLane

O ASMSwimLane define uma única faixa de tráfego, ou seja, um conjunto de versões de serviço isoladas em conjunto. Associe uma faixa a um grupo de faixas adicionando o rótulo swimlane-group: <group-name> ao recurso ASMSwimLane.

ASMSwimLaneSpec

A seção spec contém a configuração principal.

Campo

Tipo

Obrigatório

Descrição

labelSelector

map

Sim

Rótulos usados para corresponder a pods dos serviços nesta faixa. Geralmente utiliza rótulos de versão, como version: v1.

services

ClusterServiceRef[]

Não

Serviços implantados nesta faixa. No modo estrito, omita este campo — todas as faixas devem incluir todos os serviços do grupo. No modo permissivo, especifique os serviços desta faixa. A lista deve ser um subconjunto do campo services do grupo. Requisições para serviços ausentes nesta faixa são encaminhadas para a faixa de base.

ingressRules

SwimLaneIngressRule[]

Não

Regras de roteamento convertidas automaticamente pelo ASM em um serviço virtual para o gateway de entrada. Se omitido, crie um serviço virtual manualmente.

ingressWeight

SwimLaneIngressWeight

Não

Peso de roteamento para esta faixa quando o grupo usa roteamento baseado em peso (ingressRoutingStrategy: weighted).

SwimLaneIngressRule

Defina uma regra de roteamento para o gateway de entrada. O ASM converte cada regra em parte de um serviço virtual.

Campo

Tipo

Obrigatório

Descrição

online

bool

Sim

Indica se esta regra está ativa. O serviço virtual é gerado apenas quando este valor for true.

hosts

string[]

Sim

Hosts para correspondência. Mapeia para o campo hosts no serviço virtual gerado.

name

string

Não

Nome desta regra de roteamento. Mapeia para o campo name sob http no serviço virtual gerado.

match

SwimLaneIngressRequestMatch

Não

Condições de correspondência de requisição. Mapeia para o campo match sob http no serviço virtual gerado.

route

SwimLaneIngressRoute

Sim

Serviço de destino para requisições correspondidas. Mapeia para o campo route sob http no serviço virtual gerado.

SwimLaneIngressWeight

Especifique o peso de roteamento para uma faixa quando se utiliza roteamento baseado em peso.

Campo

Tipo

Obrigatório

Descrição

weight

int

Não

Peso de roteamento para esta faixa. O padrão é 0. O ASM usa os pesos de todas as faixas para calcular a proporção de distribuição de requisições.

destination

RouteDestination

Sim

Serviço de destino para roteamento baseado em peso.

SwimLaneIngressRequestMatch

Defina condições para corresponder requisições por URI ou cabeçalhos.

Campo

Tipo

Obrigatório

Descrição

uri

StringMatch

Não

Condição de correspondência de URI. Suporta exact, prefix e regex (sintaxe RE2).

headers

mapStringMatch>

Não

Condições de correspondência de cabeçalho. As chaves são nomes de cabeçalho em minúsculas com hífens (por exemplo, x-request-id). Os valores definem o tipo de correspondência.

StringMatch

Defina como corresponder a um valor de string. Especifique exatamente um campo.

Campo

Tipo

Obrigatório

Descrição

exact

string

Não

Correspondência exata de string.

prefix

string

Não

Correspondência por prefixo.

regex

string

Não

Correspondência por expressão regular RE2. Consulte Sintaxe RE2.

SwimLaneIngressRoute

Especifique o serviço de destino para requisições correspondidas.

Campo

Tipo

Obrigatório

Descrição

destination

RouteDestination

Sim

Serviço de destino.

RouteDestination

Identifica o serviço Kubernetes de destino.

CampoTipoObrigatórioDescrição
hoststringSimNome de domínio totalmente qualificado do serviço Kubernetes. Exemplo: mocka.default.svc.cluster.local.
portNumintNãoNúmero da porta do serviço. Exemplo: 8000.
Nota

Requer ASM v1.21.4.104 ou posterior.

Tópicos relacionados