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 do Cloud Run, dois jobs do Cloud Run ou dois pools de workers do Cloud Run.
Neste guia de início rápido, você fará o seguinte:
Criar uma configuração do Skaffold
Criar arquivos de configuração para dois serviços do Cloud Run, dois jobs ou dois pools de workers.
Esses arquivos definem os serviços ou jobs e especificam as imagens de contêiner (pré-criadas) a serem implantadas.
Instanciar o pipeline de entrega criando uma versão, que implanta automaticamente no primeiro destino.
Promover a versão para a segunda segmentação.
Visualizar os dois lançamentos no Google Cloud console.
Antes de começar
- Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
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.
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Instale a Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com 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.
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.
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Instale a Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
Funçõ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 implantar 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) - Usuário da conta de serviço do IAM (
roles/iam.serviceAccountUser) - Executor de jobs do Cloud Deploy (
roles/clouddeploy.jobRunner)
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 de outros papéis predefinidos.
Preparar a configuração do Skaffold
O Cloud Deploy usa Skaffold para fornecer detalhes sobre o que implantar e como implantá-lo corretamente para seus destinos separados.
Para este 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 exemplo.
Abra uma janela do 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: {}Pools de workers
apiVersion: skaffold/v4beta7 kind: Config metadata: name: deploy-run-quickstart profiles: - name: dev manifests: rawYaml: - run-worker-pool-dev.yaml - name: prod manifests: rawYaml: - run-worker-pool-prod.yaml deploy: cloudrun: {}Esse arquivo é uma configuração mínima do Skaffold, que identifica seus serviços, jobs ou pools de workers do Cloud Run. Consulte a
skaffold.yamlreferência para mais informações sobre esse arquivo.
Preparar os serviços, jobs ou pools de workers do Cloud Run
Para este guia de início rápido, você vai criar dois serviços do Cloud Run, dois jobs do Cloud Run ou dois pools de workers do Cloud Run diferentes 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, jobs ou pools de workers estejam no mesmo projeto. Ao usar projetos diferentes, talvez não seja necessário usar perfis do Skaffold.
Serviços
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çoprode corresponde ao segundo destino na progressão do pipeline de entrega.
Esses arquivos são definições 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 a versão.
Jobs
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 jobdeve corresponde a o primeiro destino 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, esse é o jobprode corresponde ao segundo destino na progressão do pipeline de entrega.