Sobre este codelab
1. Introdução
Última atualização:06/05/2022
Jobs do Cloud Run
Os jobs do Cloud Run permitem executar jobs de longa duração no Cloud Run.
Este codelab é estritamente informativo, e contém informações sobre quando e como usar os jobs do Cloud Run. Ele prepara você para o codelab Primeiros passos com os jobs do Cloud Run, em que você tem experiência prática usando o Console do Google Cloud para criar um contêiner, criar e executar um job do Cloud Run, além de atualizar e agendar as trabalho.
O que você aprenderá
- O que são jobs do Cloud Run
- Quando usar jobs do Cloud Run
- Fluxo de trabalho dos jobs do Cloud Run
- Como criar um job do Cloud Run
- Como executar um job do Cloud Run
- Como executar um job em uma programação
- Como ver o status da execução
- Como gerenciar o job e as execuções dele
- Como detectar a conclusão do job
- Como atualizar um job
2. Visão geral dos jobs do Cloud Run
Há duas maneiras de executar seu código no Cloud Run. É possível executá-lo continuamente como um serviço.
Se o código executar um trabalho e parar, você poderá usar um job do Cloud Run.
Os serviços do Cloud Run são adequados para contêineres executados indefinidamente para detectar solicitações HTTP, mas os jobs do Cloud Run são ideais para contêineres executados até o final e que não atendem a solicitações, como processamento de dados e jobs administrativos.
Outros casos de uso para jobs do Cloud Run incluem:
- executar um script para realizar migrações de banco de dados ou outras tarefas operacionais;
- Processamento em paralelo de todos os arquivos em um bucket do Cloud Storage.
- Criação e envio de faturas todo mês.
- A cada quatro horas, salvando os resultados de uma consulta no banco de dados como XML e fazendo upload do arquivo.
Em relação a outras plataformas compatíveis com jobs de longa duração, os jobs do Cloud Run são iniciados rapidamente após a criação. Os contêineres simples podem começar em apenas 10 segundos, dependendo da complexidade do contêiner. Isso torna os jobs do Cloud Run adequados para situações em que é necessário esperar alguns minutos para que a VM seja iniciada.
3. Fluxo de trabalho de jobs do Cloud Run
O fluxo de trabalho de jobs do Cloud Run consiste em duas etapas simples:
- Crie a vaga. O job encapsula toda a configuração necessária para executá-lo, como a imagem do contêiner.
- Execute o job. Use o Console do Cloud ou a CLI gcloud e execute o job na linha de comando.
Um job pode iniciar uma instância de contêiner para executar seu código ou pode iniciar muitas instâncias de contêiner independentes e idênticas em paralelo especificando o número de tarefas a serem executadas. Por exemplo, se você estiver lendo mil imagens do Cloud Storage para redimensionar e cortá-las,o processamento consecutivo delas será mais lento do que o processamento em massa ao mesmo tempo, com muitas instâncias de contêiner.
4. Criar o job
Para criar o job, use o Console do Cloud ou a CLI gcloud com o seguinte comando:
gcloud beta run jobs create JOB_NAME --image IMAGE_URL OPTIONS
Substitua:
JOB_NAME
pelo nome do job que você quer criar;IMAGE_URL
com uma referência à imagem do contêiner.- Se quiser, substitua
OPTIONS
por qualquer uma das sinalizações disponíveis. Para ver uma lista completa de sinalizações, executegcloud beta run jobs create --help
.
Estes são alguns exemplos de sinalizações:
--tasks
para o número de tarefas a serem executadas.-–max retries
para o número de vezes que uma tarefa com falha é repetida.--parallelism
para o número máximo de tarefas que podem ser executadas em paralelo.--execute-now
para executar o job imediatamente depois de criá-lo.--async
para sair do job imediatamente após a criação de uma nova execução.
Também é possível usar os recursos habituais do Cloud Run para proteger o job do Cloud Run e conectá-lo ao restante do ambiente do Google Cloud Platform (GCP).
5. Executar o job
Para executar o job, use o Console do Cloud ou a CLI gcloud com o seguinte comando:
- No Console do Cloud, clique no nome do job e em Executar na parte superior da página.
- Na CLI gcloud, use o seguinte comando:
gcloud beta run jobs execute JOB_NAME EXECUTION_OPTIONS
Substitua JOB_NAME
pelo nome do job. Você também pode substituir EXECUTION_OPTIONS
para especificar:
- Execução imediata do job após a criação.
gcloud beta run jobs create JOB_NAME --execute-now
- Se você quiser esperar até que a execução seja concluída antes de sair.
gcloud beta run jobs create JOB_NAME --wait
- Se você quiser sair imediatamente depois de criar uma nova execução,
gcloud beta run jobs create JOB_NAME --async
6. Executar o job em uma programação
Se você quiser executar o job em uma programação, use o Cloud Scheduler.
Por exemplo, você pode criar e enviar faturas em intervalos regulares ou salvar os resultados de uma consulta no banco de dados como XML e fazer upload do arquivo em intervalos de algumas horas.
Com o Cloud Scheduler, é possível programar o job e gerenciar todas as tarefas de automação em um só lugar.
- Executar jobs em lote e de Big Data no mesmo horário toda semana, dia ou hora, com execução garantida e novas tentativas em caso de falhas.
- Automatize muitas das tarefas tediosas associadas à execução da infraestrutura em nuvem de maneira confiável e totalmente gerenciada.
- Automatize praticamente qualquer coisa.
- Veja e gerencie todos os seus jobs usando uma única IU ou interface de linha de comando.
Depois de configurar o ambiente para permitir que o projeto use o Cloud Scheduler, crie um job do Cloud Run e defina uma programação inserindo o nome, a região, a descrição, a frequência e o fuso horário. Depois, o Cloud Scheduler executa o job do Cloud Run na frequência especificada.
7. Ver o status da execução do job
Depois que seu job for executado, será possível visualizar os registros nos registros do Cloud Logging e os dados de monitoramento no Cloud Monitoring.
Para ver os registros, faça o seguinte:
- Use a página do Cloud Run no Console do Cloud.
- Use o explorador de registros do Cloud Logging no Console do Cloud.
Esses dois métodos de visualização examinam os mesmos registros armazenados no Cloud Logging, mas o Explorador de registros do Cloud Logging fornece mais detalhes e mais recursos de filtragem.
Cloud Monitoring oferece monitoramento de desempenho do Cloud Run emétricas, junto comalertas para enviar notificações quando determinados limites de métrica forem excedidos. O Cloud Run é integrado automaticamente ao Cloud Monitoring, sem necessidade de configuração. Isso significa que as métricas dos jobs do Cloud Run são capturadas automaticamente quando estão em execução.
É possível ver as métricas no Cloud Monitoring ou na página do Cloud Run no console. O Cloud Monitoring oferece mais opções de gráficos e filtros.
8. Gerenciar o job e as execuções dele
Para gerenciar o job, use o Console do Cloud ou a CLI gcloud para visualizar uma lista de:
Você também tem as seguintes opções:
- Interrompa uma execução de job em execução para excluí-la.
- Excluir execuções do job que não estão em execução.
- Excluir uma vaga.
A exclusão de um job cancela todas as execuções pendentes dele, mas os registros e os dados de monitoramento do job continuam disponíveis pelo restante do período de retenção de registros, que geralmente é de 30 dias. O monitoramento de dados continua disponível no Cloud Monitoring.
9. Detectar a conclusão da execução do job
Há várias maneiras de detectar se uma execução do job foi concluída:
- Execute o job com a sinalização
--wait
e a CLI gcloud será encerrada quando o job for concluído.
gcloud beta run jobs execute JOB_NAME --wait
- Pesquise o endpoint Executions.get da API REST, procurando a condição de status
Completed
comoTrue
. - Procure a entrada de registro gravada quando a execução é concluída, da seguinte forma:
Completed condition status changed to True for Execution sleepy-l8zjp.
Para ver essa mensagem de registro, execute a seguinte consulta no Cloud Logging:
resource.type="cloud_run_revision"
resource.labels.revision_name="EXECUTION_NAME" log_name="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
protoPayload.response.status.conditions.type="Completed"
protoPayload.response.status.conditions.status="True"
Também é possível pesquisar o local em que você está gravando a saída para detectar quando ela aparece. No entanto, isso funcionará apenas se a saída for a última coisa que o job faz. Por exemplo, se o job fizer a limpeza depois de gravar a saída, ele ainda poderá falhar após a saída da gravação.
10. Atualizar o job
Ao criar um job, especifique uma imagem de contêiner com uma tag ou um resumo:
- Exemplo de tag:
gcr.io/my-project/my-image:tag
- Exemplo de resumo:
gcr.io/my-project/my-image@sha256:41f34ab970ee...
Se nenhuma delas for especificada, a tag :latest
será usada.
A atualização do job para executar a versão mais recente do código depende de você ter especificado uma imagem de contêiner com uma tag ou um resumo.
Se você especificou uma imagem de contêiner com uma tag, o Cloud Run resolve sua imagem em um resumo específico ao executar o job. Isso significa que não é necessário atualizar o job explicitamente para selecionar a versão mais recente do contêiner na próxima execução.
Se você prefere usar um resumo de contêiner específico sempre que o job é executado, é possível especificar uma imagem de contêiner com um resumo exato. Nesse caso, você precisará atualizar explicitamente o job para usar um resumo diferente se quiser que ele detecte as alterações de código feitas:
gcloud alpha run jobs update JOB_NAME --image NEW-IMAGE
Independentemente de como você especificar a imagem do contêiner, todas as tarefas de uma execução sempre usarão o mesmo resumo.
Enquanto uma atualização está sendo aplicada, não é possível iniciar novas execuções. É necessário aguardar a conclusão da atualização, o que geralmente leva alguns segundos. Se a atualização falhar, não será possível criar novas execuções. Primeiro, será preciso colocar o job em um bom estado fazendo outra atualização.
11. Parabéns
Parabéns! Você aprendeu quando e como usar os jobs do Cloud Run.
Veja alguns dos pontos abordados:
- O que são jobs do Cloud Run
- Quando usar jobs do Cloud Run
- Fluxo de trabalho dos jobs do Cloud Run
- Como criar um job do Cloud Run
- Como executar um job do Cloud Run
- Como executar um job em uma programação
- Como ver o status da execução
- Como gerenciar o job e as execuções dele
- Como detectar a conclusão do job
- Como atualizar um job
Qual é a próxima etapa?
Primeiros passos com jobs do Cloud Run
Ajuda
Para uma referência completa da gcloud, use o comando de ajuda:
gcloud alpha run jobs --help
gcloud alpha run jobs executions --help
Documentos de referência
Executar jobs em uma programação
Como gerar e visualizar registros
Como monitorar a integridade e o desempenho
Documentação do Cloud Monitoring