Valide a implementação

Este documento descreve como validar uma implementação do Cloud Deploy.

Pode configurar o Cloud Deploy e o Skaffold para verificar se uma aplicação que implementou em qualquer destino está a funcionar corretamente. A validação é feita através da sua própria imagem de teste e configura o Cloud Deploy e o Skaffold para executar esses testes após a conclusão da implementação.

Por predefinição, a validação da implementação é executada no ambiente de execução do Cloud Deploy, mas também pode configurá-la para ser executada no mesmo cluster onde a aplicação está a ser executada.

Como funciona a validação da implementação?

  1. Configura o Skaffold para validação.

    Esta configuração identifica a imagem (ou as imagens) do contentor a usar para executar testes e os comandos específicos (por exemplo, um script) a executar a partir dessa imagem do contentor.

    Pode especificar mais do que uma imagem de contentor. Se especificar vários contentores, estes são executados em paralelo e não sequencialmente.

  2. Configura um ou mais alvos no pipeline de entrega para validação da implementação.

    Esta configuração ativa a validação para cargas de trabalho implementadas nesse destino.

  3. Após a implementação de uma implementação (skaffold apply), o Cloud Deploy executa o comando skaffold verify no ambiente de execução do Cloud Deploy.

    Para implementações no Google Kubernetes Engine e em clusters anexados do GKE, pode executar opcionalmente o contentor (ou os contentores) de validação no mesmo cluster em que o contentor da aplicação está a ser executado.

  4. O Skaffold invoca o teste ou os testes especificados na secção verify do seu skaffold.yaml para execução na aplicação implementada.

  5. O êxito ou a falha dos testes executados indica o êxito ou a falha da validação.

    • O êxito da validação é determinado pelo código de saída do contentor executado.

      0 indica sucesso. Um código de saída diferente de zero indica uma falha. Para gerar o resultado de validação pretendido, certifique-se de que o contentor termina com o código de saída adequado. Se mais do que um contentor for executado como parte da validação, todos têm de ser bem-sucedidos para que a validação seja bem-sucedida.

    • Se a validação falhar, a implementação também falha.

    • Se uma implementação falhar durante a validação, pode ver isso inspecionando a implementação:

      Detalhes na consola Google Cloud para a implementação, incluindo o estado da validação

  6. Pode ignorar ou tentar novamente uma validação falhada.

    Também pode terminar uma tarefa de validação em curso.

Componentes usados para a validação

O recurso rollout inclui os seguintes objetos, que suportam a validação da implementação:

  • Fase

    A coleção de operações (tarefas) numa implementação que estão logicamente agrupadas, por exemplo, uma implementação ou uma implementação e validação.

  • Emprego

    A operação específica a ser realizada numa implementação, como implementar ou validar.

  • Execução de tarefa

    Um elemento subordinado do recurso de implementação, a execução da tarefa é uma instância de uma tarefa, por exemplo, uma tentativa de implementação.

Para saber mais sobre os recursos do Cloud Deploy, consulte o artigo Arquitetura do serviço Cloud Deploy

Notificações geradas pela validação da implementação

O Cloud Deploy gera mensagens do Pub/Sub e publica-as para os seguintes eventos:

  • Criação, atualização e eliminação de execuções de trabalhos

    Estas notificações são publicadas no tópico clouddeploy-resources e contêm os seguintes atributos:

    • Resource
    • ResourceType (JobRun)
    • Action (Create, Update e Delete)
    • ProjectNumber
    • Location
    • TargetId
    • DeliveryPipelineId
    • ReleaseId
    • RolloutId
    • JobRunId

Segue-se um exemplo de uma mensagem Pub/Sub para uma execução de tarefa de criação, publicada no tópico clouddeploy-resources:

{
    "ackId": "UAYWLF1GSFE3GQhoUQ5PXiM_NSAoRRAGAE8CKF15MFcrQVh9Dz4NGXJ9YXRiWRIJBkUHeF9cEQ1iXE5EB0nq0KDVV1dKXxYGAExQeVhbHQVoWVh0Bnn7h5nK-8HjYwk9OqKarPdtO4PY2fNHZiI9XhJLLD5-My5FQV5AEkw4G0RJUytDCypYEU4EISE-MD5FU0Q",
    "message": {
      "attributes": {
        "Action": "Create",
        "DeliveryPipelineId": "dv-pipeline",
        "JobRunId": "634f8c6f-30c3-49ca-af80-68dc24d4cc5d",
        "Location": "us-central1",
        "ProjectNumber": "253401481285",
        "ReleaseId": "test-release-100",
        "Resource": "projects/253401481285/locations/us-central1/deliveryPipelines/dv-pipeline/releases/test-release-100/rollouts/test-release-100-to-dev-0001/jobRuns/634f8c6f-30c3-49ca-af80-68dc24d4cc5d",
        "ResourceType": "JobRun",
        "RolloutId": "test-release-100-to-dev-0001"