Neste documento, descrevemos como configurar e usar uma estratégia de implantação canário.
O que é uma implantação canário?
Uma implantação canário é um lançamento progressivo de um aplicativo que divide o tráfego entre uma versão já implantada e uma nova, lançando-a para um subconjunto de usuários antes do lançamento completo.
Tipos de destino compatíveis
A implantação canário no Cloud Deploy é compatível com todos os tipos de destino, incluindo:
Google Kubernetes Engine e clusters anexados do GKE
Cloud Run (serviços e pools de workers, não jobs)
O Canary também funciona com várias metas.
Por que usar uma estratégia de implantação canário?
Uma implantação canário oferece a chance de lançar parcialmente o aplicativo. Assim, você garante que a nova versão do aplicativo é confiável antes de entregá-la a todos os usuários.
Se você estiver implantando no GKE (ou em clusters anexados do GKE), por exemplo, implante a nova versão do aplicativo em um número limitado de pods. A versão antiga continuaria sendo executada, mas com mais tráfego sendo enviado para os novos pods.
Se você estiver implantando no Cloud Run, o próprio Cloud Run dividirá o tráfego entre as revisões antiga e nova, de acordo com as porcentagens configuradas.
Tipos de canário
Com o Cloud Deploy, é possível configurar os seguintes tipos de implantação canary:
Automatizado
Com uma implantação canário automatizada (para redes de serviços, API Gateway ou Cloud Run), você configura o Cloud Deploy com uma série de porcentagens que expressam uma implantação progressiva. O Cloud Deploy realiza outras operações em seu nome para dividir as porcentagens de tráfego entre as versões antiga e nova.
Personalizado e automatizado
Para um canary personalizado e automatizado (para Service Networking, API Gateway ou Cloud Run), é possível fornecer o seguinte:
- O nome da fase
- A meta de porcentagem
- O perfil do Skaffold a ser usado na fase
- Se um job de verificação deve ser incluído ou não
- Se um job de pré-implantação ou pós-implantação, ou ambos, deve ser incluído
Mas não é necessário fornecer informações de balanceamento de tráfego. O Cloud Deploy cria os recursos necessários para rede de serviços, API Gateway ou Cloud Run.
Personalizado
Com um canary personalizado, você configura cada fase separadamente, incluindo o seguinte:
- O nome da fase
- A meta de porcentagem
- O perfil do Skaffold a ser usado na fase
- Se um job de verificação deve ser incluído ou não
- Se um job de pré-implantação ou pós-implantação, ou ambos, deve ser incluído
Além disso, para um canary totalmente personalizado, você fornece toda a configuração de balanceamento de tráfego.
Todos os tipos de destino são compatíveis com o canary personalizado.
Fases de uma implantação canário
Ao criar uma versão para uma implantação canário, o lançamento é criado com uma fase para cada incremento canário, além de uma fase final de stable para 100%.
Por exemplo, se você configurar um canary para incrementos de 25%, 50% e 75%, o lançamento terá as seguintes fases:
canary-25canary-50canary-75stable
Leia mais sobre fases, jobs e execuções de jobs de lançamento em Gerenciar lançamentos.
Usar a implantação paralela com uma estratégia de implantação canário
É possível executar uma implantação canário usando a implantação paralela. Isso significa que o destino em que você está fazendo a implantação progressiva pode ter dois ou mais destinos filhos. Por exemplo, é possível fazer implantações progressivas em clusters de regiões separadas ao mesmo tempo.
Qual é a diferença entre um canary paralelo e um canary de destino único?
Assim como na implantação canário de destino único, se você estiver implantando em destinos do GKE, será necessário ter uma configuração de implantação do Kubernetes e uma configuração de serviço do Kubernetes no manifesto.
Assim como na implantação canário de destino único, a configuração do pipeline de entrega precisa incluir uma estrofe
strategy.canaryna definição do estágio aplicável.Além disso, é necessário configurar um destino múltiplo e configurar os destinos filhos a que esse destino múltiplo se refere.
Quando você cria uma versão, um lançamento do controlador e os lançamentos filhos são criados.
Os dois tipos de lançamento (controlador e filho) têm fases separadas para todas as porcentagens canário configuradas e uma fase
stablepara o canário 100%.Não é possível avançar um lançamento filho.
Só é possível avançar lançamentos do controlador. Quando você avança o lançamento do controlador para a próxima etapa, os lançamentos filhos também são avançados pelo Cloud Deploy.
Não é possível repetir jobs com falha no lançamento do controlador.
Só é possível tentar de novo um job em lançamentos filhos.
Não é possível ignorar jobs com falha no lançamento do controlador.
Só é possível ignorar jobs com falha em lançamentos filhos.
É possível cancelar um lançamento do controlador, mas não é possível cancelar lançamentos filhos.
Você pode encerrar execuções de jobs em um lançamento filho, mas não em um lançamento do controlador.
O que fazer se um lançamento paralelo falhar no canário
Quando um lançamento filho falha, o lançamento do controlador pode fazer a transição para diferentes estados, dependendo do que acontece com os lançamentos filhos:
Se um ou mais lançamentos filhos falharem, mas pelo menos um ainda estiver
IN_PROGRESS, o lançamento do controlador vai continuarIN_PROGRESS.Se um ou mais lançamentos filhos falharem, mas pelo menos um for bem-sucedido, o lançamento do controlador será
HALTEDse houver mais fases depois da atual.Se esta for a fase
stable, o lançamento do controlador seráFAILED.HALTEDpermite que você possa ignorar, tentar de novo jobs com falha no lançamento filho com falha ou cancelar o lançamento do controlador e impedir outras ações nos lançamentos filhos.Se o lançamento do controlador estiver no estado
HALTEDdevido a uma falha no lançamento filho, e você ignorar o job com falha no lançamento filho, o lançamento do controlador vai reverter para o estadoIN_PROGRESS.
Usar a análise de implantação com uma estratégia de implantação canário
Em uma estratégia de implantação canário, é possível usar a análise de implantação com algumas ou todas as fases (exceto stable) para ajudar a determinar quando avançar um lançamento para a próxima fase. Além disso, você pode combinar a análise com uma automação advanceRolloutRule para que o lançamento avance automaticamente.
Para isso, inclua uma estrofe analysis
na configuração de cada fase que você quer analisar.
Essa análise pode usar métricas do Google Cloud Observability ou do provedor de métricas de sua escolha.
A seguir
Confira o guia de início rápido da implantação canário.
Saiba como gerenciar o ciclo de vida dos rollouts canários.
Acesse o guia relevante para seu ambiente de destino específico: