Uma versão canary permite testar uma nova versão de aplicativo implantando-a junto à versão estável. Esse método ajuda a identificar e corrigir problemas antecipadamente, sem comprometer a estabilidade do sistema. Este tópico descreve como usar uma atualização canary para melhorar a estabilidade da sua instância ASM.
Pré-requisitos
Você possui uma instância ASM da Enterprise Edition ou Ultimate Edition executando a versão 1.22.6.114 ou posterior. Para mais informações, consulte Criar uma instância ASM.
Você criou um cluster ACK e o adicionou à instância ASM. Para mais informações, consulte Adicionar um cluster a uma instância ASM.
Você implantou o aplicativo Bookinfo. Para mais informações, consulte Implantar um aplicativo em um cluster ACK associado a uma instância ASM.
Como funciona
O Alibaba Cloud Service Mesh (ASM) oferece suporte a um modelo de atualização baseado em revisões que utiliza rótulos. Isso permite executar uma atualização canary do plano de controle para garantir maior estabilidade e segurança. Nesse modelo, cada sidecar proxy no plano de dados associa-se a uma versão específica do plano de controle, ou revisão. É possível implantar uma nova revisão com risco mínimo, pois nenhum proxy se conectará a ela até que você migre explicitamente as cargas de trabalho. Cada plano de controle independente é chamado de revisão e identificado pelo rótulo istio.io/rev.
Para oferecer suporte a atualizações baseadas em revisões, o Istio usa o rótulo istio.io/rev para namespaces. Esse rótulo informa ao plano de controle qual revisão usar para injetar sidecar proxies nas cargas de trabalho desse namespace. Por exemplo, o rótulo istio.io/rev=1-23-6 instrui o plano de controle a injetar o sidecar proxy da versão 1.23.6 nas cargas de trabalho do namespace.
Durante uma atualização canary, valide a versão alvo atualizando primeiro um pequeno subconjunto de serviços. Se a validação falhar, reverta rapidamente para garantir a estabilidade do serviço. Após validar a nova versão, promova a versão canary para a nova versão estável, atualize todas as cargas de trabalho usando uma atualização contínua e, em seguida, despublique a versão antiga para concluir o processo.
Preparações
Uma atualização canary exige que você especifique explicitamente a versão do sidecar proxy a ser injetada por meio de rótulos de namespace. Portanto, garanta que sua política de injeção esteja configurada corretamente. Siga estas etapas para verificar a configuração da política de injeção.
Faça login no console ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância ASM. No painel de navegação à esquerda, escolha .
-
Na página Sidecar Proxy injection, em Injection strategy configuration management, confirme se The labels of the pod's namespace must meet the conditions. está definido como Include istio-injection: enabled. Na seção Select the pods that require sidecar injection da página Injection policy configuration, a condição de rótulo para o namespace do pod é Contains istio-injection: enabled por padrão.
NotaO rótulo
istio-injection: enabledequivale semanticamente aistio.io/rev: stable. Durante uma atualização canary, o rótuloistio.io/rev: stableinjeta a revisão estável do sidecar proxy nos pods do namespace correspondente, enquanto o rótuloistio.io/rev: canaryinjeta a revisão canary.Após a atualização, não é necessário substituir
istio.io/rev:stableporistio-injection: enabled, pois são semanticamente idênticos.
Etapa 1: Atualizar o plano de controle
Faça login no console ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância ASM. No painel de navegação à esquerda, escolha .
-
Na página Upgrade Management, clique em aba Canary Upgrade. Na aba Control Plane, selecione uma Canary version: e Create a new Server Load Balancer (CLB) instance e, em seguida, clique em Confirm. Na caixa de diálogo Confirm upgrade?, clique em OK.
Uma atualização canary pode pular no máximo uma versão secundária. Neste exemplo, a instância ASM está na versão 1,22, então você pode atualizá-la até a versão 1,23. Este tópico usa a v1.23.6 como exemplo. Ao implantar a versão alvo de uma atualização canary, o ASM cria e associa uma instância Server Load Balancer (CLB) à versão alvo. Se não houver requisitos especiais, use as especificações padrão para a instância CLB. Para mais informações sobre o faturamento do CLB, consulte Visão geral do faturamento do CLB.
Aguarde a implantação dos componentes. Após a conclusão da implantação, a página será atualizada automaticamente.
A barra de progresso mostra que o processo está na segunda etapa, Deploy new version. O status tanto da versão atual quanto da versão canary é Canary upgrading. A página indica que o novo plano de controle foi implantado e solicita a verificação da nova versão. Clique em Version switch para prosseguir com a atualização ou em Revoke upgrade para reverter.
Etapa 2: Atualizar o sidecar proxy do reviews-v2****
Na Etapa 1, você implantou um plano de controle Istio da versão v1.23.6 usando uma atualização canary. As etapas a seguir descrevem como validar essa versão atualizando o sidecar proxy injetado no serviço reviews-v2 do aplicativo Bookinfo para a v1.23.
Faça login no console ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância ASM. No painel de navegação à esquerda, escolha .
-
Na página Global Namespace, na coluna Automatic Sidecar Injection, verifique se o rótulo do namespace default é
istio-injection: enabled.Se o rótulo for
istio-injection: enabled, isso indica que o sidecar proxy da versão 1,22 está sendo injetado. -
Na página Global Namespace, localize o namespace default. Na coluna Automatic Sidecar Injection, clique em Switch to inject 1-23-6 version. Na caixa de diálogo Confirm, clique em OK.
O rótulo do namespace global padrão muda para
istio.io/rev: canary, e o rótulo do namespace padrão no plano de dados também sincroniza paraistio.io/rev: canary. A página Global Namespace mostra que o sidecar proxy da versão 1,23 é injetado no namespace padrão. Novos pods criados no namespace padrão terão o sidecar proxy da versão 1,23 injetado. Os rótulos de outros namespaces permanecem inalterados; portanto, continuam usando o sidecar proxy da versão 1,22.NotaAs etapas anteriores descrevem como alternar a versão do sidecar proxy para um namespace que tinha injeção automática ativada antes da atualização. Para um namespace onde a injeção automática não estava ativada, ative-a e selecione a versão desejada do sidecar proxy. O ASM adiciona o rótulo
istio.io/rev:stableouistio.io/rev:canaryao namespace com base na sua seleção. -
Execute uma atualização contínua da carga de trabalho reviews-v2.
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em nome do seu cluster. No painel de navegação à esquerda, clique em .
Na página Deployments, localize reviews-v2. Na coluna Actions, escolha . Na caixa de diálogo Redeploy, clique em OK.
-
Na página Deployments, clique em reviews-v2. Na aba Pods, verifique se o pod do reviews-v2 iniciou com sucesso após a atualização contínua e se o novo pod tem o sidecar proxy da versão 1,23 injetado.
O pod do reviews-v2 inicia com sucesso após a atualização contínua, e o sidecar proxy da v1.23 é injetado no novo pod.
-
Abra um navegador e visite a página do Bookinfo para verificar se o tráfego é roteado conforme esperado.
Conforme mostrado na figura a seguir, o acesso ao serviço reviews-v2 ocorre conforme esperado. A página do Bookinfo carrega corretamente. A seção Book Reviews exibe avaliações de livros com classificações de estrelas pretas, e o canto inferior direito da página mostra
Reviews served by: reviews-v2-5b5fdb5d7c-xxx. Isso indica que o pod reviews-v2 está servindo as avaliações e o tráfego está sendo roteado conforme esperado.
Etapa 3: Reverter o reviews-v2
Se a validação na Etapa 2 falhar, ou se for necessário reverter por outros motivos, siga estas etapas.
Faça login no console ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância ASM. No painel de navegação à esquerda, escolha .
-
Na página Global Namespace, localize o namespace default. Na coluna Automatic Sidecar Injection, clique em Switch to inject 1-22-6 version. Na caixa de diálogo Confirm, clique em OK.
Antes da reversão, o rótulo do namespace é
istio.io/rev: canary, e o sidecar proxy da versão 1,23 é injetado no namespace padrão.Após a reversão, o rótulo muda para
istio.io/rev: stable, e o rótulo do namespacedefaultno plano de dados também atualiza paraistio.io/rev: stable. Como resultado, o proxy de malha da versão 1,22 é injetado no namespacedefault. -
Reimplante a carga de trabalho reviews-v2 no console ACK.
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em nome do seu cluster. No painel de navegação à esquerda, clique em .
Na página Deployments, selecione default na lista suspensa Namespace. Localize reviews-v2. Na coluna Actions, escolha . Na caixa de diálogo Redeploy, clique em OK.
-
Na página Deployments, clique em reviews-v2. Na aba Pods, verifique se o pod do reviews-v2 iniciou com sucesso após a atualização contínua e se o novo pod tem o sidecar proxy da versão 1,22 injetado.
O pod do reviews-v2 inicia com sucesso após a atualização contínua, e o sidecar proxy da versão 1,22 é injetado no novo pod.
Etapa 4: Revogar a atualização
Após uma reversão bem-sucedida, revogue a atualização canary para restaurar a instância ASM para a versão inicial 1,22.
Antes de revogar a atualização, certifique-se de que a versão estável do sidecar proxy esteja injetada em todos os namespaces. Caso contrário, a revogação falhará.
Faça login no console ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância ASM. No painel de navegação à esquerda, escolha .
-
Na página Upgrade Management, na aba Canary Upgrade, clique em Undo upgrade. Na caixa de diálogo Confirm the cancellation of the upgrade?, clique em OK.
Após clicar em Revoke upgrade, os componentes do plano de controle canary (versão 1,23 neste exemplo) são excluídos. Apenas os componentes do plano de controle estável (versão 1,22 neste exemplo) são mantidos.
Etapa 5: Tentar novamente a atualização e a verificação
Neste ponto, a instância ASM está no mesmo estado em que estava antes da Etapa 1. Este exemplo valida apenas as cargas de trabalho reviews-v1, reviews-v2 e reviews-v3. Em um cenário real, valide todas as cargas de trabalho necessárias até obter sucesso.
Repita a Etapa 1 para implantar a versão canary do plano de controle no cluster ASM.
-
Repita a Etapa 2 para verificar se o sidecar proxy injetado da nova versão funciona conforme esperado.
Por exemplo, reimplante os deployments reviews-v1, reviews-v2 e reviews-v3 pelo console ACK. Você verá que o sidecar proxy da versão 1,23 é injetado nos pods do reviews-v1, reviews-v2 e reviews-v3.
Etapa 6: Promover a nova versão
Após confirmar que reviews-v1, reviews-v2 e reviews-v3 funcionam conforme esperado com o novo sidecar proxy da versão 1,23, promova a versão 1,23 para estável.
Ao promover a versão, o processo de atualização avança para o estágio de despublicação da versão antiga. Todas as cargas de trabalho devem alternar para o novo sidecar proxy da versão 1,23, e não será mais possível revogar a atualização. Certifique-se de concluir todas as verificações durante o estágio New version deployment.
Após promover a versão, o ASM injetará o novo sidecar proxy da versão 1,23 em namespaces com o rótulo
istio.io/rev: stableouistio-injection: enabled. O rótuloistio.io/rev: canarydeixará de vigorar. Portanto, ao promover a versão, o ASM altera automaticamente todos os rótulosistio.io/rev: canaryparaistio.io/rev: stable. Confirme essa alteração ao clicar em Version switching na aba Canary Upgrade da página Upgrade Management.
Faça login no console ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância ASM. No painel de navegação à esquerda, escolha .
-
Na página Upgrade Management, na aba Canary Upgrade, clique em Update Version. Na caixa de diálogo Confirm version switching?, leia atentamente o aviso e clique em OK.
Após a promoção, as cargas de trabalho existentes com o sidecar proxy da versão 1,22 não são afetadas. No entanto, todos os pods reimplantados terão o sidecar proxy da versão 1,23 injetado. A página é atualizada após a conclusão da promoção.
A barra de progresso mostra que o processo está na terceira etapa, Switch version. O status tanto da versão atual quanto da versão canary é Canary upgrading. A página indica que a troca de versão foi bem-sucedida. Agora é possível atualizar o plano de dados. Neste ponto, clique em Upgrade data plane para prosseguir ou em Unpublish old version para finalizar a atualização.
Etapa 7: Atualizar o plano de dados
Neste ponto, a versão do ASM é 1.23.6. Namespaces com o rótulo istio.io/rev=stable, istio.io/rev=1-23-6 ou istio-injection=enabled terão o sidecar proxy da versão 1,23 injetado. Conclua a atualização do plano de dados executando uma atualização contínua das suas cargas de trabalho para atualizar seus sidecar proxies injetados para a nova versão 1,23.
Faça login no console ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância ASM. No painel de navegação à esquerda, escolha .
-
Na página Upgrade Management, na aba Canary Upgrade, clique em aba Data plane para atualizar gateways ASM ou cargas de trabalho conforme necessário.
Atualizar um gateway ASM: Na seção ASM Gateways, localize o gateway alvo. Na coluna Actions, clique em Rolling Upgrade. Na caixa de diálogo Confirm to perform rolling upgrade?, clique em OK para atualizar o gateway ASM para a nova versão 1,23.
-
Atualizar uma carga de trabalho: Na seção Workload to be upgraded, selecione um Namespace. Localize a carga de trabalho alvo. Na coluna Actions, clique em Rolling Upgrade. Na caixa de diálogo Confirm to perform rolling upgrade?, clique em OK para atualizar a carga de trabalho para a nova versão 1,23.
NotaGateways ASM ou cargas de trabalho já atualizados não aparecem na lista.
Você também pode clicar em Instances Status no painel de navegação à esquerda para visualizar todas as cargas de trabalho ou instâncias de gateway pendentes de atualização.
Etapa 8: Despublicar a versão antiga
Após atualizar todas as cargas de trabalho do plano de dados, despublique a versão antiga 1,22.
Faça login no console ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância ASM. No painel de navegação à esquerda, escolha .
-
Na página Upgrade Management, na aba Canary Upgrade, clique em Offline old version. Na caixa de diálogo Are you sure to offline the previous version of the Control Plane?, clique em OK.