Definir uma análise personalizada

O Cloud Deploy é compatível com jobs de análise que usam alertas gerados pelo Google Cloud Observability com base em métricas e outros dados também do Google Cloud Observability. No entanto, também é possível estender o Cloud Deploy para usar outros provedores de métricas. Este documento descreve como configurar e usar um job de análise, além dos requisitos para um contêiner personalizado que inclui a lógica para analisar métricas do provedor de sua escolha.

Antes de começar

  1. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se agora.

  2. Instale a CLI do Google Cloud.

  3. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  4. Para inicializar a gcloud CLI, execute o seguinte comando:

    gcloud init
  5. Verifique se você tem as permissões necessárias para concluir este guia.

  6. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  7. Ative as APIs Compute Engine e Cloud Deploy:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com
  8. Instale a CLI do Google Cloud.

  9. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  10. Para inicializar a gcloud CLI, execute o seguinte comando:

    gcloud init
  11. Verifique se você tem as permissões necessárias para concluir este guia.

  12. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  13. Ative as APIs Compute Engine e Cloud Deploy:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com

Funções exigidas

Para receber as permissões necessárias para criar e usar jobs de análise, peça ao administrador para conceder a você os seguintes papéis do IAM na conta do seu projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Para garantir que a conta de serviço do Cloud Deploy tenha as permissões necessárias para criar e usar jobs de análise, peça ao administrador para conceder os seguintes papéis do IAM à conta de serviço do Cloud Deploy no seu projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

O administrador também pode conceder à conta de serviço do Cloud Deploy as permissões necessárias por meio de papéis personalizados ou outros papéis predefinidos.

Configurar um job de análise personalizada

Um job de análise personalizada é igual a um job de análise que usa alertas do Google Cloud Observability, mas o job personalizado usa uma ou mais tarefas que referenciam contêineres personalizados e os comandos para executar nesses contêineres para processar dados do seu provedor de métricas.

Nesta seção, descrevemos como configurar um job de análise do Cloud Deploy que usa um provedor de monitoramento que não é oGoogle Cloud .

A estrofe analysis pode ser usada diretamente em uma configuração de estratégia de implantação (strategy.standard.analysis, para uma estratégia padrão). Se você quiser configurar a análise por fase, use um teste canário personalizado (strategy.canary.customCanaryDepolyment.phaseConfigs.phaseId.analysis).

strategy:
  standard:
    analysis:
      duration: DURATION
      customChecks:
      - id: CHECK_ID
        frequency: FREQUENCY
        task:
          type: container
          image: IMAGE_NAME
          command: COMMAND
          args: [ARGS]
          env:
            [VAR_NAME: VALUE]

Em que:

  • DURATION

    É o tempo, em segundos, para executar o job de análise. Depois que a duração expirar, o job será concluído. Se a análise falhar (o contêiner retornar um código de saída diferente de zero), o job será concluído (FAILED) antes do término da duração.

  • CHECK_ID

    É um ID para a verificação individual. Esse ID precisa ser exclusivo no trabalho de análise.

  • FREQUENCY

    É a frequência, em segundos, com que a verificação individual é executada.

  • IMAGE_NAME

    É o caminho e o nome que identificam a imagem do contêiner.

  • COMMAND

    É o comando a ser executado nesse contêiner, por exemplo, um script de shell (/bin/bash).

  • ARGS

    É uma lista de argumentos para esse comando. Esta é uma lista separada por vírgulas. Se o COMMAND_TO_RUN for "/bin/sh", um dos argumentos aqui será -c, e outro será todo o comando que você quer executar no shell que está invocando.

  • VAR_NAME

    É o nome de uma variável de ambiente a ser transmitida para o contêiner. Você usa variáveis de ambiente para configurar o comportamento do contêiner. Ou seja, as variáveis e os valores informam ao contêiner o que monitorar especificamente no provedor de métricas.

    É possível usar parâmetros do sistema como variáveis de ambiente aqui.

  • VALUE

    É o valor de cada variável de ambiente. O Cloud Deploy não faz nada com essas variáveis de ambiente, exceto transmiti-las, com os respectivos valores, ao contêiner. Cabe ao seu contêiner usar os valores na lógica de análise.

Cada verificação em uma definição de análise personalizada inclui uma tarefa que faz referência a um contêiner, os comandos a serem executados nesse contêiner e as variáveis de ambiente aplicáveis a serem transmitidas para esse contêiner.

O contêiner personalizado

Na análise personalizada, o contêiner fornecido é responsável por analisar a telemetria, os registros ou outros dados do provedor de métricas usado. O job de análise do Cloud Deploy aguarda o código de retorno do contêiner.

O que o contêiner personalizado precisa fazer

O contêiner personalizado é responsável por ingerir dados do seu provedor de métricas, determinar se as métricas, os registros ou outros dados indicam um aplicativo funcionando corretamente e retornar os resultados ao Cloud Deploy.

O que o contêiner personalizado precisa retornar

O Cloud Deploy não exige nada do contêiner personalizado, além de retornar um código de saída zero ou diferente de zero. Se o contêiner retornar um código de saída diferente de zero, a análise vai falhar.

O contêiner pode gravar resultados em um arquivo chamado results.json (em formato JSON), localizado no bucket do Cloud Storage fornecido pelo Cloud Deploy. O arquivo vai conter os metadados na forma de pares de chave-valor. Não é obrigatório.

Variáveis de ambiente disponíveis

O Cloud Deploy também fornece e preenche as seguintes variáveis de ambiente no ambiente de execução. É possível usar essas variáveis de ambiente como parte do hook de implantação, do job de verificação, ou da renderização ou implantação de destino personalizado.

  • ANTHOS_MEMBERSHIP

    Para destinos do tipo ANTHOS, o nome do recurso totalmente especificado da associação do Anthos.

  • CLOUD_RUN_LOCATION

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

  • CLOUD_RUN_PROJECT

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

  • CLOUD_RUN_SERVICE

    Para destinos do tipo RUN, o nome do serviço do Cloud Run implantado.

  • CLOUD_RUN_SERVICE_URLS

    Para destinos do tipo RUN, o URL ou URLs (lista separada por vírgulas) que os usuários finais vão usar para acessar seu serviço. Você pode encontrar essas informações nos detalhes do serviço do Cloud Run no consoleGoogle Cloud . Os URLs são gerados pelo Cloud Run depois que o serviço ou os serviços do Cloud Run são implantados com sucesso. Portanto, essa variável de ambiente só está disponível em hooks postdeploy e jobs de verificação.

  • CLOUD_RUN_REVISION

    Para destinos do tipo RUN, a revisão específica do serviço do Cloud Run.

  • GKE_CLUSTER

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

  • TARGET_TYPE

    O tipo de tempo de execução específico do destino. GKE, ANTHOS ou RUN. Para metas personalizadas, esse campo não será definido.

  • CLOUD_DEPLOY_LOCATION

    A região que contém os recursos do Cloud Deploy.

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    O ID do pipeline de entrega.

  • CLOUD_DEPLOY_TARGET

    O ID da meta.

  • CLOUD_DEPLOY_PROJECT

    O número do projeto Google Cloud que contém os recursos do Cloud Deploy.

  • CLOUD_DEPLOY_PROJECT_ID

    O ID do projeto Google Cloud .

  • CLOUD_DEPLOY_RELEASE

    O ID da versão em que os hooks serão executados.

  • CLOUD_DEPLOY_ROLLOUT

    O ID do lançamento que contém os jobs para os hooks.

  • CLOUD_DEPLOY_JOB_RUN

    O ID da execução do job que representa a execução atual do job.

  • CLOUD_DEPLOY_PHASE

    A fase no lançamento que contém o job para o hook de implantação, o job de verificação ou a renderização ou implantação personalizada.

A seguir