Implemente grupos de trabalhadores a partir do código-fonte

Esta página descreve como implementar um novo conjunto de trabalhadores ou uma revisão do conjunto de trabalhadores no Cloud Run diretamente a partir do código fonte através de um único comando da CLI gcloud, gcloud beta run worker-pools deploy com a flag --source.

Nos bastidores, este comando usa os buildpacks do Google Cloud e o Cloud Build para criar automaticamente imagens de contentores a partir do seu código-fonte sem ter de instalar o Docker na sua máquina nem configurar buildpacks ou o Cloud Build. Ou seja, o comando único descrito acima faz o que, de outra forma, exigiria os comandos gcloud builds submit e gcloud beta run worker-pools deploy.

Tenha em atenção que as implementações de origem usam o Artifact Registry para armazenar contentores criados. Se o seu projeto ainda não tiver um repositório do Artifact Registry com o nome cloud-run-source-deploy na região para a qual está a fazer a implementação, esta funcionalidade cria automaticamente um repositório do Artifact Registry com o nome cloud-run-source-deploy.

Se existir um Dockerfile no diretório do código-fonte, o código-fonte carregado é criado com esse Dockerfile. Se não existir nenhum Dockerfile no diretório de código-fonte, os buildpacks do Google Cloud detetam automaticamente a linguagem que está a usar e obtêm as dependências do código para criar uma imagem de contentor pronta para produção, usando uma imagem base segura gerida pela Google.

Idiomas suportados

Além das origens com um Dockerfile, a implementação a partir da origem suporta os seguintes idiomas através dos buildpacks do Google Cloud:

  • Ir
  • Node.js
  • Python
  • Java
  • Kotlin
  • Groovy
  • Scala
  • .NET
  • Ruby
  • PHP
Leia mais detalhes sobre as versões de idiomas suportadas.

Limitações desta funcionalidade

  • A implementação a partir da origem usa o Artifact Registry e o Cloud Build, pelo que esta funcionalidade só está disponível nas regiões suportadas pelo Artifact Registry e pelo Cloud Build.
  • A implementação a partir da origem é uma funcionalidade de conveniência e não permite a personalização total da compilação. Para ter mais controlo, crie a imagem de contentor com o Cloud Build, por exemplo, usando o gcloud builds submit e, de seguida, implemente a imagem de contentor usando, por exemplo, o gcloud beta run worker-pools deploy --image.
  • A implementação a partir da origem com os buildpacks do Google Cloud define a data da última modificação dos ficheiros de origem como 1 de janeiro de 1980. Este é o comportamento predefinido dos buildpacks e foi concebido para suportar compilações reproduzíveis. Dependendo da sua estrutura de linguagem, isto pode afetar o armazenamento em cache no navegador de ficheiros estáticos. Se a sua aplicação for afetada por esta situação, a Google recomenda que desative os cabeçalhos HTTP etag e Last-Modified na sua aplicação.
  • A implementação a partir da origem com os buildpacks do Google Cloud usa sempre o gcr.io/buildpacks/builder:latest. Se a sua configuração de idioma ou SO preferida não estiver disponível no latest, use um criador específico para criar uma imagem da aplicação com o seu criador preferido.
  • Pode implementar o seu conjunto de trabalhadores a partir da origem usando Kotlin e outras linguagens JVM, como Java. A linguagem que usa tem de estar em conformidade com as seguintes regras:

    • Pode criar a aplicação com o Maven ou o Gradle.
    • O ficheiro de compilação contém todos os plug-ins necessários para as classes de produtos.

Antes de começar

  • Certifique-se de que configurou um novo projeto para o Cloud Run, conforme descrito na página de configuração.
  • Ative a API Cloud Run Admin e a API Cloud Build:

    gcloud services enable run.googleapis.com \
        cloudbuild.googleapis.com

    Depois de ativar a API Cloud Run Admin, a conta de serviço predefinida do Compute Engine é criada automaticamente.

Funções necessárias

O utilizador ou o administrador tem de conceder à conta de implementação e à conta de serviço do Cloud Build as seguintes funções do IAM.

Clique para ver as funções necessárias para a conta do implementador

Para receber as autorizações necessárias para criar e implementar a partir da origem, peça ao seu administrador para lhe conceder as seguintes funções de IAM:

Clique para ver as funções necessárias para a conta de serviço do Cloud Build

O Cloud Build usa automaticamente a conta de serviço predefinida do Compute Engine como a conta de serviço predefinida do Cloud Build para compilar o seu código-fonte e o recurso do Cloud Run, a menos que substitua este comportamento. Para que o Cloud Build compile as suas origens, peça ao administrador para conceder a função Cloud Run Builder (roles/run.builder) à conta de serviço predefinida 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 seu Google Cloud número do projeto e PROJECT_ID pelo seu Google Cloud ID do projeto. Para ver instruções detalhadas sobre como encontrar o ID e o número do projeto, consulte o artigo Criar e gerir projetos.

A concessão da função de criador do Cloud Run à conta de serviço predefinida do Compute Engine demora alguns minutos a propagar.

Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu conjunto de trabalhadores do Cloud Run interage com Google Cloud APIs, como as bibliotecas de clientes da nuvem, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.

Implemente a partir da origem

Para implementar a partir do código-fonte:

  1. Altere para o diretório de origem. Tenha em atenção que o diretório de origem não requer um Dockerfile, mas, se existir um, é usado.

  2. Crie e implemente o seu grupo de trabalhadores:

    gcloud beta run worker-pools deploy WORKERPOOL --source .
    Substitua WORKERPOOL pelo nome que quer para o seu conjunto de trabalhadores.
  3. Responda a todas as instruções para instalar as APIs necessárias respondendo y quando lhe for pedido. Só tem de fazer isto uma vez por projeto. Responda a outros pedidos fornecendo a plataforma e a região, se não tiver definido predefinições para estas, conforme descrito na página de configuração.

  4. Aguarde pela conclusão da compilação e da implementação. Quando terminar, o Cloud Run apresenta uma mensagem de êxito.

Automatizar a compilação a partir da origem

Como prática recomendada para evitar alterações sem controlo de versões na origem local, a Google recomenda que faça a implementação automaticamente quando as alterações são enviadas para o seu repositório Git. Para facilitar este processo, pode ligar e configurar a implementação contínua ao seu conjunto de trabalhadores do Cloud Run. Ao associar os seus repositórios do GitHub ao Cloud Run, pode configurar compilações e implementar os seus repositórios sem escrever Dockerfiles nem ficheiros de compilação.

O que se segue?

Depois de implementar um conjunto de trabalhadores do Cloud Run, pode fazer o seguinte: