Implemente uma app no Cloud Run através do Cloud Deploy
Esta página mostra como usar o Cloud Deploy para entregar uma imagem de aplicação de exemplo denominada hello a uma sequência de dois serviços do Cloud Run ou dois trabalhos do Cloud Run.
Neste início rápido, vai fazer o seguinte:
Crie uma configuração do Skaffold
Crie ficheiros de configuração para dois serviços do Cloud Run ou duas tarefas.
Estes ficheiros definem os serviços ou as tarefas e especificam as imagens de contentores (pré-criadas) a implementar.
Defina o pipeline de entrega e os destinos de implementação do Cloud Deploy, que apontam para os dois serviços ou os dois trabalhos.
Instancie a sua pipeline de entrega criando um lançamento, que é implementado automaticamente no primeiro destino.
Promova o lançamento para o segundo destino.
Veja ambas as implementações na Google Cloud consola.
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.
Se estiver a usar um projeto existente para este guia, verifique se tem as autorizações necessárias para concluir este guia. Se criou um novo projeto, já tem as autorizações necessárias.
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 the serviceusage.services.enable permission. Learn how to grant
roles.
Install the Google Cloud CLI.
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
Para inicializar a CLI gcloud, 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.
Se estiver a usar um projeto existente para este guia, verifique se tem as autorizações necessárias para concluir este guia. Se criou um novo projeto, já tem as autorizações necessárias.
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 the serviceusage.services.enable permission. Learn how to grant
roles.
Install the Google Cloud CLI.
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud initFunções necessárias
Para obter as autorizações de que
precisa para criar um pipeline de entrega e uma versão do Cloud Deploy,
peça ao seu administrador para lhe conceder a função de IAM de
executor de tarefas do Cloud Deploy (roles/clouddeploy.jobrunner)
no seu projeto.
Para garantir que a conta de serviço do Cloud Deploy tem as autorizações necessárias para executar operações do Cloud Deploy e implementar no Cloud Run, peça ao seu administrador para conceder à conta de serviço do Cloud Deploy as seguintes funções de IAM no seu projeto:
-
Cloud Run Developer (
roles/run.developer) -
Utilizador da conta de serviço de IAM (
roles/iam.serviceAccountUser)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
O administrador também pode conceder à conta de serviço do Cloud Deploy as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Prepare a configuração do Skaffold
O Cloud Deploy usa o Skaffold para fornecer os detalhes sobre o que implementar e como o implementar corretamente para os seus alvos separados.
Para este início rápido, cria um ficheiro skaffold.yaml, que identifica o serviço ou a definição de tarefa do Cloud Run a usar para implementar a app de exemplo.
Abra uma janela de terminal.
Crie um novo diretório com o nome
deploy-run-quickstarte navegue até ele.mkdir deploy-run-quickstart cd deploy-run-quickstartCrie um ficheiro denominado
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: {}Empregos
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: {}Este ficheiro é uma configuração mínima do Skaffold que identifica os seus serviços ou tarefas do Cloud Run. Consulte a
skaffold.yamlreferência para mais informações sobre este ficheiro.
Prepare os seus serviços ou trabalhos do Cloud Run
Para este início rápido, vai criar dois serviços do Cloud Run ou dois trabalhos do Cloud Run diferentes no mesmo projeto. O Cloud Deploy também suporta a implementação em vários projetos. Além disso, usamos perfis do Skaffold para tornar possível ter dois serviços ou tarefas no mesmo projeto. Quando usa projetos diferentes, pode não precisar de usar perfis do Skaffold.
Serviços
Crie um ficheiro denominado
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-imageEste ficheiro define um serviço do Cloud Run. Como o nome
deploy-run-service-devimplica, este é o seu serviçodeve corresponde ao primeiro alvo na progressão da sua pipeline de entrega.Crie um ficheiro denominado
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-imageEste ficheiro define outro serviço do Cloud Run e, como o nome
deploy-run-service-prodimplica, este é o seu serviçoprode corresponde ao segundo destino na progressão da sua pipeline de entrega.
Estes ficheiros são definições de serviços do Cloud Run, que são usados para implementar a aplicação. A imagem do contentor a implementar é definida aqui como um marcador de posição, my-app-image, que é substituído pela imagem específica quando cria a versão.
Empregos
Crie um ficheiro denominado
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-imageEste ficheiro define uma tarefa do Cloud Run. Como o nome
deploy-run-job-devsugere, este é o seu trabalhodeve corresponde ao primeiro destino na progressão da sua pipeline de fornecimento.Crie um ficheiro denominado
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-imageEste ficheiro define outra tarefa do Cloud Run. Como o nome
deploy-run-job-prodimplica, este é o seu trabalhoprode corresponde ao segundo alvo na progressão da sua pipeline de entrega.
Estes ficheiros são definições de tarefas do Cloud Run, que são usadas para implementar a aplicação. A imagem do contentor a implementar é definida aqui como
um marcador de posição, my-app-image, que é substituído pela imagem específica
quando cria a versão.
Crie o pipeline de entrega e as segmentações
Pode definir o seu pipeline e alvos num ficheiro ou em ficheiros separados. Neste início rápido, vai criar um único ficheiro.
No diretório
deploy-run-quickstart, crie um novo ficheiro: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-central1Registe o pipeline e os destinos no serviço Cloud Deploy:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_IDAgora, tem um pipeline com alvos pronto para implementar a sua aplicação no primeiro alvo.
Confirme o seu pipeline e alvos:
Na Google Cloud consola, navegue para a página Cloud Deploy Pipelines de entrega para ver uma lista dos pipelines de entrega disponíveis.
Abra a página Pipelines de fornecimento
É apresentada a pipeline de fornecimento que acabou de criar e os dois alvos são apresentados na coluna Alvos.

Crie um lançamento
Um lançamento é o recurso central do Cloud Deploy que representa as alterações que estão a ser implementadas. O pipeline de fornecimento define o ciclo de vida dessa versão. Consulte o artigo Arquitetura do serviço Cloud Deploy para ver detalhes sobre esse ciclo de vida.
Execute o seguinte comando a partir do diretório deploy-run-quickstart para criar um recurso release que represente a imagem do contentor a implementar:
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
Empregos
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
Repare na flag --images=, que usa para substituir o marcador de posição (my-app-image) na definição de serviço ou tarefa pela imagem específica qualificada por SHA. A Google recomenda que crie modelos das definições de serviços e tarefas desta forma e que use nomes de imagens qualificados por SHA na criação de lançamentos.
Tal como acontece com todos os lançamentos (a menos que incluam --disable-initial-rollout),
o Cloud Deploy também cria automaticamente um recurso de implementação. A aplicação é implementada automaticamente no primeiro alvo na progressão.
Promova o lançamento
Na página Caminhos de fornecimento, clique no caminho
my-run-demo-app-1.Abra a página Pipelines de fornecimento
A página de detalhes do pipeline de fornecimento mostra uma representação gráfica do progresso do pipeline de fornecimento. Neste caso, mostra que o lançamento foi implementado no destino
run-qsdev.
No primeiro alvo na visualização do pipeline de fornecimento, clique em Promover.
É apresentada a caixa de diálogo Promover lançamento. Mostra os detalhes do público-alvo que está a promover.
Clique em Promover.
A versão está agora em fila para implementação no
run-qsprod. Quando a implementação estiver concluída, a visualização do pipeline de entrega mostra que foi implementada:
Veja os resultados na Google Cloud consola
Na Google Cloud consola, navegue para a página Cloud Deploy Pipelines de fornecimento para ver o pipeline de fornecimento my-run-demo-app-1.
Clique no nome do pipeline de fornecimento "my-run-demo-app-1".
A visualização do pipeline mostra o progresso da app no pipeline.

O lançamento é apresentado no separador Lançamentos em Detalhes do pipeline de envio.
Clique no nome do lançamento,
test-release-001.As implementações são apresentadas em Implementações. Pode clicar numa implementação para ver os respetivos detalhes, incluindo o registo de implementação.

Aceder ao seu serviço do Cloud Run
Por predefinição, tem de ter autenticação para aceder aos serviços do Cloud Run criados recentemente. Consulte a vista geral da autenticação do Cloud Run para saber como fornecer credenciais e que configuração da gestão de identidade e de acesso é necessária para aceder ao serviço sem autenticação. Isto não se aplica a tarefas do Cloud Run.
Limpar
Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.
Elimine o serviço ou a tarefa do
deploy-qs-devCloud Run:Serviços
gcloud run services delete deploy-run-service-dev --region=us-central1 --project=PROJECT_IDEmpregos
gcloud run jobs delete deploy-run-job-dev --region=us-central1 --project=PROJECT_IDElimine o serviço
deploy-qs-prod:Serviços
gcloud run services delete deploy-run-service-prod --region=us-central1 --project=PROJECT_IDEmpregos
gcloud run jobs delete deploy-run-job-prod --region=us-central1 --project=PROJECT_IDElimine o pipeline de implementação, os destinos, o lançamento e as implementações:
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_IDElimine os contentores do Cloud Storage que o Cloud Deploy criou.
Uma termina com
_clouddeploye a outra é[region].deploy-artifacts.[project].appspot.com.
É tudo. Concluiu este início rápido!