Tarefas

Sobre o Google Tarefas

Enquantos os aplicativos são processos de longa duração, o Google Tarefas é executado por um período finito e, em seguida, para. As tarefas são executadas nos próprios contêineres com base na configuração do app principal e podem ser configuradas para usar recursos limitados, por exemplo, CPU, memória e armazenamento de disco temporário.

Casos de uso do Google Tarefas

  • Como migrar um banco de dados
  • Como executar um job em lote (programado/não programado)
  • Como enviar um e-mail
  • Transformação de dados (ETL)
  • Processamento de dados (upload/backup/download)

Como o Google Tarefas funciona

As tarefas são executadas de forma assíncrona, independentemente do aplicativo principal ou de outras tarefas em execução no mesmo app. Um aplicativo criado para executar tarefas não tem rotas criadas ou atribuídas, e o ciclo de vida de execução é ignorado. Os ciclos de vida do código-fonte e do build continuam normalmente e resultam em uma imagem de contêiner usada para executar tarefas depois de enviar o app. Consulte os ciclos de vida em Como implantar um aplicativo.

O ciclo de vida de uma tarefa é o seguinte:

  1. Você envia um aplicativo para executar tarefas com o comando kf push APP_NAME --task.
  2. Você executa uma tarefa no aplicativo com o comando kf run-task APP_NAME. A tarefa herda as variáveis de ambiente, vinculações de serviço, alocação de recursos, comando de inicialização e grupos de segurança vinculados ao aplicativo.
  3. O Kf cria um PipelineRun do Tekton com valores do aplicativo e de parâmetros do comando run-task.
  4. O PipelineRun do Tekton cria um pod do Kubernetes que inicia um contêiner com base nas configurações do aplicativo e da tarefa.
  5. A execução da tarefa é interrompida (termina normalmente ou é encerrada de forma manual). O pod é interrompido ou encerrado. Os pods de tarefas interrompidas são preservados e, portanto, os registros são acessíveis pelo comando kf logs APP_NAME --task.
  6. Se você encerrar uma tarefa antes de ela parar, o PipelineRun do Tekton será cancelado (consulte Como cancelar um PipelineRun) e o pod com os registros será excluído. Os registros de tarefas encerradas são entregues aos streams de registros no nível do cluster, se configurados (por exemplo, Stackdriver ou Fluentd).
  7. Se o número de tarefas executadas em um aplicativo for maior que 500, as mais antigas serão excluídas automaticamente.

Política de retenção de tarefas

As tarefas são criadas como recursos personalizados no cluster do Kubernetes. Portanto, é importante não esgotar o espaço do banco de dados etcd. Por padrão, o kf mantém apenas as 500 tarefas mais recentes por aplicativo. Quando o número de tarefas chegar a 500, as mais antigas (junto com os pods e registros) serão excluídas automaticamente.

Geração de registros de tarefas e histórico de execução

Todos os dados ou mensagens que a tarefa gera para STDOUT ou STDERR são disponibilizados pelo comando kf logs APP_NAME --task. O mecanismo no nível do cluster (como Stackdriver e Fluentd) envia os registros de tarefas para o destino de geração de registros configurado.