Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Delegação de VirtualService no ASM

Última atualização: Jun 28, 2026

Em aplicações com muitos microsserviços ou diversas regras de roteamento, um único VirtualService pode se tornar extenso e difícil de manter. Para resolver isso, o Service Mesh (ASM) oferece um mecanismo de delegate que permite dividir as regras de roteamento entre vários recursos VirtualService. Essa abordagem reduz os riscos associados a alterações nas configurações de roteamento. Este tópico usa a aplicação Bookinfo como exemplo para demonstrar como definir regras de roteamento utilizando múltiplos VirtualServices.

Pré-requisitos

Informações de fundo

No Service Mesh (ASM), utiliza-se um VirtualService para definir as regras que controlam o roteamento de tráfego para os serviços. Na prática, manter um único VirtualService grande pode ser desafiador. Cada atualização de roteamento exige a modificação desse recurso, o que frequentemente causa conflitos de atualização, redundância e alto acoplamento nas configurações. Qualquer erro nessas regras pode afetar os serviços no cluster do plano de dados e até mesmo interromper todo o acesso aos serviços.

O ASM estende o recurso VirtualService com um mecanismo de delegate para desacoplar as regras de roteamento. É possível dividir um VirtualService em um primário e um ou mais secundários. O VirtualService primário define as regras gerais, enquanto os secundários definem regras detalhadas para partes específicas da aplicação. Normalmente, um administrador central gerencia o VirtualService primário, e os proprietários individuais gerenciam os secundários. Essa separação de responsabilidades reduz significativamente o risco de alterações nas regras de roteamento e melhora a eficiência de implantações e atualizações independentes de serviços.

Observações

  • O ASM não suporta Delegates aninhados. O parâmetro Delegate só pode ser definido em um VirtualService primário. Por exemplo, se o parâmetro Delegate estiver configurado tanto no VirtualService primário quanto no secundário, nenhum dos dois terá efeito.

  • O HTTPMatchRequest em um VirtualService secundário deve ser um subconjunto da condição correspondente no VirtualService primário. Caso contrário, ocorrerá um conflito e o HTTPRoute não entrará em vigor.

  • Especifique o campo delegate apenas quando os campos route e redirect na rota HTTP do VirtualService primário estiverem vazios. O campo hosts de um VirtualService secundário deve estar vazio. As regras de roteamento do VirtualService secundário são mescladas com as do VirtualService primário.

Etapa 1: Configure o Gateway

  1. Faça login no console do ASM.

  2. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  3. Na página Mesh Management, localize a instância do ASM que deseja configurar. Clique no nome da instância do ASM ou clique em Manage na coluna Actions.

  4. Na página de detalhes da instância do ASM, escolha ASM Gateways > Gateway no painel de navegação à esquerda. Na página exibida, clique em Create from YAML.

  5. Selecione um Namespaces, cole o seguinte conteúdo YAML no editor e clique em Create. Este tópico usa o namespace default como exemplo.

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: bookinfo-gateway
    spec:
      selector:
        istio: ingressgateway # use istio default controller
      servers:
      - port:
          number: 80
          name: http
          protocol: HTTP
        hosts:
        - "*"

    Defina number como 80 para que o serviço Bookinfo possa receber conexões HTTP de entrada ou saída na porta 80.

Etapa 2: Configure o VirtualService primário

  1. Faça login no console do ASM.

  2. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  3. Na página Mesh Management, localize a instância do ASM que deseja configurar. Clique no nome da instância do ASM ou clique em Manage na coluna Actions.

  4. Na página de detalhes da instância do ASM, escolha Traffic Management Center > VirtualService no painel de navegação à esquerda. Na página exibida, clique em Create from YAML.

  5. Selecione um Namespaces, cole o seguinte conteúdo YAML no editor e clique em Create. Este tópico usa o namespace default como exemplo.

    O código a seguir cria delegate s para vs-1 e vs-2, onde vs-1 exige que as solicitações contenham /log para acessar o serviço Bookinfo, e vs-2 exige que as solicitações contenham / para acessar o serviço Bookinfo.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: bookinfo
      namespace: default
    spec:
      gateways:
        - bookinfo-gateway
      hosts:
        - '*'
      http:
        - delegate:
            name: vs-1
            namespace: ns1
          match:
            - uri:
                prefix: /log
        - delegate:
            name: vs-2
            namespace: ns1
          match:
            - uri:
                prefix: /

    Parâmetros no campo delegate:

    • name: O nome do delegate.

    • namespace: O namespace do delegate.

Etapa 3: Configure o VirtualService filho

  1. Faça login no console do ASM.

  2. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  3. Na página Mesh Management, localize a instância do ASM que deseja configurar. Clique no nome da instância do ASM ou clique em Manage na coluna Actions.

  4. Na página de detalhes da instância do ASM, escolha Traffic Management Center > VirtualService no painel de navegação à esquerda. Na página exibida, clique em Create from YAML.

  5. Selecione um Namespaces, cole o seguinte conteúdo no editor e clique em Create.

    Este tópico usa o namespace ns1 como exemplo. Para mais informações sobre como criar um namespace, consulte Gerenciar namespaces globais.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: vs-1
      namespace: ns1
    spec:
      http:
        - match:
            - uri:
                exact: /login
            - uri:
                exact: /logout
          route:
            - destination:
                host: productpage.default.svc.cluster.local
                port:
                  number: 9080
    • metadata: Deve corresponder ao parâmetro delegate do VirtualService primário para estabelecer o vínculo. Neste exemplo, os metadados correspondem ao parâmetro delegate de vs-1, vinculando-o a esse delegate.

    • match: Especifica as condições de filtro para solicitações. Neste exemplo, uri está definido como exact: /login e exact: /logout. Isso permite fazer login e logout no serviço Bookinfo.

  6. Novamente, selecione o ns1 Namespaces, cole o seguinte conteúdo YAML no editor e clique em Create.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: vs-2
      namespace: ns1
    spec:
      http:
        - match:
            - uri:
                exact: /productpage
            - uri:
                prefix: /static
            - uri:
                prefix: /api/v1/products
          route:
            - destination:
                host: productpage.default.svc.cluster.local
                port:
                  number: 9080
    • metadata: O valor deve corresponder ao parâmetro delegate do VirtualService primário para estabelecer o vínculo. Neste exemplo, o valor corresponde ao parâmetro delegate de vs-2, vinculando-o a esse delegate.

    • match: Especifica as condições de filtro para uma solicitação. Neste exemplo, a solicitação deve conter /productpage, /static ou /api/v1/products.

Verifique os resultados

  1. No navegador, acesse http://<endereço IP do gateway de entrada>/productpage.

    A página a seguir será exibida. Isso indica que a solicitação ao serviço Bookinfo contendo o parâmetro /productpage foi bem-sucedida e que o VirtualService para vs-2 está configurado corretamente. Para obter informações sobre como conseguir o endereço do gateway do ASM, consulte Obter o endereço IP do gateway de entrada. A página carrega a aplicação BookInfo Sample e exibe a página do produto para o livro The Comedy of Errors. A seção Book Details à esquerda lista campos como Type, Pages, Publisher, Language e ISBN. A seção Book Reviews à direita exibe várias avaliações de usuários e classificações por estrelas. Isso confirma que a aplicação de service mesh está acessível pelo gateway do ASM.

  2. Clique em Sign in no canto superior direito da página. Na caixa de diálogo exibida, insira um nome de usuário e senha para entrar no serviço Bookinfo.

    A página será atualizada para o estado autenticado. Isso confirma que o VirtualService vs-1 está configurado corretamente. Após o login, seu nome de usuário (por exemplo, jason) e um link sign out aparecem no canto superior direito, confirmando um login bem-sucedido.