Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Upgrade canário para um gateway do ASM

Última atualização: Sep 12, 2026

Os gateways do ASM suportam upgrades canário para garantir uma experiência de atualização suave. Este tópico usa o upgrade in-place de uma instância do ASM como exemplo para demonstrar como iniciar um único pod na nova versão. Isso permite verificar o tráfego nesse pod antes da atualização de todos os pods do gateway.

Pré-requisitos

  • Instância e versão do ASM — Certifique-se de ter added a cluster to an ASM instance e que a versão do ASM seja 1.20 ou posterior. Para obter instruções sobre como atualizar uma instância do ASM, consulte Upgrade an ASM instance.

  • Gateway de entrada — Verifique se você já created an ingress gateway.

  • Desligamento graceful — Ative o desligamento graceful no gateway antes de realizar o upgrade. Essa medida minimiza o risco de perda de tráfego durante a atualização. Para mais detalhes, consulte Enable graceful shutdown to prevent traffic loss.

  • Ausência de conflito de nomes com o Canary Deployment — Garanta que não exista nenhum Deployment no namespace do gateway cujo nome corresponda ao nome do Deployment do gateway seguido pelo sufixo -canary. Por exemplo, se o gateway se chamar ingressgateway, confirme que não há nenhum Deployment chamado istio-ingressgateway-canary no namespace istio-system.

  • Acesso ao plano de dados — Obtenha o arquivo KubeConfig do plano de dados para executar comandos kubectl no cluster correspondente.

Funcionamento do upgrade canário de gateway

Como ponto único de entrada e saída para o tráfego de service, o gateway deve atender a rigorosos requisitos de disponibilidade. O upgrade canário ajuda a manter a continuidade dos negócios. Você altera a configuração do gateway para iniciar primeiro um pod com a nova versão e valida o tráfego nele. A atualização completa do gateway ocorre somente após a validação bem-sucedida. Caso surja algum problema durante a verificação, exclua esse novo pod a qualquer momento e retome o upgrade após resolver a questão.

Nota

O upgrade canário de um gateway do ASM difere do upgrade canário de uma instância do ASM. A opção de upgrade canário do gateway está disponível independentemente de você realizar um upgrade in-place ou um upgrade canário da instância do ASM.

No ASM, a atualização do plano de controle e a do plano de dados são processos separados. O plano de dados pode ser atualizado após a conclusão da atualização do plano de controle.

Um upgrade canário de gateway cria um Deployment de réplica única compatível com a versão atual do plano de controle. Esse recurso é denominado Canary Deployment, e o único pod gerenciado por ele é o pod canário. O Canary Deployment pertence ao mesmo Service do Deployment original do gateway. A diferença reside no nome, que corresponde ao nome do Deployment original acrescido do sufixo -canary.

Importante

Se já existir um Deployment com o mesmo nome e o sufixo -canary no namespace do gateway, esse Deployment não será sobrescrito.

Ambos os caminhos de atualização de instância do ASM listados abaixo suportam o upgrade canário de gateway. Identifique o seu cenário antes de começar:

  • Upgrade in-place de instância do ASM — Após a conclusão da atualização do plano de controle, o gateway continua executando a versão anterior. Execute do Passo 1 ao Passo 4 descritos neste tópico.

  • Upgrade canário de instância do ASM — O Passo 1 deste tópico não se aplica. Durante o upgrade canário da instância, após alternar a nova versão para o plano de controle padrão, o gateway fica pendente de atualização. Prossiga a partir do Passo 2 para implantar um pod canário no gateway, validar o tráfego e concluir a atualização do gateway após a verificação bem-sucedida.

Passo 1: Atualize o plano de controle

  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 Instance Information > Upgrade Management.

  3. Na página Upgrade Management, na aba In-place Upgrades, clique em Perform Upgrade Precheck. Na caixa de diálogo Note, clique em OK.

    Nota

    Caso a página exiba a mensagem Currently, it is the latest version and does not need to be upgraded., significa que a service mesh já está na versão mais recente e não pode ser atualizada.

  4. Após a aprovação da pré-verificação, clique em Upgrade. Na caixa de diálogo Note, clique em OK.

Passo 2: Implante um pod canário para o gateway do ASM

Para implantar um pod canário em um gateway do ASM, adicione a anotação asm.alibabacloud.com/enable-canary-deployment: "true" ao campo annotations, dentro de metadata, no arquivo YAML do gateway. Utilize o console do ASM ou a linha de comando kubectl.

Método 1: Uso do 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, clique em View YAML à direita do gateway desejado. Na caixa de diálogo Edit, adicione a anotação e clique em OK.

Método 2: Uso do comando kubectl

  1. Execute o comando abaixo para abrir o arquivo YAML do gateway do ASM.

    kubectl edit IstioGateway <YOUR-INGRESSGATEWAY-NAME> -n istio-system
  2. Edite o arquivo YAML para incluir a anotação e salve as alterações.

O exemplo de arquivo YAML a seguir ilustra uma configuração de gateway do ASM com a anotação adicionada. O resultado final é idêntico em ambos os métodos.

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

Valide o pod canário e seu tráfego

Siga as etapas abaixo independentemente do método utilizado para adicionar a anotação.

  1. Use o arquivo KubeConfig do plano de dados para executar o comando seguinte e visualizar o Canary Deployment implantado. Neste exemplo, o nome do gateway é ingressgateway. Substitua-o conforme o seu cenário real.

    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. Aguarde até que suas réplicas prontas atinjam 1/1, conforme exibido na saída anterior.

  2. Quando o pod canário estiver pronto, parte do tráfego será roteada para ele. Verifique se o tráfego que chega ao gateway está normal.

    Se o tráfego estiver normal, prossiga para o Passo 3 a fim de atualizar o gateway. Caso o tráfego apresente anomalias, faça o rollback do pod canário conforme descrito na seção a seguir.

Faça rollback se a validação falhar

Caso o tráfego recebido pelo gateway apresente anomalias, execute as etapas abaixo:

  1. Salve os logs do gateway.

  2. Exclua a anotação asm.alibabacloud.com/enable-canary-deployment: "true" configurada anteriormente. O pod canário será removido e todo o tráfego retornará aos pods do gateway que executam a versão anterior.

  3. Após resolver o problema, readicione a anotação para reimplantar o pod canário e valide o tráfego novamente.

Passo 3: Atualize o gateway após a validação bem-sucedida

  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 Instance Information > Upgrade Management.

  3. Na seção Data Plane, coluna Upgrade, selecione o gateway desejado e clique em Upgrade Gateway. Na caixa de diálogo Note, clique em OK e aguarde a conclusão da atualização do gateway.

Passo 4: Exclua o pod canário

Após concluir a atualização do gateway, remova a anotação adicionada no Passo 2. O pod canário será excluído automaticamente. Para confirmar, visualize novamente os Deployments no namespace do gateway e verifique se o Deployment com o sufixo -canary deixou de existir.

Importante

O pod canário sempre acompanha a versão do plano de controle. Se você não o excluir, ele será atualizado juntamente com o plano de controle na próxima atualização.