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.
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
Atualize o plano de controle. O gateway permanece na versão original.
Implante um Canary Deployment. Parte do tráfego será roteada para o pod canário.
Verifique se o tráfego é encaminhado corretamente pelo pod canário.
Atualize o gateway para a nova versão.
Remova o Canary Deployment.
Fluxo de trabalho de atualização canário de uma instância do ASM
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.
Implante um Canary Deployment para o gateway.
Valide o encaminhamento de tráfego pelo pod canário.
Atualize o gateway.
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 chamadoistio-ingressgateway-canaryno namespaceistio-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.
Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Instance > Upgrade Management.
-
Na aba In-place Upgrades da página Upgrade Management, clique em Perform Upgrade Precheck. Na mensagem Note, clique em OK.
NotaSe 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.
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
Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.
Na página Ingress Gateway, localize o gateway de entrada desejado e clique em YAML na coluna Actions.
-
Na caixa de diálogo Edit, adicione a seguinte anotação ao campo
annotationsna seçãometadatae clique em OK:asm.alibabacloud.com/enable-canary-deployment: "true"
Executar um comando kubectl
-
Abra o YAML do gateway do ASM para edição:
kubectl edit IstioGateway <your-gateway-name> -n istio-system Adicione a anotação canário ao campo
metadata.annotationse salve o arquivo.
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:
Salve os logs do gateway do ASM para solução de problemas.
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.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.
Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Instance > Upgrade Management.
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.
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.