Implantar um app no Cloud Run usando o Cloud Deploy
Nesta página, mostramos como usar o Cloud Deploy para enviar uma imagem de aplicativo de amostra chamada hello para uma sequência de dois serviços ou jobs do Cloud Run.
Neste guia de início rápido, você fará o seguinte:
Criar uma configuração do Skaffold
Crie arquivos de configuração para dois serviços ou jobs do Cloud Run.
Esses arquivos definem os serviços ou jobs e especificam as imagens de contêiner (pré-criadas) a serem implantadas.
Defina o pipeline de entrega e os destinos de implantação do Cloud Deploy, que apontam para os dois serviços ou os dois jobs.
Instancie o pipeline de entrega criando uma versão, que implanta automaticamente no primeiro destino.
Promova a versão para a segunda segmentação.
Veja os dois lançamentos no console do Google Cloud .
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
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
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
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 -
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
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
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 a conta de serviço padrão do Compute Engine tem permissões suficientes.
A conta de serviço já pode ter as permissões necessárias. Essas etapas estão incluídas para projetos que desativam concessões automáticas de papéis para contas de serviço padrão.
- Adicionar o papel
clouddeploy.jobRunner:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner" - Conceda à conta de serviço de execução padrão
actAsa permissão para implantar cargas de trabalho no Cloud Run:gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID - Adicione as permissões de desenvolvedor do Cloud Run:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/run.developer"Se você tiver problemas para adicionar um desses papéis, entre em contato com o administrador do projeto.
Abra uma janela de terminal.
Crie um novo diretório chamado
deploy-run-quickstarte navegue até ele.mkdir deploy-run-quickstart cd deploy-run-quickstartCrie um arquivo chamado
skaffold.yamlcom o seguinte conteúdo:Serviços
apiVersion: skaffold/v4beta7 kind: Config metadata: name: deploy-run-quickstart profiles: - name: dev manifests: rawYaml: - run-service-dev.yaml - name: prod manifests: rawYaml: - run-service-prod.yaml deploy: cloudrun: {}Jobs
apiVersion: skaffold/v4beta7 kind: Config metadata: name: deploy-run-quickstart profiles: - name: dev manifests: rawYaml: - run-job-dev.yaml - name: prod manifests: rawYaml: - run-job-prod.yaml deploy: cloudrun: {}Esse arquivo é uma configuração mínima do Skaffold que identifica seus serviços ou jobs do Cloud Run. Consulte a referência
skaffold.yamlpara mais informações sobre esse arquivo.Crie um arquivo chamado
run-service-dev.yamlcom o seguinte conteúdo:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: deploy-run-service-dev spec: template: spec: containers: - image: my-app-imageEsse arquivo define um serviço do Cloud Run. Como o nome
deploy-run-service-devimplica, esse é o serviçodeve corresponde ao primeiro destino na progressão do pipeline de entrega.Crie um arquivo chamado
run-service-prod.yamlcom o seguinte conteúdo:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: deploy-run-service-prod spec: template: spec: containers: - image: my-app-imageEsse arquivo define outro serviço do Cloud Run e, como o nome
deploy-run-service-prodimplica, esse é o serviçoprod, que corresponde ao segundo destino na progressão do pipeline de entrega.Crie um arquivo chamado
run-job-dev.yamlcom o seguinte conteúdo:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: deploy-run-job-dev spec: template: spec: template: spec: containers: - image: my-app-imageEsse arquivo define um job do Cloud Run. Como o nome
deploy-run-job-devimplica, esse é o jobdev, que corresponde à primeira meta na progressão do pipeline de entrega.Crie um arquivo chamado
run-job-prod.yamlcom o seguinte conteúdo:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: deploy-run-job-prod spec: template: spec: template: spec: containers: - image: my-app-imageEsse arquivo define outro job do Cloud Run. Como o nome
deploy-run-job-prodimplica, este é o jobprode corresponde ao segundo destino na progressão do pipeline de entrega.No diretório
deploy-run-quickstart, crie um novo arquivo:clouddeploy.yaml, com o seguinte conteúdo:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: my-run-demo-app-1 description: main application pipeline serialPipeline: stages: - targetId: run-qsdev profiles: [dev] - targetId: run-qsprod profiles: [prod] --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: run-qsdev description: Cloud Run development service run: location: projects/PROJECT_ID/locations/us-central1 --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: run-qsprod description: Cloud Run production service run: location: projects/PROJECT_ID/locations/us-central1Registre o pipeline e os destinos com o serviço Cloud Deploy:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_IDAgora você tem um pipeline com destinos prontos para implantar seu aplicativo no primeiro destino.
Confirme o pipeline e os destinos:
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 é exibido, e os dois destinos são listados na coluna Destinos.

Na página Pipelines de entrega, clique no pipeline
my-run-demo-app-1.Abrir a página "Pipelines de entrega"
A página de detalhes do pipeline de entrega mostra uma representação gráfica do progresso do pipeline de entrega. Neste caso, ele mostra que a versão foi implantada no destino
run-qsdev.
No primeiro destino na visualização do pipeline de exibição, clique em Promover.
A caixa de diálogo Promover versão é exibida. Ela mostra os detalhes do destino que você está promovendo.
Clique em Promover.
A versão agora está na fila para implantação em
run-qsprod. Quando a implantação estiver concluída, a visualização do pipeline de entrega a mostrará como implantada:
No console Google Cloud , navegue até a página Pipelines de entrega do Cloud Deploy para visualizar seu pipeline de entrega my-run-demo-app-1.
Clique no nome do pipeline de entrega "my-run-demo-app-1".
A visualização do pipeline mostra o progresso do aplicativo por meio do pipeline.

E sua versão é listada na guia Versões em Detalhes do pipeline de entrega.
Clique no nome da versão,
test-release-001.Seus lançamentos aparecem em Lançamentos. É possível clicar em um lançamento para ver os detalhes dele, incluindo o registro de implantação.

Exclua o serviço ou job do Cloud Run
deploy-qs-dev:Serviços
gcloud run services delete deploy-run-service-dev --region=us-central1 --project=PROJECT_IDJobs
gcloud run jobs delete deploy-run-job-dev --region=us-central1 --project=PROJECT_IDExclua o serviço
deploy-qs-prod:Serviços
gcloud run services delete deploy-run-service-prod --region=us-central1 --project=PROJECT_IDJobs
gcloud run jobs delete deploy-run-job-prod --region=us-central1 --project=PROJECT_IDExclua o pipeline de entrega, os destinos, a versão e os lançamentos:
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_IDExclua os buckets do Cloud Storage criados pelo Cloud Deploy.
Uma termina com
_clouddeploy, e a outra é[region].deploy-artifacts.[project].appspot.com.
Se você já tiver a CLI instalada, verifique se está executando a versão mais recente:
gcloud components update
Preparar a configuração do Skaffold
O Cloud Deploy usa o Skaffold para fornecer detalhes sobre o que implantar e como fazer isso corretamente para seus destinos separados.
Neste guia de início rápido, você cria um arquivo skaffold.yaml, que identifica a definição de serviço ou job do Cloud Run a ser usada para implantar o app de amostra.
Preparar serviços ou jobs do Cloud Run
Para este guia de início rápido, você vai criar dois serviços ou jobs diferentes do Cloud Run no mesmo projeto. O Cloud Deploy também oferece suporte à implantação em vários projetos. Além disso, usamos perfis do Skaffold para permitir que dois serviços ou jobs estejam no mesmo projeto. Ao usar projetos diferentes, talvez não seja necessário usar perfis do Skaffold.
Serviços
Esses arquivos são definições simples de serviço do Cloud Run,
que são usadas 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.
Jobs
Esses arquivos são definições simples de jobs do Cloud Run, que são
usadas 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.
Criar pipelines e entregas de entrega
É possível definir o pipeline e os destinos em um arquivo ou em arquivos separados. Neste guia de início rápido, você cria um único arquivo.
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-run-quickstart para criar um recurso release que representa a imagem do contêiner a ser implantada:
Serviços
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=my-run-demo-app-1 \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
Jobs
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=my-run-demo-app-1 \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/job@sha256:8eb3f5e72586de6375abe95aa67511c57c61d35fb37d5670e4d68624a68ef916
Observe a flag --images=, que você usa para substituir o marcador de posição (my-app-image) na definição de serviço ou job pela imagem específica qualificada por SHA. O Google recomenda que você crie modelos para as definições de serviço e de job 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 primeiro destino da progressão.
Promover a versão
Conferir os resultados no console do Google Cloud
Como acessar o serviço do Cloud Run
Por padrão, é necessário fazer a autenticação para acessar os serviços do Cloud Run recém-criados. Consulte a visão geral da autenticação do Cloud Run para saber como fornecer credenciais e qual configuração do Identity and Access Management é necessária para acessar o serviço sem autenticação. Isso não se aplica a jobs do Cloud Run.
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.
Pronto, você concluiu as etapas deste início rápido.