Desenvolver e criar um job do Shell no Cloud Run
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
Ative a API Cloud Run Admin:
gcloud services enable run.googleapis.com
Depois que a API Cloud Run Admin for ativada, a conta de serviço padrão do Compute Engine será criadas automaticamente.
- Para que o Cloud Build consiga criar suas origens, conceda o papel
Conta de serviço do Cloud Build
para a conta de serviço padrão do Compute Engine. Basta executar o comando a seguir:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/cloudbuild.builds.builder
Substitua
PROJECT_NUMBER
pelo número do projeto do Google Cloud ePROJECT_ID
pelo ID do projeto do Google Cloud.O número e o ID do projeto estão disponíveis na página Olá! do console do Google Cloud.
Como escrever o job de amostra
Para gravar um job do Cloud Run que executa um script de shell. faça o seguinte:
Crie um novo diretório com o nome
jobs
e altere o diretório nele:mkdir jobs cd jobs
Crie um arquivo Dockerfile com o seguinte conteúdo:
No mesmo diretório, crie um arquivo
script.sh
para o código do job real. Copie as seguintes linhas de amostra:Os jobs do Cloud Run permitem que os usuários especifiquem o número de tarefas que o job vai executar. Esse exemplo de código mostra como usar a variável de ambiente
CLOUD_RUN_TASK_INDEX
integrada. Cada tarefa representa uma cópia em execução do contêiner. As tarefas geralmente são executadas em paralelo. É útil usar várias tarefas se cada uma delas puder processar independentemente um subconjunto dos dados.Cada tarefa está ciente do índice armazenado na variável de ambiente
CLOUD_RUN_TASK_INDEX
. A variável de ambienteCLOUD_RUN_TASK_COUNT
integrada contém o número de tarefas fornecidas no tempo de execução do job por meio do parâmetro--tasks
.O código mostrado também mostra como repetir tarefas, usando o método integrado
CLOUD_RUN_TASK_ATTEMPT
que contém o número de vezes que essa tarefa foi repetida, começando em 0 para a primeira tentativa e aumentando em 1 a cada nova tentativa, até--max-retries
de dados.O código também permite gerar falhas como uma maneira de testar novas tentativas e gerar registros de erro para que você possa ver como eles são.
Seu código está completo e pronto para ser empacotado em um contêiner.
Crie um contêiner de jobs, envie-o para o Artifact Registry e implante no Cloud Run
Importante: este guia de início rápido pressupõe que você tenha papéis de proprietário ou editor no projeto que está usando para este guia. Caso contrário, consulte o papel de desenvolvedor de origem do Cloud Run para ter acesso às permissões necessárias para implantar um recurso do Cloud Run a partir da origem.
Neste guia de início rápido, usamos a implantação a partir da origem, que cria o contêiner, faz upload dele para o Artifact Registry e implanta o job no Cloud Run:
gcloud run jobs deploy job-quickstart \ --source . \ --tasks 50 \ --set-env-vars SLEEP_MS=10000 \ --set-env-vars FAIL_RATE=0.1 \ --max-retries 5 \ --region REGION \ --project=PROJECT_ID
em que PROJECT_ID é o ID do projeto e REGION é a região, por exemplo, us-central1
. É possível mudar os vários parâmetros para os valores que você quer usar para fins de teste.
O SLEEP_MS
simula o trabalho, e FAIL_RATE
faz com que X
% das tarefas falhem. Assim, você
pode testar o paralelismo e tentar novamente tarefas com falha.
Executar um job no Cloud Run
Para executar o job que você acabou de criar:
gcloud run jobs execute job-quickstart --region REGION
Substitua REGION pela região que você usou ao criar e implantar o job, por exemplo, us-central1
.
A seguir
Para mais informações sobre como criar um contêiner a partir do código-fonte e enviá-lo para um repositório, consulte: