Implantar um aplicativo conteinerizado no Cloud Run usando o Cloud Build

Nesta página, mostramos como usar o Cloud Build para implantar um aplicativo em contêineres no Cloud Run.


Para seguir as instruções da tarefa diretamente no editor do Cloud Shell, clique em Orientação:

Orientações


Antes de começar

  1. Faça login na sua Google Cloud conta do. Se você não conhece o Google Cloud, crie uma conta para avaliar a performance dos nossos produtos em cenários reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build, Cloud Run, Artifact Registry, and Compute Engine 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.

    Enable the APIs

  5. Instale a Google Cloud CLI.

  6. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  7. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  8. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Build, Cloud Run, Artifact Registry, and Compute Engine 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.

    Enable the APIs

  11. Instale a Google Cloud CLI.

  12. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  13. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

Conceder permissões

O Cloud Build requer várias permissões antes de implantar uma imagem no Cloud Run. Para conceder essas permissões, faça o seguinte:

  1. Abra uma janela do terminal.

  2. Defina variáveis de ambiente para armazenar o ID do projeto e o número do projeto.

    PROJECT_ID=$(gcloud config list --format='value(core.project)')
    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
    
  3. Conceda o papel Administrador do Cloud Run à sua conta de serviço do Cloud Build.

    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.admin \
    
  4. Conceda o papel Usuário de objetos do Storage à sua conta de serviço do Cloud Build.

    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
        --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
        --role=roles/storage.objectUser \
    
  5. Conceda o papel Usuário da conta de serviço à sua conta de serviço do Cloud Build.

    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
        --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
        --role=roles/iam.serviceAccountUser
    

Implantar uma imagem pré-criada

É possível configurar o Cloud Build para implantar no Cloud Run uma imagem pré-criada armazenada no Artifact Registry.

Para implantar uma imagem pré-criada:

  1. Abra uma janela do terminal, se já não estiver aberta.

  2. Crie um novo diretório chamado helloworld e navegue até ele:

    mkdir helloworld
    cd helloworld
    
  3. Crie um arquivo chamado cloudbuild.yaml com o conteúdo a seguir. Esse é o arquivo de configuração do Cloud Build. Ele contém instruções para o Cloud Build implantar a imagem chamada us-docker.pkg.dev/cloudrun/container/hello no serviço do Cloud Run chamado cloudrunservice.

    steps:
    - name: 'gcr.io/cloud-builders/gcloud'
      script: |
        gcloud run deploy cloudrunservice --image us-docker.pkg.dev/cloudrun/container/hello --region us-central1 --platform managed --allow-unauthenticated
  4. Implante a imagem executando o seguinte comando:

    gcloud builds submit --region=us-west2 --config cloudbuild.yaml
    

Quando a build for concluída, você verá uma resposta semelhante a esta:

DONE
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ID                                    CREATE_TIME                DURATION  SOURCE                                                                                            IMAGES  STATUS
784653b2-f00e-4c4b-9f5f-96a5f115bef4  2020-01-23T14:53:13+00:00  23S       gs://cloudrunqs-project_cloudbuild/source/1579791193.217726-ea20e1c787fb4784b19fb1273d032df2.tgz  -       SUCCESS

Você acabou de implantar a imagem hello no Cloud Run.

Executar a imagem implantada

  1. Abra a página "Cloud Run" no Google Cloud console:

    Abrir a página "Cloud Run"

  2. Selecione o projeto e clique em Abrir.

    Você verá a página Serviços do Cloud Run.

  3. Na tabela, localize a linha com o nome cloudrunservice e clique em cloudrunservice.

    A página Detalhes do serviço de cloudrunservice é exibida.

  4. Para executar a imagem que você implantou no cloudrunservice, clique no URL:

    Captura de tela da página de detalhes do serviço do Cloud Run

A seguir