Nesta página, mostramos como implantar imagens de contêiner em um novo pool de workers do Cloud Run ou em uma nova revisão de um pool de workers do Cloud Run.
Os pools de trabalhadores são um recurso do Cloud Run projetado especificamente para cargas de trabalho sem solicitação. Ao contrário dos serviços do Cloud Run, os pools de trabalhadores não têm os seguintes recursos:
- Endpoint/URL público
- Requisito para expor uma porta de entrada
- Escalonamento automático orientado por solicitação
Para conferir um exemplo de instruções de implantação de um novo pool de workers, consulte o Guia de início rápido sobre como implantar um pool de workers de amostra.
Funções exigidas
Para receber as permissões necessárias para implantar pools de trabalhadores do Cloud Run, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Desenvolvedor do Cloud Run (
roles/run.developer
) no pool de worker do Cloud Run -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na identidade que seus pools de trabalhadores usam para interagir com outros serviços do Google Cloud -
Leitor do Artifact Registry (
roles/artifactregistry.reader
) no repositório do Artifact Registry da imagem de contêiner implantada
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.
Registros e imagens de contêiner compatíveis
É possível usar diretamente imagens de contêiner armazenadas no Artifact Registry ou no Docker Hub (em inglês). O Google recomenda o uso do Artifact Registry. As imagens do Docker Hub são armazenadas em cache por até uma hora.
É possível usar imagens de contêiner de outros registros públicos ou privados (como JFrog Artifactory, Nexus ou GitHub Container Registry), configurando um repositório remoto do Artifact Registry.
Considere apenas o Docker Hub para implantar imagens de contêiner conhecidas, como Imagens oficiais do Docker ou Imagens do OSS patrocinadas pelo Docker. Para maior disponibilidade, o Google recomenda implantar essas imagens do Docker Hub usando um repositório remoto do Artifact Registry.
O Cloud Run não é compatível com camadas de imagens de contêiner maiores que 9,9 GB ao implantar do Docker Hub ou de um repositório remoto do Artifact Registry com um registro externo.
Implantar pools de workers
É possível implantar pools de workers das seguintes maneiras:
- Implantar um novo pool de workers
- Atualizar um pool de workers
- Implantar imagens de outros projetos do Google Cloud
- Implantar vários contêineres (arquivos secundários) em um pool de workers
Implantar um novo pool de workers
É possível especificar uma imagem de contêiner com uma tag
(por exemplo, us-docker.pkg.dev/my-project/container/my-image:latest
) ou com um resumo exato
(por exemplo, us-docker.pkg.dev/my-project/container/my-image@sha256:41f34ab970ee...
).
A implantação de um pool de workers pela primeira vez cria a primeira revisão dele. Observe que as revisões são imutáveis. Se você implantar a partir de uma tag de imagem de contêiner, ela será resolvida para um resumo, e a revisão sempre exibirá esse resumo específico.
Siga as instruções usando a Google Cloud CLI ou o Terraform.
gcloud
-
In the Google Cloud console, 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.
Para implantar uma imagem de contêiner do pool de workers:
Execute este comando:
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL
Substitua:
- WORKER_POOL: o nome do pool de workers em que você quer fazer a implantação. Se o pool de worker ainda não existir, esse comando vai criar o pool durante a implantação. É possível omitir esse parâmetro inteiramente, mas será solicitado o nome do pool de workers, se você omiti-lo. Os nomes dos pools de trabalhadores precisam ter 49 caracteres ou menos, usar um nome exclusivo por região e projeto e não compartilhar o mesmo nome de um nome de serviço atual do seu projeto.
- IMAGE_URL por uma referência à imagem de contêiner que
contém o pool de workers, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. Se você não fornecer a flag--image
, o comando de implantação tentará implantar a partir do código-fonte.
Aguarde a conclusão da implantação. Após a conclusão, o Cloud Run mostra uma mensagem de sucesso com as informações de revisão sobre o pool de trabalhadores implantado.
Para implantar em um local diferente daquele que você definiu com as propriedades
run/region
gcloud
, use:gcloud beta run worker-pools deploy WORKER_POOL --region REGION
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
launch_stage = "BETA"
template {
containers {
image = "IMAGE_URL"
}
}
}
Substitua:
- WORKER_POOL: o nome do pool de workers.
- REGION: a região Google Cloud , por exemplo,
europe-west1
. - IMAGE_URL por uma referência à imagem de contêiner que
contém o pool de workers, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
.
Implantar uma nova revisão de um pool de workers atual
A alteração das configurações de um pool de workers resulta na criação de uma nova revisão, mesmo que não haja mudanças na imagem do contêiner. Cada revisão criada é imutável.
A imagem do contêiner é importada pelo Cloud Run quando implantada. O Cloud Run mantém essa cópia da imagem do contêiner enquanto ela é usada por uma revisão.
Siga estas instruções usando a Google Cloud CLI ou o Terraform:
gcloud
-
In the Google Cloud console, 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.
Para implantar uma imagem de contêiner, realize as etapas a seguir:
Execute o comando:
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL
Substitua:
- WORKER_POOL: o nome do pool de workers em que você quer fazer a implantação. Se o pool de worker ainda não existir, esse comando vai criar o pool durante a implantação. É possível omitir esse parâmetro inteiramente, mas será solicitado o nome do pool de workers, se você omiti-lo. Os nomes dos pools de trabalhadores precisam ter 49 caracteres ou menos, usar um nome exclusivo por região e projeto e não compartilhar o mesmo nome de um nome de serviço atual do seu projeto.
- IMAGE_URL por uma referência à imagem de contêiner que
contém o pool de workers, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. Se você não fornecer a flag--image
, o comando de implantação tentará implantar a partir do código-fonte.
O sufixo de revisão é atribuído automaticamente para novas revisões. Se você quiser fornecer seu próprio sufixo de revisão, use o parâmetro de CLI gcloud
--revision-suffix
.Aguarde a conclusão da implantação. Após a conclusão, o Cloud Run mostra uma mensagem de sucesso com as informações de revisão sobre o pool de trabalhadores implantado.
Terraform
Configure o Terraform conforme descrito no exemplo Como implantar um novo pool de workers.
Faça uma alteração no arquivo de configuração.
Aplique a configuração do Terraform:
terraform apply
Confirme que você quer aplicar as ações descritas digitando
yes
.
Implantar imagens de outros projetos Google Cloud
Para implantar imagens de outros projetos do Google Cloud , você ou seu administrador precisam conceder os papéis do IAM necessários à conta do implantador e ao agente de serviço do Cloud Run.
Para saber quais são os papéis necessários para a conta do implantador, consulte papéis necessários.
Para conceder ao agente de serviço do Cloud Run os papéis necessários, consulte as instruções a seguir:
No console Google Cloud , abra o projeto do pool de workers do Cloud Run.
Selecione Incluir concessões de papel fornecidas pelo Google.
Copie o e-mail do agente de serviço do Cloud Run. Ele tem o sufixo @serverless-robot-prod.iam.gserviceaccount.com.
Abra o projeto com o registro do contêiner que você quer usar.
Clique em Adicionar para adicionar um novo principal.
No campo Novos principais, cole o e-mail da conta de serviço que você copiou anteriormente.
No menu suspenso Selecionar um papel, se você estiver usando o Container Registry, selecione o papel Armazenamento -> Leitor de objetos do Storage. Se você estiver usando o Artifact Registry, selecione o papel Artifact Registry -> Artifact Registry Reader.
Implante a imagem do contêiner no projeto que contém o pool de workers do Cloud Run.
Como implantar imagens de outros registros
Para implantar imagens de contêiner públicas ou privadas que não estejam armazenadas no Artifact Registry ou no Docker Hub, configure um repositório remoto do Artifact Registry.
Os repositórios remotos do Artifact Registry permitem:
- Implante qualquer imagem de contêiner pública, por exemplo, o Container Registry do GitHub (
ghcr.io
). - Implante imagens de contêiner de repositórios privados que exigem autenticação, por exemplo, JFrog Artifactory ou Nexus.
Se não for possível usar um repositório remoto do Artifact Registry, é possível extrair e enviar imagens de contêiner temporariamente para o Artifact Registry implantando-as no Cloud Run usando docker push
. O Cloud Run importa a imagem do contêiner durante a implantação e, depois, é possível excluir a imagem do Artifact Registry.
Implantar vários contêineres (arquivos secundários) em um pool de workers
Em uma implantação do Cloud Run com arquivos secundários, há um contêiner principal de pool de trabalhadores e um ou mais contêineres de arquivo secundário. Os sidecars podem se comunicar entre si e com o contêiner do pool de workers usando uma porta localhost. A porta do localhost varia de acordo com os contêineres usados.
É possível implantar até 10 contêineres por instância, incluindo o contêiner do pool de workers. Todos os contêineres em uma instância compartilham o mesmo namespace de rede e também podem compartilhar arquivos usando um volume compartilhado na memória.
Você pode exigir que todas as implantações usem um sidecar específico criando políticas de organização personalizadas.
Implantar um serviço com contêineres de arquivos secundários
Siga estas instruções usando a Google Cloud CLI ou o Terraform para implantar vários contêineres em um pool de trabalhadores do Cloud Run:
gcloud
-
In the Google Cloud console, 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.
Para implantar vários contêineres em um pool de workers, execute o seguinte comando:
gcloud beta run worker-pools deploy WORKER_POOL \ --container WORKER_POOL_CONTAINER_NAME \ --image='WORKER_POOL_IMAGE' \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE'
Substitua:
- WORKER_POOL: o nome do pool de workers em que você está fazendo a implantação. Se você omitir esse parâmetro, será solicitado o nome do pool de workers.
- WORKER_POOL_CONTAINER_NAME: um nome para o contêiner do pool de workers.
- IMAGE_URL por uma referência à imagem de contêiner que
contém o pool de workers, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. - SIDECAR_CONTAINER_NAME: um nome para o contêiner
de arquivo secundário. Por exemplo,
sidecar
. - SIDECAR_IMAGE por uma referência à imagem de contêiner de arquivo secundário.
Para configurar cada contêiner no comando de implantação, forneça a configuração de cada contêiner após os parâmetros
container
, por exemplo:gcloud beta run worker-pools deploy WORKER_POOL \ --container CONTAINER_1_NAME \ --image='WORKER_POOL_IMAGE' \ --set-env-vars=KEY=VALUE \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE' \ --set-env-vars=KEY_N=VALUE_N
Aguarde a conclusão da implantação. Após a conclusão, o Cloud Run mostra uma mensagem de sucesso.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
launch_stage = "BETA"
template {
containers {
name = "CONTAINER_NAME"
image = "IMAGE_URL"
}
containers {
name = "SIDECAR_CONTAINER_NAME"
image = "SIDECAR_IMAGE_URL"
}
}
}
Substitua:
- WORKER_POOL: o nome do pool de workers.
- REGION: a região Google Cloud , por exemplo,
europe-west1
. - CONTAINER_NAME: o nome do contêiner.
- IMAGE_URL por uma referência à imagem de contêiner que
contém o pool de workers, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. - SIDECAR_CONTAINER_NAME: o nome do contêiner de arquivo secundário.
- SIDECAR_IMAGE_URL: uma referência à imagem de contêiner de arquivo secundário.
Recursos importantes disponíveis para implantações com arquivos secundários
É possível especificar a ordem de inicialização do contêiner em uma implantação com vários contêineres se você tiver dependências que exigem que alguns contêineres sejam iniciados antes de outros na implantação.
Se você tiver contêineres que dependam de outros contêineres, use verificações de integridade na implantação. Ao usar verificações de integridade, o Cloud Run segue a ordem de inicialização do contêiner, verificando a integridade de cada um antes de iniciar o próximo. Sem verificações de integridade, o Cloud Run tenta iniciar todos os contêineres, mesmo que os contêineres de que dependem ainda não estejam em execução ou não tenham sido iniciados.
Vários contêineres em uma única instância podem acessar um volume na memória compartilhado, acessível a cada contêiner por meio dos pontos de montagem criados.
A seguir
Depois de implantar um novo pool de trabalhadores, é possível fazer o seguinte:
- Ver registros do pool de workers
- Monitorar a performance do pool 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