Nesta página, descrevemos como implantar um novo pool de trabalhadores ou uma revisão do 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. Ou seja, o comando único
descrito acima faz o que exigiria os comandos
gcloud builds submit
e
gcloud beta run worker-pools deploy
.
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.
Idiomas disponíveis
Além de fontes com um Dockerfile, é possível implantar da fonte com as seguintes linguagens:
- Go
- Node.js
- Python
- Java
- Kotlin
- Groovy
- Scala
- .NET
- Ruby
- PHP
Limitações deste recurso
- 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 (usandogcloud beta run workerpools 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
eLast-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 emlatest
, 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 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 e a API Cloud Build:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
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
Você ou seu administrador precisa conceder à conta do implantador e à conta de serviço do Cloud Build 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:
- Desenvolvedor de origem do Cloud Run (
roles/run.sourceDeveloper
) no seu projeto - Consumidor do Service Usage (
roles/serviceusage.serviceUsageConsumer
) no seu projeto - Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na identidade de serviço do Cloud Run
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
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 Google Cloude PROJECT_ID
pelo ID do projeto 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 APIs doGoogle 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 a partir da origem
Para implantar a partir do código-fonte:
Mude para o diretório de origem. Observe que o diretório de origem não requer um Dockerfile. No entanto, se um Dockerfile estiver presente, ele será usado.
Crie e implante seu pool de workers:
Substituagcloud beta run workerpools deploy WORKERPOOL --source .
WORKERPOOL
pelo nome que você quer dar ao pool de workers.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.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 trabalhadores do Cloud Run, é possível fazer o seguinte:
- Ver registros do pool de workers
- Monitorar pools de workers
- Definir limites de memória
- Definir as variáveis de ambiente
- Gerenciar o pool de workers
- Gerenciar revisões do pool de workers
- Divisões e rollbacks de instâncias