Implementações de teste personalizadas

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 e stable). 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 ser stable.

  • 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?