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 dois trabalhos.
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
- 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
- Certifique-se de que a conta de serviço predefinida do Compute Engine tem autorizações suficientes.
A conta de serviço pode já ter as autorizações necessárias. Estes passos estão incluídos para projetos que desativam as concessões de funções automáticas para contas de serviço predefinidas.
- Adicione a função
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 predefinida a
actAs
autorização para implementar 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 autorizações de programador 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 tiver problemas em adicionar qualquer uma destas funções, contacte o administrador do projeto.
Abra uma janela de terminal.
Crie um novo diretório com o nome
deploy-run-quickstart
e navegue até ele.mkdir deploy-run-quickstart cd deploy-run-quickstart
Crie um ficheiro denominado
skaffold.yaml
com 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.yaml
referência para mais informações sobre este ficheiro.Crie um ficheiro denominado
run-service-dev.yaml
com o seguinte conteúdo:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: deploy-run-service-dev spec: template: spec: containers: - image: my-app-image
Este ficheiro define um serviço do Cloud Run. Como o nome
deploy-run-service-dev
implica, este é o seu serviçodev
e corresponde ao primeiro alvo na progressão da sua pipeline de entrega.Crie um ficheiro denominado
run-service-prod.yaml
com o seguinte conteúdo:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: deploy-run-service-prod spec: template: spec: containers: - image: my-app-image
Este ficheiro define outro serviço do Cloud Run e, como o nome
deploy-run-service-prod
implica, este é o seu serviçoprod
e corresponde ao segundo destino na progressão do pipeline de entrega.Crie um ficheiro denominado
run-job-dev.yaml
com 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-image
Este ficheiro define uma tarefa do Cloud Run. Como o nome
deploy-run-job-dev
sugere, este é o seu trabalhodev
e corresponde ao primeiro destino na progressão da sua pipeline de fornecimento.Crie um ficheiro denominado
run-job-prod.yaml
com 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-image
Este ficheiro define outra tarefa do Cloud Run. Como o nome
deploy-run-job-prod
implica, este é o seu trabalhoprod
e corresponde ao segundo alvo na progressão da sua pipeline de entrega.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-central1
Registe o pipeline e os destinos no serviço Cloud Deploy:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
Agora, 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.
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 destino que está a promover.
Clique em Promover.
O lançamento está agora na 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: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.
Elimine o serviço ou a tarefa do
deploy-qs-dev
Cloud Run:Serviços
gcloud run services delete deploy-run-service-dev --region=us-central1 --project=PROJECT_ID
Empregos
gcloud run jobs delete deploy-run-job-dev --region=us-central1 --project=PROJECT_ID
Elimine o serviço
deploy-qs-prod
:Serviços
gcloud run services delete deploy-run-service-prod --region=us-central1 --project=PROJECT_ID
Empregos
gcloud run jobs delete deploy-run-job-prod --region=us-central1 --project=PROJECT_ID
Elimine o pipeline de envio, os destinos, o lançamento e as implementações:
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
Elimine os contentores do Cloud Storage que o Cloud Deploy criou.
Uma termina com
_clouddeploy
e a outra é[region].deploy-artifacts.[project].appspot.com
.
Se já tiver a CLI instalada, certifique-se de que está a executar a versão mais recente:
gcloud components update
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.
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 diferentes projetos, pode não precisar de usar perfis do Skaffold.
Serviços
Estes ficheiros são definições simples do serviço 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.
Empregos
Estes ficheiros são definições de tarefas do Cloud Run simples, 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 seu pipeline de entrega e 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.
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 a secção 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 para as 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
Veja os resultados na Google Cloud consola
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.
É tudo. Concluiu este início rápido!