Este documento descreve como configurar e usar implementações canary personalizadas para implementar as suas aplicações em todos os tipos de destino com o Cloud Deploy.
Como funcionam as implementações canary personalizadas
Quando implementa através de uma estratégia de implementação canary personalizada, o Cloud Deploy não modifica os seus manifestos para facilitar a configuração de equilíbrio de tráfego escolhida. Em alternativa, é responsável por fornecer manifestos que são aplicados ao tempo de execução de destino para cada fase de teste canário.
Certifique-se de que tem as autorizações necessárias
Além de outras autorizações de gestão de identidades e acessos necessárias para usar o Cloud Deploy, precisa das seguintes autorizações para realizar ações adicionais que podem ser necessárias para uma implementação canary:
clouddeploy.rollouts.advance
clouddeploy.rollouts.ignoreJob
clouddeploy.rollouts.cancel
clouddeploy.rollouts.retryJob
clouddeploy.jobRuns.get
clouddeploy.jobRuns.list
clouddeploy.jobRuns.terminate
Consulte as funções e autorizações de IAM para mais informações sobre as funções disponíveis que incluem estas autorizações.
Prepare o seu skaffold.yaml
O ficheiro skaffold.yaml
define como os seus manifestos são renderizados e implementados.
Para uma implementação de teste canary personalizada, é responsável por definir perfis associados a cada fase de teste canary para facilitar a configuração de equilíbrio de tráfego escolhida. Estes perfis estão mapeados para fases na configuração da estratégia do pipeline de entrega.
Segue-se um exemplo de uma configuração skaffold.yaml
usada por um teste
canário personalizado:
apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: canary-25
manifests:
rawYaml:
- canary-25-resources.yaml
- name: canary-50
manifests:
rawYaml:
- canary-50-resources.yaml
- name: stable
manifests:
rawYaml:
- stable-resources.yaml
Configure um canary personalizado
Com a configuração de testes canários personalizados, especifica o seguinte na definição do pipeline de entrega:
Nomes das fases de implementação
Numa implementação canary totalmente automatizada, o Cloud Deploy atribui nomes às fases (por exemplo,
canary-25
,canary-75
estable
). No entanto, com um teste canário personalizado, pode dar qualquer nome a cada fase, desde que seja único entre todas as fases desta fase canária e respeite as restrições de ID de recursos. No entanto, o nome da fase final (100%) tem de serstable
.Objetivos de percentagem para cada fase
Especifique as percentagens separadamente, por fase.
Perfis do Skaffold a usar para a fase
Pode usar um perfil do Skaffold separado para cada fase ou o mesmo perfil, ou qualquer combinação. Além disso, cada perfil pode usar uma definição de serviço do Cloud Run diferente. Também pode usar mais do que um perfil para uma determinada fase. O Cloud Deploy combina-os.
Se existe uma tarefa de validação para a fase
Lembre-se de que, se estiver a ativar a validação, tem de configurar o seu
skaffold.yaml
também para validação.Se existem tarefas de pré-implementação ou pós-implementação para a fase
Se estiver a ativar tarefas de pré-implementação ou pós-implementação, tem de configurar o seu
skaffold.yaml
para essas tarefas.
Elementos de configuração de canary personalizados
O YAML seguinte mostra a configuração das fases da implementação canary totalmente personalizada:
strategy:
canary:
# Custom configuration for each canary phase
customCanaryDeployment:
phaseConfigs:
- phaseId: "PHASE1_NAME"
percentage: PERCENTAGE1
profiles: [ "PROFILE_NAME" ]
verify: true | false
predeploy:
actions: "PREDEPLOY_ACTION"
postdeploy:
actions: "POSTDEPLOY_ACTION"
- …
- phaseId: "stable"
percentage: 100
profiles: [ "LAST_PROFILE_NAME" ]
verify: true|false
predeploy:
actions: "PREDEPLOY_ACTION"
postdeploy:
actions: "POSTDEPLOY_ACTION"
Neste YAML
PHASE1_NAME
É o nome da fase. O nome de cada fase tem de ser exclusivo.
[ "PROFILE_NAME" ]
É o nome do perfil a usar para a fase. Pode usar o mesmo perfil para cada fase, um perfil diferente para cada fase ou qualquer combinação. Além disso, pode especificar mais do que um perfil. O Cloud Deploy usa todos os perfis que especificar, além do perfil ou manifesto usado pela fase geral.
stable
A fase final tem de ter o nome
stable
.PERCENTAGE1
É a percentagem a implementar para a primeira fase. Cada fase tem de ter um valor percentual único e esse valor tem de ser uma percentagem inteira (não
10.5
, por exemplo), e as fases têm de estar por ordem ascendente.verify: true|false
Indica ao Cloud Deploy se deve incluir uma tarefa de validação para a fase. Tenha em atenção que, para cada fase a usar a validação, o Skaffold usa o mesmo perfil para a validação que é especificado para a renderização e a implementação dessa fase.
PREDEPLOY_ACTION
É igual ao ACTION_NAME que usou no seu
skaffold.yaml
para definir a ação personalizada que quer executar antes da implementação.POSTDEPLOY_ACTION
É o mesmo que o ACTION_NAME que usou no seu
skaffold.yaml
para definir a ação personalizada que quer executar após a implementação.
A percentagem da última fase tem de ser 100
. As fases são executadas
pela ordem em que as configura nesta secção customCanaryDeployment
, mas se
os valores percentuais não estiverem por ordem ascendente, o comando para
registar o pipeline de entrega
falha com um erro.
Tenha em atenção que a configuração de um teste canário personalizado não inclui uma secção runtimeConfig
. Se incluir runtimeConfig
, é considerado um
canário automatizado personalizado.
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.
Saiba mais sobre a implementação em paralelo.
Saiba mais sobre as estratégias de implementação do Cloud Deploy.