Esta página mostra como implementar imagens de contentores num novo conjunto de trabalhadores do Cloud Run ou numa nova revisão de um conjunto de trabalhadores do Cloud Run existente.
Os conjuntos de trabalhadores são um recurso do Cloud Run especificamente concebido para realizar trabalho em segundo plano contínuo. Ao contrário dos serviços do Cloud Run, os conjuntos de trabalhadores não têm um URL/ponto final com balanceamento de carga e não suportam o dimensionamento automático.
Para ver um exemplo passo a passo da implementação de um novo conjunto de trabalhadores, consulte o Início rápido da implementação de um conjunto de trabalhadores de exemplo.
Funções necessárias
Para receber as autorizações de que precisa para implementar pools de trabalhadores do Cloud Run, peça ao seu administrador para lhe conceder as seguintes funções de IAM:
-
Programador do Cloud Run (
roles/run.developer
) no conjunto de trabalhadores do Cloud Run -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na identidade que os seus worker pools usam para interagir com outros Google Cloud serviços -
Leitor do Artifact Registry (
roles/artifactregistry.reader
) no repositório do Artifact Registry da imagem de contentor implementada
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.
Imagens e registos de contentores suportados
Pode usar diretamente imagens de contentores armazenadas no Artifact Registry ou no Docker Hub. A Google recomenda a utilização do Artifact Registry. As imagens do Docker Hub são armazenadas em cache durante, no máximo, uma hora.
Pode usar imagens de contentores de outros registos públicos ou privados (como o JFrog Artifactory, o Nexus ou o GitHub Container Registry) configurando um repositório remoto do Artifact Registry.
Só deve considerar o Docker Hub para implementar imagens de contentores populares, como imagens oficiais do Docker ou imagens de OSS patrocinadas pelo Docker. Para uma maior disponibilidade, a Google recomenda a implementação destas imagens do Docker Hub através de um repositório remoto do Artifact Registry.
O Cloud Run não suporta camadas de imagens de contentores com mais de 9,9 GB quando implementa a partir do Docker Hub ou de um repositório remoto do Artifact Registry com um registo externo.
Implemente grupos de trabalhadores
Pode implementar conjuntos de trabalhadores das seguintes formas:
- Implemente um novo grupo de trabalhadores
- Atualize um grupo de trabalhadores existente
- Implemente imagens de outros Google Cloud projetos
- Implemente vários contentores (sidecars) num grupo de trabalhadores
Implemente um novo grupo de trabalhadores
Pode especificar uma imagem de contentor com uma etiqueta (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 implementação de um conjunto de trabalhadores pela primeira vez cria a sua primeira revisão. Tenha em atenção que as revisões são imutáveis. Se fizer a implementação a partir de uma etiqueta de imagem de contentor, esta é resolvida para um resumo, e a revisão publica sempre este resumo específico.
Siga as instruções através da Google Cloud consola, da CLI Google Cloud ou do Terraform.
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Selecione Worker pools (Conjuntos de trabalhadores) no menu e clique em Deploy container (Implementar contentor) para apresentar o formulário Create worker pool (Criar conjunto de trabalhadores).
No formulário, especifique a imagem do contentor.
Introduza o nome do conjunto de trabalhadores. Os nomes dos conjuntos de trabalhadores têm de ter 49 carateres ou menos e têm de ser exclusivos por região e projeto. Não pode partilhar o mesmo nome que um nome de serviço existente do seu projeto. Não é possível alterar posteriormente o nome de um conjunto de trabalhadores, e este é visível publicamente.
Selecione a região onde quer que o trabalhador esteja localizado. O seletor de regiões indica o nível de preço e realça as regiões com o menor impacto de carbono.
Em Dimensionamento, especifique o número de instâncias para o conjunto de trabalhadores.
Clique em Recipientes, volumes, rede, segurança para definir outras definições opcionais nos separadores adequados:
Quando terminar de configurar o conjunto de trabalhadores, clique em Criar para implementar a imagem no Cloud Run e aguarde que a implementação termine.
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 implementar uma imagem de contentor do grupo de trabalhadores:
Execute o seguinte comando:
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL
Substitua o seguinte:
- WORKER_POOL: o nome do conjunto de trabalhadores para o qual quer fazer a implementação. Se o grupo de trabalhadores ainda não existir, este comando cria o grupo de trabalhadores durante a implementação. Pode omitir este parâmetro por completo, mas é-lhe pedido o nome do conjunto de trabalhadores se o omitir. Os nomes dos conjuntos de trabalhadores têm de ter 49 carateres ou menos, usar um nome único por região e projeto, e não podem partilhar o mesmo nome que um nome de serviço existente do seu projeto.
- IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. Tenha em atenção que, se não fornecer a flag--image
, o comando deploy tenta implementar a partir do código fonte.
Aguarde até que a implementação esteja concluída. Após a conclusão com êxito, o Cloud Run apresenta uma mensagem de êxito juntamente com as informações de revisão sobre o conjunto de trabalhadores implementado.
Para implementar numa localização diferente da que definiu através das propriedades
run/region
gcloud
, use:gcloud beta run worker-pools deploy WORKER_POOL --region REGION
- WORKER_POOL: o nome do conjunto de trabalhadores.
- REGION: a Google Cloud região, por exemplo,
europe-west1
. - IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os 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 o seguinte:
Localizações do Cloud Run
O Cloud Run é regional, o que significa que a infraestrutura que executa os seus serviços do Cloud Run está localizada numa região específica e é gerida pela Google para estar disponível de forma redundante em todas as zonas dessa região.
O cumprimento dos requisitos de latência, disponibilidade ou durabilidade são fatores
principais para selecionar a região onde os seus serviços do Cloud Run são executados.
Geralmente, pode selecionar a região mais próxima dos seus utilizadores, mas deve considerar a localização dos outros Google Cloudprodutos usados pelo seu serviço do Cloud Run.
A utilização Google Cloud de produtos em conjunto em várias localizações pode afetar
a latência do seu serviço, bem como o custo.
O Cloud Run está disponível nas seguintes regiões:
Sujeito aos preços de Nível 1
asia-east1
(Taiwan)asia-northeast1
(Tóquio)asia-northeast2
(Osaca)asia-south1
(Mumbai, Índia)europe-north1
(Finlândia)Baixo CO2
europe-north2
(Estocolmo)Baixo CO2
europe-southwest1
(Madrid)Baixo CO2
europe-west1
(Bélgica)Baixo CO2
europe-west4
(Países Baixos)Baixo CO2
europe-west8
(Milão)europe-west9
(Paris)Baixo CO2
me-west1
(Telavive)northamerica-south1
(México)us-central1
(Iowa)Baixo CO2
us-east1
(Carolina do Sul)us-east4
(Virgínia do Norte)us-east5
(Columbus)us-south1
(Dallas)Baixo CO2
us-west1
(Oregão)Baixo CO2
Sujeito aos preços de Nível 2
africa-south1
(Joanesburgo)asia-east2
(Hong Kong)asia-northeast3
(Seul, Coreia do Sul)asia-southeast1
(Singapura)asia-southeast2
(Jacarta)asia-south2
(Deli, Índia)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Varsóvia, Polónia)europe-west10
(Berlim)Baixo CO2
europe-west12
(Turim)europe-west2
(Londres, Reino Unido)Baixo CO2
europe-west3
(Frankfurt, Alemanha)europe-west6
(Zurique, Suíça)Baixo CO2
me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal)Baixo CO2
northamerica-northeast2
(Toronto)Baixo CO2
southamerica-east1
(São Paulo, Brasil)Baixo CO2
southamerica-west1
(Santiago, Chile)Baixo CO2
us-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Se já criou um serviço do Cloud Run, pode ver a região no painel de controlo do Cloud Run na Google Cloud consola.
Implemente uma nova revisão de um conjunto de trabalhadores existente
Tenha em atenção que a alteração das definições de configuração de um conjunto de trabalhadores resulta na criação de uma nova revisão, mesmo que não haja alterações à imagem do contentor. Cada revisão criada é imutável.
A imagem do contentor é importada pelo Cloud Run quando implementada. O Cloud Run mantém esta cópia da imagem do contentor enquanto for usada por uma revisão.
Siga estas instruções através da Google Cloud consola, da CLI do Google Cloud ou do Terraform:
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Selecione Conjuntos de trabalhadores no menu, selecione o conjunto de trabalhadores a atualizar e, de seguida, clique em Editar e implementar nova revisão para apresentar o formulário Implementar revisão do conjunto de trabalhadores.
Se necessário, especifique o URL da nova imagem do contentor a implementar.
Configure o contentor conforme necessário.
Se necessário, atualize o número de instâncias para o conjunto de trabalhadores.
Se necessário, clique em Recipientes, Volumes, Rede, Segurança para definir outras definições opcionais nos separadores adequados:
Quando terminar de atualizar o seu conjunto de trabalhadores, clique em Implementar.
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 implementar uma imagem de contentor:
Execute o comando:
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL
Substitua o seguinte:
- WORKER_POOL: o nome do conjunto de trabalhadores para o qual quer fazer a implementação. Se o grupo de trabalhadores ainda não existir, este comando cria o grupo de trabalhadores durante a implementação. Pode omitir este parâmetro por completo, mas é-lhe pedido o nome do conjunto de trabalhadores se o omitir. Os nomes dos conjuntos de trabalhadores têm de ter 49 carateres ou menos, usar um nome único por região e projeto, e não podem partilhar o mesmo nome que um nome de serviço existente do seu projeto.
- IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. Tenha em atenção que, se não fornecer a flag--image
, o comando deploy tenta implementar a partir do código fonte.
O sufixo de revisão é atribuído automaticamente para novas revisões. Se quiser fornecer o seu próprio sufixo de revisão, use o parâmetro
--revision-suffix
da CLI gcloud.Aguarde até que a implementação esteja concluída. Após a conclusão com êxito, o Cloud Run apresenta uma mensagem de êxito juntamente com as informações de revisão sobre o conjunto de trabalhadores implementado.
Faça uma alteração ao ficheiro de configuração.
Aplique a configuração do Terraform:
terraform apply
Confirme que quer aplicar as ações descritas introduzindo
yes
.
Terraform
Certifique-se de que configurou o Terraform conforme descrito no exemplo de implementação de um novo grupo de trabalhadores.
Implemente imagens de outros Google Cloud projetos
Para implementar imagens de outros projetos Google Cloud , o administrador ou o utilizador tem de conceder as funções do IAM necessárias à conta de implementação e ao agente de serviço do Cloud Run.
Para ver as funções necessárias para a conta de implementação, consulte as funções necessárias.
Para conceder ao agente do serviço do Cloud Run as funções necessárias, consulte as seguintes instruções:
Na Google Cloud consola, abra o projeto para o seu conjunto de trabalhadores do Cloud Run.
Selecione Incluir concessões de funções fornecidas pela Google.
Copie o email do agente do serviço do Cloud Run. Tem o sufixo @serverless-robot-prod.iam.gserviceaccount.com
Abra o projeto proprietário do registo de contentores que quer usar.
Clique em Adicionar para adicionar um novo principal.
No campo Novos membros, cole o email da conta de serviço que copiou anteriormente.
No menu pendente Selecionar uma função, se estiver a usar o Container Registry, selecione a função Storage -> Storage Object Viewer. Se estiver a usar o Artifact Registry, selecione a função Artifact Registry -> Artifact Registry Reader.
Implemente a imagem de contentor no projeto que contém o seu grupo de trabalhadores do Cloud Run.
Implementar imagens de outros registos
Para implementar imagens de contentores 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-lhe:
- Implementar qualquer imagem de contentor público, por exemplo, o GitHub Container Registry (
ghcr.io
). - Implemente imagens de contentores a partir de repositórios privados que exijam autenticação, por exemplo, o JFrog Artifactory ou o Nexus.
Se a utilização de um repositório remoto do Artifact Registry não for uma opção, pode extrair e enviar temporariamente imagens de contentores para o Artifact Registry implementando-as no Cloud Run através do docker push
. O Cloud Run importa a imagem do contentor durante a implementação e, posteriormente, pode eliminar a imagem do Artifact Registry.
Implemente vários contentores (sidecars) num grupo de trabalhadores
Numa implementação do Cloud Run com sidecars, existe um contentor principal do pool de trabalhadores e um ou mais contentores sidecar. Os sidecars podem comunicar entre si e com o contentor do conjunto de trabalhadores através de uma porta localhost. A porta localhost varia consoante os contentores que estiver a usar.
Pode implementar até 10 contentores por instância, incluindo o contentor do conjunto de trabalhadores. Todos os contentores numa instância partilham o mesmo espaço de nomes de rede e também podem partilhar ficheiros através de um volume partilhado na memória.
Pode exigir que todas as implementações usem um sidecar específico criando políticas de organização personalizadas.
Implemente um serviço com contentores auxiliares
Siga estas instruções, usando a Google Cloud CLI ou o Terraform para implementar vários contentores num conjunto 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 implementar vários contentores num conjunto de trabalhadores, 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 o seguinte:
- WORKER_POOL: o nome do conjunto de trabalhadores para o qual está a fazer a implementação. Se omitir este parâmetro, é-lhe pedido o nome do grupo de trabalhadores.
- WORKER_POOL_CONTAINER_NAME: um nome para o contentor do grupo de trabalhadores.
- IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. - SIDECAR_CONTAINER_NAME: um nome para o contentor auxiliar, por exemplo,
sidecar
. - SIDECAR_IMAGE: uma referência à imagem do contentor auxiliar.
Para configurar cada contentor no comando de implementação, forneça a configuração de cada contentor 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 até que a implementação esteja concluída. Após a conclusão com êxito, o Cloud Run apresenta uma mensagem de êxito.
- WORKER_POOL: o nome do conjunto de trabalhadores.
- REGION: a Google Cloud região, por exemplo,
europe-west1
. - CONTAINER_NAME: o nome do contentor.
- IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. - SIDECAR_CONTAINER_NAME: o nome do contentor auxiliar.
- SIDECAR_IMAGE_URL: uma referência à imagem do contentor auxiliar.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os 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 o seguinte:
Funcionalidades notáveis disponíveis para implementações com sidecars
Pode especificar a ordem de arranque do contentor numa implementação com vários contentores, se tiver dependências que exijam que alguns contentores arranquem antes de outros contentores na implementação.
Se tiver contentores que dependam de outros contentores, tem de usar verificações de estado na sua implementação. Quando usa verificações de estado, o Cloud Run segue a ordem de arranque do contentor, verificando o estado de cada contentor antes de iniciar o contentor seguinte. Sem verificações de estado, o Cloud Run tenta iniciar todos os contentores, mesmo que os contentores dos quais dependem ainda não estejam em execução ou não tenham sido iniciados.
Vários contentores numa única instância podem aceder a um volume na memória partilhado, que é acessível a cada contentor através de pontos de montagem que cria.
O que se segue?
Depois de implementar um novo conjunto de trabalhadores, pode fazer o seguinte:
- Veja os registos do conjunto de trabalhadores
- Monitorize o desempenho do conjunto 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