Implantar pools de workers do código-fonte

Nesta página, descrevemos como implantar um novo pool de trabalhadores ou uma revisão de pool de trabalhadores no Cloud Run diretamente do código-fonte usando um único comando da CLI gcloud, gcloud beta run worker-pools deploy com a flag --source.

Nos bastidores, esse comando usa os buildpacks do Google Cloud e o Cloud Build para criar automaticamente imagens de contêiner a partir do código fonte sem instalar o Docker na máquina ou configurar os buildpacks ou o Cloud Build. Por padrão, o Cloud Run usa o tipo de máquina padrão fornecido pelo Cloud Build. Executar gcloud beta run worker-pools deploy elimina a necessidade de executar também o comando gcloud builds submit.

Observe que as implantações de origem usam o Artifact Registry para armazenar contêineres criados. Se o projeto ainda não tiver um repositório do Artifact Registry com o nome cloud-run-source-deploy na região em que você está implantando, esse recurso cria automaticamente um repositório do Artifact Registry com o nome cloud-run-source-deploy de dados.

Se houver um Dockerfile no diretório de código-fonte, o código-fonte enviado será criado usando esse Dockerfile. Se nenhum Dockerfile estiver presente no diretório do código-fonte, os buildpacks do Google Cloud detectarão automaticamente a linguagem usada e buscarão as dependências do código para criar uma imagem de contêiner pronta para produção, usando uma imagem de base segura gerenciada pelo Google.

Antes de começar

  • Verifique se você configurou um novo projeto para o Cloud Run conforme descrito na página de configuração.
  • Enable the Cloud Run Admin API.

    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 API

    Depois que a API Cloud Run Admin for ativada, a conta de serviço padrão do Compute Engine será criada automaticamente.

Funções exigidas

Para implantar a partir da origem, você ou seu administrador precisa conceder à conta do implantador os seguintes papéis do IAM.

Clique para conferir os papéis necessários para a conta do implantador

Para receber as permissões necessárias para criar e implantar a partir da origem, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o pool de trabalhadores do Cloud Run interagir com APIsGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.

Idiomas compatíveis

Além de fontes com um Dockerfile, é possível implantar da fonte com as seguintes linguagens usando os buildpacks do Google Cloud:

  • Go
  • Node.js
  • Python
  • Java
  • Kotlin
  • Groovy
  • Scala
  • .NET
  • Ruby
  • PHP

Leia mais detalhes sobre as versões de linguagem compatíveis.

Implantar da origem com build

Nesta seção, descrevemos como usar os buildpacks do Google Cloud e o Cloud Build para criar automaticamente imagens de contêiner do código fonte sem instalar o Docker na máquina ou configurar os buildpacks ou o Cloud Build.

Limitações

  • A implantação da origem usa o Artifact Registry e o Cloud Build. Portanto, esse recurso só está disponível em regiões compatíveis com o Artifact Registry e o Cloud Build.
  • A implantação a partir da origem é um recurso prático e não permite a personalização completa do build. Para ter mais controle, crie a imagem do contêiner usando o Cloud Build (usando gcloud builds submit, por exemplo) e, em seguida, implante a imagem do contêiner (usando gcloud beta run worker-pools deploy --image, por exemplo).
  • A implantação de origem com buildpacks do Google Cloud define a data da última modificação dos arquivos de origem como 1º de janeiro de 1980. Esse é o comportamento padrão dos buildpacks e foi projetado para ser compatível com builds reproduzíveis. Dependendo do framework da linguagem, isso pode afetar o armazenamento em cache de arquivos estáticos no navegador. Se o aplicativo for afetado por isso, o Google recomenda desativar os cabeçalhos HTTP etag e Last-Modified.
  • A implantação de origem com buildpacks do Google Cloud sempre usa gcr.io/buildpacks/builder:latest. Se a configuração de idioma ou SO de sua preferência não estiver disponível em latest, use um builder específico para criar uma imagem de aplicativo usando o builder que você preferir.
  • É possível implantar o pool de trabalhadores da origem usando Kotlin e outras linguagens da JVM, como Java. A linguagem usada precisa obedecer às seguintes regras:

    • É possível criar o aplicativo usando Maven ou Gradle.
    • O arquivo de build contém todos os plug-ins necessários para as classes de produto.

Antes de implantar com build

Antes de implantar da origem com build:

  • Siga as etapas em Antes de começar.

  • Enable the Cloud Build API.

    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 API

Funções exigidas

Para implantar da origem com build, você ou seu administrador precisam conceder à conta de serviço do Cloud Build os seguintes papéis do IAM.

Clique para conferir os papéis necessários para a conta de serviço do Cloud Build

O Cloud Build usa automaticamente a conta de serviço padrão do Compute Engine como a conta de serviço padrão do Cloud Build para criar seu código-fonte e o recurso do Cloud Run, a menos que você substitua esse comportamento. Para que o Cloud Build crie suas origens, peça ao administrador para conceder o papel Criador do Cloud Run (roles/run.builder) à conta de serviço padrão do Compute Engine no seu projeto:

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/run.builder
  

Substitua PROJECT_NUMBER pelo número do projeto do Google Cloude PROJECT_ID pelo ID do projeto do Google Cloud. Para instruções detalhadas sobre como encontrar o ID e o número do projeto, consulte Criar e gerenciar projetos.

A concessão do papel de builder do Cloud Run à conta de serviço padrão do Compute Engine leva alguns minutos para se propagar.

Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o pool de trabalhadores do Cloud Run interagir com APIsGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.

Implantar com build

Para implantar a partir do código-fonte:

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Mude para o diretório de origem. O diretório de origem usa um Dockerfile se estiver presente, embora não seja obrigatório.

  3. Crie e implante seu pool de workers:

    gcloud beta run worker-pools deploy WORKERPOOL --source .
    Substitua WORKERPOOL pelo nome que você quer dar ao pool de workers.

  4. Responda a todas as solicitações para instalar as APIs necessárias respondendo ao y quando solicitado. Você só precisa fazer isso uma vez para um projeto. Responda a outras solicitações fornecendo a plataforma e a região, se você não tiver definido os padrões delas, conforme descrito na página de configuração.

  5. Aguarde a conclusão da criação e da implantação. Quando terminar, o Cloud Run vai mostrar uma mensagem de sucesso.

  6. Como automatizar a criação a partir da fonte

    Como prática recomendada para evitar alterações sem versão na fonte local, o Google recomenda que você implante automaticamente quando as alterações forem enviadas ao seu repositório Git. Para facilitar esse processo, é possível conectar e configurar a implantação contínua no pool de workers do Cloud Run. Ao conectar seus repositórios do GitHub ao Cloud Run, é possível configurar versões e implantar seus repositórios sem escrever Dockerfiles ou arquivos de criação.

    A seguir

    Depois de implantar um pool de trabalhadores do Cloud Run, é possível fazer o seguinte: