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
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, ogcloud 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
eLast-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 nolatest
, 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:
- Programador de origem do Cloud Run (
roles/run.sourceDeveloper
) no seu projeto - Consumidor de utilização do serviço (
roles/serviceusage.serviceUsageConsumer
) no seu projeto - Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na identidade do serviço do Cloud Run
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:
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.
Crie e implemente o seu grupo de trabalhadores:
Substituagcloud beta run worker-pools deploy WORKERPOOL --source .
WORKERPOOL
pelo nome que quer para o seu conjunto de trabalhadores.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.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:
- Veja os registos do conjunto de trabalhadores
- Monitorize conjuntos de trabalhadores
- Defina limites de memória
- Defina variáveis de ambiente
- Faça a gestão do grupo de trabalhadores
- Faça a gestão das revisões do conjunto de trabalhadores