Este documento descreve como configurar e usar uma estratégia de implementação canary.
O que é uma implementação de teste?
Uma implementação canária é uma implementação progressiva de uma aplicação que divide o tráfego entre uma versão já implementada e uma nova versão, implementando-a num subconjunto de utilizadores antes da implementação completa.
Tipos de segmentação suportados
A implementação canary no Cloud Deploy suporta todos os tipos de destino, incluindo o seguinte:
Google Kubernetes Engine e GKE Enterprise
Cloud Run (apenas serviços, não tarefas)
O Canary também funciona com vários alvos.
Porquê usar uma estratégia de implementação canary?
Uma implementação canary dá-lhe a oportunidade de lançar parcialmente a sua aplicação. Desta forma, pode garantir que a nova versão da sua aplicação é fiável antes de a disponibilizar a todos os utilizadores.
Se estiver a implementar no GKE ou no GKE Enterprise, por exemplo, implementaria a nova versão da sua aplicação num número limitado de pods. A versão antiga continuaria a ser executada, mas com mais tráfego a ser enviado para os novos pods.
Se estiver a implementar no Cloud Run, o próprio Cloud Run divide o tráfego entre as revisões antigas e novas, de acordo com as percentagens que configurar.
Tipos de testes canários
O Cloud Deploy permite-lhe configurar os seguintes tipos de implementação canary:
Automático
Com uma implementação canary automatizada (para redes de serviços, API Gateway ou Cloud Run), configura o Cloud Deploy com uma série de percentagens que expressam uma implementação progressiva. O Cloud Deploy realiza operações adicionais em seu nome para atribuir percentagens de tráfego entre as versões antiga e nova.
Personalizada e automatizada
Para um teste canário automatizado personalizado (para rede de serviços, API de gateway ou Cloud Run), pode fornecer o seguinte:
- O nome da fase
- O objetivo de percentagem
- O perfil do Skaffold a usar para a fase
- Se deve ou não incluir um trabalho de validação
- Se deve ou não incluir uma tarefa de pré-implementação ou pós-implementação, ou ambas
No entanto, não precisa de fornecer informações de equilíbrio de tráfego. O Cloud Deploy cria os recursos necessários (para rede de serviços, API de gateway ou Cloud Run).
Personalizado
Com um canário personalizado, pode configurar cada fase do canário separadamente, incluindo o seguinte:
- O nome da fase
- O objetivo de percentagem
- O perfil do Skaffold a usar para a fase
- Se deve ou não incluir um trabalho de validação
- Se deve ou não incluir uma tarefa de pré-implementação ou pós-implementação, ou ambas
Além disso, para um teste canário totalmente personalizado, fornece toda a configuração de equilíbrio de tráfego.
Todos os tipos de alvos são suportados para o teste canário personalizado.
Fases de uma implementação de teste
Quando cria um lançamento para uma implementação canary, a implementação é criada com uma fase para cada incremento canary, além de uma fase stable
final para 100%.
Por exemplo, se configurar um teste canário para incrementos de 25%, 50% e 75%, a implementação terá as seguintes fases:
canary-25
canary-50
canary-75
stable
Pode ler mais acerca das fases de implementação, das tarefas e das execuções de tarefas em Gerir implementações.
Use a implementação paralela com uma estratégia de implementação canary
Pode executar uma implementação canary através da implementação paralela. Isto significa que o destino para o qual está a fazer a implementação progressiva pode abranger dois ou mais destinos secundários. Por exemplo, pode implementar progressivamente em clusters em regiões separadas, ao mesmo tempo.
Qual é a diferença entre um teste canário paralelo e testes canários de destino único
Tal como acontece com a implementação de teste canary de destino único, se estiver a implementar em destinos do GKE, precisa de uma configuração de implementação do Kubernetes e uma configuração de serviço do Kubernetes no seu manifesto.
Tal como acontece com a implementação canary de destino único, a configuração do pipeline de fornecimento tem de incluir uma secção
strategy.canary
na definição da fase para a fase aplicável.Além disso, tem de configurar uma segmentação múltipla e configurar as segmentações secundárias a que essa segmentação múltipla faz referência.
Quando cria um lançamento, é criada uma implementação do controlador e as implementações secundárias.
Ambos os tipos de implementação, de controlador e secundário, têm fases separadas para todas as percentagens de teste canário configuradas e uma fase
stable
para o teste canário de 100%.Não pode avançar uma implementação parcial.
Só pode avançar implementações de controladores. Quando avança a implementação do controlador para a fase seguinte, as implementações secundárias também são avançadas pelo Cloud Deploy.
Não pode tentar novamente tarefas com falhas na implementação do controlador.
Só pode tentar novamente uma tarefa em implementações secundárias.
Não pode ignorar tarefas com falhas na implementação do controlador.
Só pode ignorar tarefas com falhas em implementações secundárias.
Pode cancelar a implementação de um controlador, mas não pode cancelar implementações secundárias.
Só pode terminar execuções de tarefas numa implementação secundária e não numa implementação do controlador.
O que fazer se uma implementação paralela falhar no teste canário
Quando uma implementação secundária falha, a implementação do controlador pode transitar para diferentes estados, consoante o que acontece com as implementações secundárias:
Se uma ou mais implementações secundárias falharem, mas pelo menos uma implementação secundária continuar
IN_PROGRESS
, a implementação do controlador permaneceIN_PROGRESS
.Se uma ou mais implementações secundárias falharem, mas pelo menos uma implementação secundária for bem-sucedida, a implementação do controlador é
HALTED
se existirem mais fases após a atual.Se estiver na fase
stable
, a implementação do comando estáFAILED
.HALTED
dá-lhe a oportunidade de ignorar, tentar novamente as tarefas com falhas na implementação secundária com falhas ou cancelar a implementação do controlador e impedir ações adicionais nas implementações secundárias.Se a implementação do controlador estiver no estado
HALTED
devido a uma implementação secundária com falha e ignorar a tarefa com falha na implementação secundária, a implementação do controlador reverte para o estadoIN_PROGRESS
.
O que se segue?
Experimente o início rápido da implementação canary.
Saiba como gerir o ciclo de vida das implementações de testes beta.
Avance para o guia relevante para o seu ambiente de destino específico: