Analisar seu aplicativo usando métricas
Neste guia de início rápido, mostramos como usar o Cloud Deploy para analisar o serviço do Cloud Run implantado com base nas métricas do Google Cloud Observability e garantir que o aplicativo esteja funcionando como esperado.
Neste guia de início rápido, você fará o seguinte:
Crie e implante um serviço do Cloud Run.
Nesse caso, você não vai usar o Cloud Deploy para implantar.
Crie uma verificação de tempo de atividade no Google Cloud Observability.
Essa verificação monitora seu serviço do Cloud Run para garantir que ele esteja em execução.
Crie uma política de alertas no Cloud Monitoring.
Por padrão, a análise do Cloud Deploy pode usar vários tipos de métricas do Google Cloud Observability. Essa política cria um alerta se uma verificação de tempo de atividade indicar um problema.
Crie uma configuração do Skaffold para identificar o serviço do Cloud Run.
Defina o pipeline de entrega e o destino do Cloud Deploy.
Esse pipeline inclui apenas um estágio e um destino, além da definição de uma tarefa de análise.
Crie uma versão, que é implantada automaticamente no destino.
Depois que o aplicativo é implantado, a análise é executada como um job no lançamento.
O serviço será implantado com sucesso no destino, mas o lançamento vai falhar porque a política de alertas vai gerar um alerta.
Mude a definição do serviço do Cloud Run para aumentar a contagem de instâncias do serviço e crie uma nova versão.
Desta vez, o serviço será implantado com sucesso, e o lançamento será concluído.
Antes de começar
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
Verify that billing is enabled for your Google Cloud project.
Ative as APIs Cloud Deploy, Cloud Build, Cloud Run e Cloud Storage.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder
papéis.
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 initIn the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
Verify that billing is enabled for your Google Cloud project.
Ative as APIs Cloud Deploy, Cloud Build, Cloud Run e Cloud Storage.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder
papéis.
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 initFunções exigidas
Para garantir que a conta de serviço do Cloud Deploy tenha as permissões necessárias para executar operações do Cloud Deploy e fazer implantações no Cloud Run, peça ao administrador para conceder os seguintes papéis do IAM à conta de serviço do Cloud Deploy no seu projeto:
-
Desenvolvedor do Cloud Run (
roles/run.developer) -
Executor do Cloud Deploy (
roles/clouddeploy.jobRunner) -
Usuário da conta de serviço do IAM (
roles/iam.serviceAccountUser) -
Leitor de alertas do Monitoring (
roles/monitoring.alertViewer) -
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.
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.
Saiba mais sobre a conta de serviço do Cloud Deploy.
Implantar um serviço do Cloud Run
Este guia de início rápido usa uma política de alertas que exige que o
Cloud Run já exista. Vamos implantar um aqui e, em uma seção posterior, vamos definir um service.yaml usando o mesmo nome de serviço.
Execute o comando a seguir para criar o serviço inicial:
gcloud run deploy my-analysis-run-service \
--image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a \
--project=PROJECT_ID \
--region=us-central1 \
--allow-unauthenticated
Substitua PROJECT_ID pela ID do seu projeto.
Criar uma verificação de tempo de atividade do Google Cloud Observability
Essa verificação monitora o serviço em execução para confirmar que ele está funcionando. Em uma seção posterior, você vai criar uma política de alertas do Google Cloud Observability que gera um alerta se o serviço não tiver pelo menos uma instância disponível em execução.
Para criar a verificação de tempo de atividade, execute o seguinte comando:
gcloud monitoring uptime create my-analysis-run-service-cloud-run-uptime-check \ --resource-type=cloud-run-revision \ --resource-labels="project_id=PROJECT_ID,location=us-central1,service_name=my-analysis-run-service" \ --project=PROJECT_ID \ --protocol=https \ --path="/" \ --port=443 \ --period=1 \ --timeout=10 \ --service-agent-auth="oidc-token" \ --status-classes="2xx"Copie o ID da verificação de tempo de atividade.
A saída do comando que você acabou de executar contém o ID.
Preparar a configuração do Skaffold e a definição de serviço
Neste guia de início rápido, você cria um arquivo skaffold.yaml, que identifica o
manifesto a ser usado para implantar o serviço de amostra do Cloud Run, e
também define o arquivo service.yaml que define o
próprio Cloud Run.
Abra uma janela do terminal.
Crie um novo diretório e navegue até ele.
mkdir deploy-analysis-run-quickstart
cd deploy-analysis-run-quickstart
- Crie um arquivo chamado
skaffold.yamlcom o seguinte conteúdo:
apiVersion: skaffold/v4beta7
kind: Config
manifests:
rawYaml:
- service.yaml
deploy:
cloudrun: {}
Consulte a referência do skaffold.yaml
para mais informações sobre esse arquivo de configuração.
- Crie um arquivo chamado
service.yamlcom o seguinte conteúdo:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: my-analysis-run-service
annotations:
run.googleapis.com/scalingMode: manual
run.googleapis.com/manualInstanceCount: 0
spec:
template:
spec:
containers:
- image: my-app-image
Esse arquivo é uma definição de serviço do Cloud Run, que é usada para
implantar o aplicativo. A imagem do contêiner a ser implantada é definida aqui como um
marcador de posição, my-app-image, que é substituído pela imagem específica quando você
cria o lançamento.
Observe que definimos o modo de escalonamento como manual e a contagem de instâncias como 0.
Isso significa que o serviço implantado não poderá receber tráfego e não haverá instâncias em execução, o que vai acionar um alerta. Você vai configurar esse alerta em seguida.
Criar uma política de alertas
Este guia de início rápido usa uma política de alertas do Google Cloud Observability. Essa política de alertas gera um alerta quando o serviço do Cloud Run falha na verificação de tempo de atividade que você criou anteriormente.
No diretório
deploy-analysis-run-quickstart, crie um arquivo chamadopolicy.yamlcom o seguinte conteúdo:displayName: Cloud Run service uptime check userLabels: policy-for: analysis-run-pipeline combiner: OR conditions: - displayName: Failure of uptime check UPTIME_ID conditionThreshold: filter: metric.type="monitoring.googleapis.com/uptime_check/check_passed" AND metric.label.check_id="UPTIME_ID" AND resource.type="cloud_run_revision" aggregations: - alignmentPeriod: 60s crossSeriesReducer: REDUCE_COUNT_FALSE groupByFields: - resource.label.* perSeriesAligner: ALIGN_NEXT_OLDER comparison: COMPARISON_GT duration: 60s thresholdValue: 1.0Substitua
UPTIME_IDpelo ID da verificação de tempo de atividade que você criou antes.Execute o comando a seguir para criar a política:
gcloud monitoring policies create \ --policy-from-file=policy.yaml\ --project=PROJECT_IDSubstitua
PROJECT_IDpela ID do seu projeto.Copie o ID da política da saída do comando que você acabou de executar.
Desta vez, copie todo o ID do recurso, incluindo o caminho. Você vai usar esse ID na próxima seção, na configuração de análise do pipeline de entrega.
Criar o pipeline e o destino de entrega
Este pipeline de entrega tem uma etapa para um destino: analysis-staging.
No diretório
deploy-analysis-run-quickstart, crie um novo arquivo,clouddeploy.yaml, com o seguinte conteúdo:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: deploy-analysis-demo-app-run description: main application pipeline serialPipeline: stages: - targetId: analysis-staging profiles: [] strategy: standard: analysis: duration: 300s googleCloud: alertPolicyChecks: - id: check-1 alertPolicies: - ALERT_POLICY_ID --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: analysis-staging description: staging Run service run: location: projects/PROJECT_ID/locations/us-central1Neste YAML, substitua
ALERT_POLICY_IDpela saída do comandogcloud monitoring policies listque você executou anteriormente e substituaPROJECT_IDpelo ID do projeto que você está usando.Registre o pipeline e o destino com o serviço do Cloud Deploy:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_IDAgora você tem um pipeline de entrega com um destino pronto para implantar seu aplicativo.
Confirme o pipeline e o destino:
No console Google Cloud , navegue até a página Pipelines de entrega do Cloud Deploy para conferir a lista dos seus pipelines de entrega disponíveis.
Abrir a página "Pipelines de entrega"
O pipeline de entrega que você acabou de criar é mostrado, com um destino listado na coluna Destinos.

Criar uma versão
Uma versão é o recurso central do Cloud Deploy que representa as mudanças que estão sendo implantadas. O pipeline de entrega define o ciclo de vida dessa versão. Consulte Arquitetura de serviço do Cloud Deploy para mais detalhes sobre esse ciclo de vida.
Execute o seguinte comando no diretório deploy-analysis-run-quickstart para
criar um recurso release que representa a imagem do contêiner a ser implantada:
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=deploy-analysis-demo-app-run \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
Observe a flag --images=, que você usa para substituir o marcador de posição (my-app-image) na definição de serviço pela imagem específica qualificada por SHA. O Google recomenda que você crie modelos para as definições de serviço dessa forma
e use nomes de imagens qualificados por SHA na criação de versões.
Assim como em todas as versões (a menos que incluam --disable-initial-rollout),
o Cloud Deploy também cria automaticamente um recurso de
implantação. O aplicativo é
implantado automaticamente no único destino configurado para esse pipeline de
entrega.
Conferir os resultados no console do Google Cloud
Após alguns minutos, a versão será implantada no ambiente de execução de destino. Você pode visualizar o item.
No console Google Cloud , navegue até a página Pipelines de entrega do Cloud Deploy para conferir seu pipeline de entrega ("deploy-analysis-demo-app-run").
Clique no nome do pipeline de entrega ("deploy-analysis-demo-app-run").
A visualização do pipeline mostra o status de implantação do app. Como há apenas um estágio no pipeline, a visualização mostra apenas um nó.

E sua versão é listada na guia Versões em Detalhes do pipeline de entrega.
Clique na guia Rollouts, em Detalhes do pipeline de entrega.
Clique no nome do lançamento para conferir os detalhes.
A análise é listada como um job.

Uma análise com falha
O job de análise especificado na configuração do pipeline de entrega é executado como parte desse lançamento, depois que o aplicativo é implantado. Essa análise vai falhar porque a política de alertas precisa acionar um alerta. O lançamento vai falhar devido a essa falha na análise.
Vamos fazer uma mudança e criar outra versão, que deve ser bem-sucedida.
Mudar a definição de serviço e criar um novo lançamento
Agora, vamos mudar a contagem de instâncias na definição de serviço para que haja uma instância em execução do serviço e o alerta não seja acionado.
Edite o arquivo de definição do Cloud Run,
service.yaml, para mudar o valor derun.googleapis.com/manualInstanceCountde0para1.Execute o comando a seguir no mesmo diretório
deploy-analysis-run-quickstartpara criar outrorelease:gcloud deploy releases create test-release-002 \ --project=PROJECT_ID \ --region=us-central1 \ --delivery-pipeline=deploy-analysis-demo-app-run \ --images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
Desta vez, o lançamento vai ser bem-sucedido. Isso acontece porque o serviço do Cloud Run agora tem uma instância em execução, então a verificação de tempo de atividade não vai invocar um alerta da política de alertas.
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.
Exclua o serviço do Cloud Run:
gcloud run services delete my-analysis-run-service \ --region=us-central1 \ --project=PROJECT_IDPara excluir o pipeline de entrega, o destino, a versão e o lançamento, execute o comando a seguir no diretório que contém a definição do pipeline de entrega:
gcloud deploy delete --file=clouddeploy.yaml \ --force \ --region=us-central1 \ --project=PROJECT_IDExclua a política de alertas do Google Cloud Observability:
gcloud monitoring policies delete ALERT_POLICY_IDExclua os buckets do Cloud Storage criados pelo Cloud Deploy.
Uma termina com
_clouddeploy, e a outra é[region].deploy-artifacts.[project].appspot.com.
Pronto, você concluiu as etapas deste início rápido.