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
-
Faça login na sua Conta do Google.
Se você ainda não tiver uma, inscreva-se agora.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
Verifique se você tem as permissões necessárias para concluir este guia.
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
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ãoserviceusage.services.enable. Saiba como conceder papéis.gcloud services enable clouddeploy.googleapis.com
compute.googleapis.com -
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
Verifique se você tem as permissões necessárias para concluir este guia.
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
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ãoserviceusage.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:
-
Executor de jobs do Cloud Deploy (
roles/clouddeploy.jobRunner) -
Usuário da conta de serviço do IAM (
roles/iam.serviceAccountUser) -
Consumidor do Service Usage (
roles/serviceusage.serviceUsageConsumer)
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:
-
Usuário da conta de serviço do IAM (
roles/iam.serviceAccountUser) -
Lançador do Cloud Deploy (
roles/clouddeploy.releaser) -
Operador do Cloud Deploy (
roles/clouddeploy.operator)
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_MEMBERSHIPPara destinos do tipo
ANTHOS, o nome do recurso totalmente especificado da associação do Anthos.CLOUD_RUN_LOCATIONPara destinos do tipo
RUN, a região em que o serviço do Cloud Run é implantado.CLOUD_RUN_PROJECTPara destinos do tipo
RUN, o projeto em que o serviço do Cloud Run foi criado.CLOUD_RUN_SERVICEPara destinos do tipo
RUN, o nome do serviço do Cloud Run implantado.CLOUD_RUN_SERVICE_URLSPara 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_REVISIONPara destinos do tipo
RUN, a revisão específica do serviço do Cloud Run.GKE_CLUSTERPara 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_TYPEO tipo de tempo de execução específico do destino.
GKE,ANTHOSouRUN. Para metas personalizadas, esse campo não será definido.CLOUD_DEPLOY_LOCATIONA região que contém os recursos do Cloud Deploy.
CLOUD_DEPLOY_DELIVERY_PIPELINEO ID do pipeline de entrega.
CLOUD_DEPLOY_TARGETO ID da meta.
CLOUD_DEPLOY_PROJECTO número do projeto Google Cloud que contém os recursos do Cloud Deploy.
CLOUD_DEPLOY_PROJECT_IDO ID do projeto Google Cloud .
CLOUD_DEPLOY_RELEASEO ID da versão em que os hooks serão executados.
CLOUD_DEPLOY_ROLLOUTO ID do lançamento que contém os jobs para os hooks.
CLOUD_DEPLOY_JOB_RUNO ID da execução do job que representa a execução atual do job.
CLOUD_DEPLOY_PHASEA 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
Saiba como configurar a análise de implantação.
Consulte o esquema de configuração para análise na referência de configuração do Cloud Deploy.
Saiba mais sobre a automação de implantação.
Saiba mais sobre estratégias de implantação.