Implantar pools de workers do código-fonte

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

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. A execução de gcloud beta run worker-pools deploy elimina a necessidade de executar também o gcloud builds submit comando.

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.
  • Ative a API Cloud Run Admin.

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar a API

    Depois que a API Cloud Run Admin for ativada, a conta de serviço padrão do Compute Engine será criadas 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 workers do Cloud Run interage com Google Cloud APIs, 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 origem com as seguintes linguagens usando 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 a partir da origem com build

Esta seção descreve como usar 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.

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 pacotes de compilação 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 workers a partir da origem usando o Kotlin e outras linguagens da JVM como Java. A linguagem usada precisa estar em conformidade com as 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 a partir da origem com build:

  • Siga as etapas em Antes de começar.

  • Ative a API Cloud Build.

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar a API

Funções exigidas

Para implantar a partir da origem com build, você ou seu administrador precisa 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 o 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 builder 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 por seu Google Cloud número do projeto e PROJECT_ID por seu Google Cloud ID do projeto. Para instruções detalhadas sobre como encontrar o ID do projeto 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 workers do Cloud Run interage com Google Cloud APIs, 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. No Google Cloud console, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte de baixo do Google Cloud console, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a Google Cloud CLI já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

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

  3. Crie e implante o pool de workers:

    gcloud beta run worker-pools deploy WORKERPOOL --source .
    Substitua WORKERPOOL pelo nome do pool de workers.

  4. Responda a todas as solicitações para instalar as APIs necessárias respondendo y ao 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.

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 workers do Cloud Run, você pode fazer o seguinte: