Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Migrar tráfego de um gateway de entrada Istio autogerenciado para um gateway de entrada ASM

Última atualização: Jun 28, 2026

Ao migrar de uma implantação Istio autogerenciada para o Service Mesh (ASM), transfira o tráfego de entrada. Este guia apresenta uma abordagem de deslocamento de tráfego baseada em pesos: o gateway de entrada Istio existente e um novo gateway de entrada ASM compartilham a mesma instância do Classic Load Balancer (CLB). Controle a divisão do tráfego ajustando os pesos dos grupos vServer.

Migration traffic flow

Pré-requisitos

  • Instância ASM criada e cluster Kubernetes de destino adicionado à malha.

  • Acesso de administrador ao cluster Kubernetes onde o gateway de entrada Istio autogerenciado está em execução.

  • Acesso ao console CLB para gerenciar rótulos do balanceador de carga e grupos vServer.

  • Gateway de entrada Istio autogerenciado em execução e processando tráfego normalmente.

Escolha uma estratégia de deslocamento de tráfego

Há duas opções para redirecionar o tráfego ao gateway de entrada ASM:

Estratégia

Quando usar

Como funciona

Alternância baseada em DNS

Quando é possível modificar registros DNS diretamente

Atualize o registro do Domain Name System (DNS) do domínio para apontar ao endereço IP do gateway de entrada ASM

Deslocamento baseado em peso

Quando não é possível modificar registros DNS ou quando se necessita de migração gradual e controlada

Ambos os gateways compartilham uma instância CLB; ajuste os pesos dos grupos vServer para transferir o tráfego incrementalmente

Este tópico aborda o deslocamento baseado em peso. Caso opte pela alternância baseada em DNS, ignore a configuração de reutilização do CLB e atualize os registros DNS após criar o gateway de entrada ASM.

Crie o gateway de entrada ASM

Crie um gateway de entrada ASM no mesmo cluster Kubernetes do gateway de entrada Istio autogerenciado. Para instruções detalhadas, consulte Criar um gateway de entrada.

Ao criar o gateway:

  • Use um nome distinto. O nome do gateway de entrada ASM deve diferir do nome do gateway de entrada Istio existente. Adicione -asm ao final para diferenciá-lo — por exemplo, ingressgateway-asm.

  • Implante no mesmo cluster. Na Etapa 3 do tópico Criar um gateway de entrada, defina o parâmetro Cluster como o cluster Kubernetes onde reside o gateway de entrada Istio de source.

Reutilizar a instância CLB existente

Para compartilhar a instância CLB entre ambos os gateways, adicione as seguintes anotações de serviço no YAML do gateway de entrada ASM:

Anotação

Finalidade

Valor

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id

Especifica a instância CLB a reutilizar

ID da instância CLB associada ao gateway de entrada Istio de source

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners

Controla a sobrescrita dos listeners existentes

false (preserva os listeners existentes)

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port

Mapeia grupos vServer para portas

IDs dos grupos vServer e portas, separados por vírgula (por exemplo, "${YOUR_VGROUP_ID_1}:80, ${YOUR_VGROUP_ID_2}:443")

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight

Define o peso do tráfego para o gateway de entrada ASM

Ajuste conforme os requisitos de negócio. Defina como 0 quando nenhuma regra de roteamento estiver configurada ou ocorrerem exceções

Exemplo de configuração de serviceAnnotations:

serviceAnnotations:
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxxx"  # Replace with your CLB instance ID
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: 'false'  # Preserve existing listeners
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: "${YOUR_VGROUP_ID}:80"  # Replace with your vServer group ID
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "60"  # Set to 0 when no routing rule is configured or exceptions occur
Nota

Para mais informações sobre a reutilização de instâncias CLB criadas com o tipo de serviço LoadBalancer, consulte as Perguntas frequentes ao final deste tópico.

Verifique o gateway

Após criar o gateway de entrada ASM, confirme se os pods do gateway estão em execução:

kubectl get pods -n istio-system -l istio=ingressgateway-asm

Saída esperada (o nome do pod e a idade serão diferentes):

NAME                                    READY   STATUS    RESTARTS   AGE
ingressgateway-asm-5d8f7b9c4f-xxxxx    1/1     Running   0          1m

Migrar configurações do Istio

Migre as configurações de roteamento do Istio para o gateway de entrada ASM. Siga a ordem "criar antes de remover" (make-before-break) descrita abaixo para evitar erros 503 causados pela propagação de configuração eventualmente consistente.

1. Aplicar recursos DestinationRule primeiro

Aplique as configurações DestinationRule necessárias para o gateway de entrada ASM. Aguarde alguns segundos para que a configuração se propague aos sidecars Envoy antes de prosseguir.

2. Atualize o seletor do Gateway

No YAML do Istio Gateway, atualize selector.istio para corresponder ao nome do gateway de entrada ASM:

spec:
  selector:
    istio: ingressgateway-asm

3. Aplicar configurações VirtualService

Após a propagação da atualização do seletor do Gateway e das configurações DestinationRule, aplique as configurações VirtualService que referenciam o gateway de entrada ASM.

Importante

Sempre aplique o DestinationRule antes do VirtualService ao adicionar novas regras de roteamento. Se um VirtualService referenciar um subconjunto inexistente em um DestinationRule, o tráfego para esse subconjunto retornará erros 503 até a propagação do DestinationRule.

Verifique configurações

Confirme se o gateway de entrada ASM recebeu a configuração de roteamento esperada:

kubectl get gateway,virtualservice,destinationrule -n istio-system

Verifique se todos os recursos Gateway, VirtualService e DestinationRule estão listados e referenciam o nome correto do gateway.

Deslocar tráfego gradualmente

Com as configurações aplicadas, transfira o tráfego do gateway de entrada Istio autogerenciado para o gateway de entrada ASM ajustando os pesos do CLB.

  1. Defina o peso do gateway de entrada ASM com um valor baixo, como 10, para rotear uma fração do tráfego. Edite a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight no Serviço do gateway de entrada ASM.

  2. Verifique se o tráfego flui corretamente pelo gateway de entrada ASM. Analise os logs da aplicação, os códigos de resposta e a latência:

       kubectl logs -n istio-system -l istio=ingressgateway-asm --tail=50
  3. Aumente gradualmente o peso do gateway de entrada ASM (por exemplo, 10 -> 30 -> 60 -> 100) e reduza proporcionalmente o peso do gateway de entrada Istio de source.

  4. Após rotear todo o tráfego pelo gateway de entrada ASM, defina o peso do gateway de entrada Istio de source como 0.

Como ajustar pesos

Gateway

Ação

Gateway de entrada Istio de source

Edite a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight no Serviço Kubernetes correspondente

Gateway de entrada ASM

Edite a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight no Serviço do gateway de entrada ASM

Rollback

Se o gateway de entrada ASM não funcionar conforme o esperado em qualquer momento da migração:

  1. Defina o peso do gateway de entrada ASM como 0 para interromper o envio de tráfego.

  2. Restaure o peso do gateway de entrada Istio de source para 100.

  3. Reverta as configurações de Gateway, VirtualService e DestinationRule para apontarem ao gateway de entrada Istio original. Ao remover subconjuntos, atualize primeiro o VirtualService, aguarde alguns segundos e depois atualize o DestinationRule.

Perguntas frequentes: Reutilizar uma instância CLB criada automaticamente pelo Serviço do gateway de entrada Istio

Se uma instância CLB foi criada automaticamente durante o provisionamento de um Serviço para o gateway de entrada Istio autogerenciado, execute estas etapas antes de reutilizá-la para o gateway de entrada ASM:

  1. Abra o console CLB e localize a instância CLB.

  2. Exclua os dois rótulos seguintes da instância CLB:

    • kubernetes.do.not.delete

    • ack.aliyun.com

  3. Adicione as seguintes anotações ao Serviço do gateway de entrada Istio autogerenciado. Substitua os placeholders abaixo pelos valores reais:

    Placeholder

    Descrição

    Exemplo

    <your-clb-instance-id>

    ID da instância CLB

    lb-bp1abc2defg

    <your-vserver-group-id>

    ID do grupo vServer

    rsp-bp1abc3defg

    <port>

    Número da porta do listener

    80

       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "false"
       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: <your-clb-instance-id>
       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: <your-vserver-group-id>:<port>
       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "100"