verifique sua implantação

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Neste documento, descrevemos como verificar uma implantação do Google Cloud Deploy.

É possível configurar o Google Cloud Deploy e o Skaffold para verificar se um aplicativo implantado em qualquer destino está funcionando corretamente. A verificação é feita usando sua própria imagem de teste e você configura o Google Cloud Deploy e o Skaffold para executar esses testes após a conclusão da implantação.

Como funciona a verificação da implantação?

  1. Você configura o Skaffold para verificação.

    Essa configuração identifica a imagem ou as imagens de contêiner a serem usadas para executar testes, e os comandos específicos (script, por exemplo) a serem executados dessa imagem de contêiner.

  2. Configure um ou mais destinos no pipeline de entrega para verificação da implantação.

    Essa configuração ativa a verificação no destino.

  3. Depois que um lançamento é implantado (skaffold apply), o Google Cloud Deploy executa o comando skaffold verify no próprio ambiente de execução.

  4. O Skaffold invoca o teste ou os testes especificados na estrofe verify do skaffold.yaml para execução no aplicativo implantado.

  5. Se algum dos testes falhar, a verificação vai falhar.

    • Como a verificação falhou, o lançamento também falhou.

    • Se uma implantação falhar durante a verificação, você poderá ver isso inspecionando o lançamento:

      Detalhes no Console do Google Cloud para o lançamento, incluindo o status da verificação

  6. Você pode tentar novamente a verificação com falha.

Componentes usados para verificação

O recurso rollout inclui os seguintes objetos, que são compatíveis com a verificação da implantação:

  • Fase

    A coleção de operações (jobs) em um lançamento que são agrupadas logicamente. Por exemplo, uma implantação ou uma implantação e verificação.

  • Job

    A operação específica a ser executada em um lançamento, como implantar ou verificar.

  • Execução do job

    Um filho do recurso de lançamento, a execução do job é uma instância de um job, por exemplo, uma tentativa de implantação.

Para saber mais sobre os recursos do Google Cloud Deploy, consulte Arquitetura de serviço do Google Cloud Deploy.

Notificações geradas pela verificação da implantação

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

  • Criar, atualizar e excluir job

    Essas 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

Veja a seguir um exemplo de mensagem do Pub/Sub de uma execução de execução de job, 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"
      },
      "messageId": "5572937706805411",
      "publishTime": "2022-09-07T14:00:46.040Z"
    }
  },
  • Início, execução e falha do job

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

    • Resource
    • ResourceType (JobRun)
    • Action (Start, Succeed e Failure)
    • ProjectNumber
    • Location
    • TargetId
    • DeliveryPipelineId
    • ReleaseId
    • RolloutId
    • JobRunId
    • PhaseId
    • JobId
    • JobType (Deploy ou Verify)

Veja a seguir um exemplo de mensagem do Pub/Sub de uma execução de job com falha, publicada no tópico clouddeploy-operations:

{
    "ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUUBAgUBXx9cEFPdVhec2hRDRlyfWB9aVsbCAUXU3cJURsHaE5tdR-6xcvaS0NVb18UAgRFWndfXhMEblhfcy-fkK3HwvT9U0AvOemNgdZpe6jHiulvZiM9XxJLLD5-My5FQV5AEkw4G0RJUytDCypYEU4EISE-MD5FUw",
    "message": {
      "attributes": {
        "Action": "Failure",
        "DeliveryPipelineId": "dv-pipeline",
        "JobId": "verify",
        "JobRunId": "b389224a-c259-4a00-ab75-c22e48bc3136",
        "JobType": "Verify",
        "Location": "us-central1",
        "PhaseId": "stable",
        "ProjectNumber": "253401481285",
        "ReleaseId": "test-release-101",
        "Resource": "projects/253401481285/locations/us-central1/deliveryPipelines/dv-pipeline/releases/test-release-101/rollouts/test-release-101-to-dev-0001/jobRuns/b389224a-c259-4a00-ab75-c22e48bc3136",
        "ResourceType": "JobRun",
        "RolloutId": "test-release-101-to-dev-0001",
        "TargetId": "dev"
      },
      "messageId": "5573609905896436",
      "publishTime": "2022-09-07T15:35:37.906Z"
    }
  },

Configurar o Google Cloud Deploy para verificação de implantação

Ativar a verificação da implantação para um destino do Google Cloud Deploy consiste em adicionar uma propriedade verify: true a um determinado destino (ou destinos) em uma progressão de pipeline de entrega, como mostrado neste exemplo:

apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
 name: my-demo-app
description: main application pipeline
serialPipeline:
 stages:
 - targetId: dev
   profiles: []
   strategy:
     standard:
       verify: true
 - targetId: prod
   profiles: []
   strategy:
     standard:
       verify: false

Nesta configuração, a verificação da implantação é ativada no destino dev, mas não no destino prod. verify: false é equivalente à omissão da propriedade verify ou de toda a estrofe strategy.

A operação de verificação é executada no próprio ambiente de execução. Esse ambiente de execução pode ser configurado para VERIFY da mesma forma que para RENDER e DEPLOY.

Configurar o Skaffold para verificação de implantação

A ativação da verificação de implantação para um destino requer uma estrofe verify no arquivo de configuração skaffold.yaml da sua implantação. Essa configuração pode ser para um perfil específico do Skaffold, se você estiver usando perfis separados por destino.

Essa estrofe verify identifica um contêiner a ser executado para fazer a verificação, por exemplo, um teste de integração.

Veja um exemplo de skaffold.yaml que inclui uma estrofe de verify:

apiVersion: skaffold/v3alpha1
kind: Config
build:
  artifacts:
    - image: integration-test
      context: integration-test
manifests:
  rawYaml:
  - kubernetes.yaml
deploy:
  kubectl: {}
verify:
- name: verify-integration-test
  container:
    name: integration-test
    image: integration-test
    command: ["./test-systems.sh"]
- name: verify-endpoint-test
  container:
    name: alpine
    image: alpine
    command: ["/bin/sh"]
    args: ["-c", "wget $ENDPOINT_URL"]

Este exemplo simples mostra uma estrofe verify que identifica um contêiner a ser usado e um script de teste a ser executado nesse contêiner.

Repetir a verificação

Quando um job de verificação falhar, será possível repetir a verificação, criando uma nova execução de job:

gcloud alpha deploy rollouts retry-job ROLLOUT_NAME \
             --job-id=JOB_ID --phase-id=PHASE_ID \
             --delivery-pipeline=PIPELINE_NAME --release=RELEASE_NAME \
             --region=REGION

Tentar novamente a verificação muda o estado do lançamento de FAILED para IN_PROGRESS.

Só é possível repetir a verificação de um lançamento cujo job de verificação falhou.

Variáveis de ambiente disponíveis

O Google Cloud Deploy fornece e preenche as seguintes variáveis de ambiente no ambiente de execução VERIFY, que você pode usar para seus testes:

  • TARGET_TYPE

    O tipo de ambiente de execução específico do destino. GKE, ANTHOS ou RUN.

  • CLUSTER do GKE

    Para destinos do tipo GKE, o nome do recurso totalmente especificado do cluster do Google Kubernetes Engine, por exemplo, projects/p/locations/us-central1/clusters/dev.

  • ANTHOS_MEMBERSHIP

    Para destinos do tipo ANTHOS, o nome do recurso totalmente especificado da assinatura do Anthos.

  • CLOUD_RUN_LOCATION

    Para destinos do tipo RUN, a região em que o serviço do Cloud Run está implantado.

  • CLOUD_RUN_PROJECT

    Para destinos do tipo RUN, o projeto em que o serviço do Cloud Run foi criado.