Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Canary upgrade an ASM gateway

Última atualização: Jun 28, 2026

Uma atualização canário permite validar uma nova versão do gateway do ASM com tráfego real antes de concluir uma atualização completa. Um único pod canário é executado junto ao Deployment existente do gateway, recebe uma parcela do tráfego de produção e possibilita confirmar o comportamento correto — ou reverter instantaneamente caso ocorra algum problema. Este tópico utiliza uma atualização in-place como exemplo.

Como funciona

As atualizações do plano de controle e do plano de dados no ASM são independentes. Após atualizar o plano de controle, o gateway (plano de dados) permanece na versão original até que você o atualize explicitamente.

Um gateway do ASM gerencia a entrada ou a saída do tráfego de serviços. Uma atualização canário adiciona um Deployment temporário — chamado de Canary Deployment — ao plano de dados. Esse Canary Deployment:

  • Provisiona um único pod que executa a nova versão do gateway.

  • Pertence ao mesmo Service do Deployment original do gateway e recebe automaticamente uma parte do tráfego real.

  • Utiliza a convenção de nomenclatura istio-<gateway-name>-canary (por exemplo, istio-ingressgateway-canary).

Após confirmar que o tráfego flui corretamente pelo pod canário, atualize o gateway para a nova versão e remova o Canary Deployment.

Nota

A atualização canário de um gateway do ASM é distinta da atualização canário de uma instância do ASM. As atualizações canário de gateway funcionam tanto com atualizações in-place quanto com atualizações canário da instância do ASM.

Fluxo de trabalho de atualização in-place

  1. Atualize o plano de controle. O gateway permanece na versão original.

  2. Implante um Canary Deployment. Parte do tráfego será roteada para o pod canário.

  3. Verifique se o tráfego é encaminhado corretamente pelo pod canário.

  4. Atualize o gateway para a nova versão.

  5. Remova o Canary Deployment.

Fluxo de trabalho de atualização canário de uma instância do ASM

  1. Inicie a atualização canário da instância do ASM. Quando o novo plano de controle se tornar o padrão, o gateway entrará em estado de pendência de atualização.

  2. Implante um Canary Deployment para o gateway.

  3. Valide o encaminhamento de tráfego pelo pod canário.

  4. Atualize o gateway.

  5. Remova o Canary Deployment.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Uma instância do ASM executando a versão 1.20 ou posterior, com um cluster do Container Service for Kubernetes (ACK) adicionado. Para mais informações, consulte Adicionar um cluster a uma instância do ASM. Para atualizar uma instância existente do ASM, consulte Atualizar uma instância do ASM

  • Um gateway de entrada implantado na instância do ASM. Para mais informações, consulte Criar um gateway de entrada

  • Nenhum Deployment existente com o nome do Canary Deployment no namespace do gateway. Por exemplo, se o nome do gateway for ingressgateway, garanta que não exista nenhum Deployment chamado istio-ingressgateway-canary no namespace istio-system

Etapa 1: Atualizar o plano de controle

Antes da atualização, ative o desligamento gracioso para o gateway do ASM a fim de minimizar a perda de tráfego. Para mais informações, consulte Ativar o desligamento gracioso para evitar perda de tráfego.

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Instance > Upgrade Management.

  3. Na aba In-place Upgrades da página Upgrade Management, clique em Perform Upgrade Precheck. Na mensagem Note, clique em OK.

    Nota

    Se a mensagem "Currently, it is the latest version and does not need to be upgraded" aparecer, significa que a instância do ASM já está na versão mais recente.

  4. Após a aprovação da verificação prévia, clique em Upgrade. Na mensagem Note, clique em OK.

Etapa 2: Implantar o Canary Deployment

Adicionar a anotação asm.alibabacloud.com/enable-canary-deployment: "true" ao recurso do gateway do ASM aciona o ASM para criar o Canary Deployment automaticamente.

Escolha um dos métodos a seguir:

Usar o console do ASM

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.

  3. Na página Ingress Gateway, localize o gateway de entrada desejado e clique em YAML na coluna Actions.

  4. Na caixa de diálogo Edit, adicione a seguinte anotação ao campo annotations na seção metadata e clique em OK:

       asm.alibabacloud.com/enable-canary-deployment: "true"

Executar um comando kubectl

  1. Abra o YAML do gateway do ASM para edição:

       kubectl edit IstioGateway <your-gateway-name> -n istio-system
  2. Adicione a anotação canário ao campo metadata.annotations e salve o arquivo.

Exemplo de YAML com a anotação canário

apiVersion: istio.alibabacloud.com/v1beta1
kind: IstioGateway
metadata:
  labels:
    asm-gateway-type: ingress
  annotations:
    asm.alibabacloud.com/enable-canary-deployment: "true" # Add this annotation.
  name: ingressgateway
  namespace: istio-system
spec:
  clusterIds:
    - xxxxxxxxxxxxxx
  disableContainerPortExposed: true
  dnsPolicy: ClusterFirst
  externalTrafficPolicy: Local
  gatewayType: ingress
  ports:
    - name: http-0
      port: 80
      protocol: HTTP
      targetPort: 80
  replicaCount: 1
  resources:
    limits:
      cpu: '2'
      memory: 4G
    requests:
      cpu: 200m
      memory: 256Mi
  rollingMaxSurge: 25%
  rollingMaxUnavailable: 25%
  serviceAnnotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: 'on'
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: '10'
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: PayByCLCU
    service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet
  serviceType: LoadBalancer

Verificar o Canary Deployment

Após adicionar a anotação, conecte-se ao cluster do plano de dados e verifique se o Canary Deployment está em execução:

kubectl -n istio-system get deployment | grep ingressgateway

Saída esperada:

istio-ingressgateway                1/1     1            1           10m
istio-ingressgateway-canary         1/1     1            1           55s

O Deployment com o sufixo -canary corresponde ao Canary Deployment.

Reverter em caso de problemas

Caso o tráfego não flua corretamente pelo pod canário:

  1. Salve os logs do gateway do ASM para solução de problemas.

  2. Remova a anotação asm.alibabacloud.com/enable-canary-deployment: "true". Isso exclui o Canary Deployment e roteia todo o tráfego de volta para o gateway original.

  3. Resolva o problema, readicione a anotação para reimplementar o Canary Deployment e repita a verificação.

Etapa 3: Atualizar o gateway do ASM

Após confirmar que o tráfego é encaminhado corretamente pelo pod canário, atualize o gateway.

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Instance > Upgrade Management.

  3. Na seção Data Plane, selecione o gateway do ASM a ser atualizado na coluna Upgrade e clique em Upgrade Gateway. Na mensagem Note, clique em OK.

Etapa 4: Remover o Canary Deployment

Após a conclusão da atualização do gateway, remova a anotação asm.alibabacloud.com/enable-canary-deployment: "true" adicionada na Etapa 2. O ASM excluirá o Canary Deployment automaticamente.

Importante

A versão do Canary Deployment sempre corresponde à versão do plano de controle. Se você não remover o Canary Deployment, ele será atualizado automaticamente na próxima vez que você atualizar o plano de controle.

Veja também