Tarefas em execução

Você pode executar fluxos de trabalho de curta duração executando-os como Tarefas no Kafka. As tarefas são executadas em "Apps", o que significa que cada tarefa deve ter um app associado. Cada execução de tarefa usa os artefatos de compilação do app pai. Como as Tarefas são de curta duração, o app não será implantado como um aplicativo de longa duração, e não será preciso criar nenhuma rota para o app ou para a tarefa.

Enviar um app para executar tarefas

  1. Clone o repositório test-app repo.

    git clone https://github.com/cloudfoundry-samples/test-app test-app
    cd test-app
    
  2. Envie o aplicativo.

    Envie o aplicativo com o comando kf push APP_NAME --task. A sinalização --task indica que o app deve ser usado para executar tarefas. Portanto, nenhuma rota será criada no app e não será implantada como um aplicativo de longa duração.

    kf push test-app --task
    
  3. Verifique se nenhuma instância ou rota do app foi criada listando o aplicativo.

    kf apps
    

    Observe que o aplicativo não foi iniciado e não tem URLs.

    Listing Apps in Space: test-space
    Name                     Instances  Memory  Disk  CPU   URLs
    test-app                 stopped    1Gi     1Gi   100m  <nil>
    

Executar uma tarefa no aplicativo

Ao executar uma Tarefa no app, você tem a opção de especificar um comando inicial usando a sinalização --command. Se nenhum comando inicial for especificado, ele usará o comando inicial especificado no app. Se o app não tiver um comando inicial especificado, ele pesquisará a configuração de CMD da imagem do contêiner. É preciso ter um comando inicial para executar a tarefa.

kf run-task test-app --command "printenv"

A confirmação de que a tarefa foi enviada é mais ou menos assim:

Task test-app-gd8dv is submitted successfully for execution.

O nome da tarefa é gerado automaticamente, prefixado com o nome do aplicativo e sufixado com uma string arbitrária. O nome da tarefa é um identificador exclusivo do Tarefas no mesmo cluster.

Especificar limites de recursos da tarefa

Os limites de recursos (como núcleos de CPU/limite de memória/cota de disco) podem ser especificados no app (durante kf push) ou durante o comando kf run-task. Os limites especificados no comando kf run-task têm precedência sobre os limites especificados no app.

Para especificar os limites de recursos em um app, use as sinalizações --cpu-cores, --memory-limit e --disk-quota no comando kf push.

kf push test-app --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G --task

Para modificar esses limites no App, use as sinalizações --cpu-cores, --memory-limit e --disk-quota no comando kf run-task.

kf run-task test-app --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G

Especificar um nome de exibição personalizado para uma tarefa

Opcionalmente, você pode usar a sinalização --name para especificar um nome de exibição personalizado para uma Tarefa para facilitar a identificação/agrupamento.

$ kf run-task test-app --command "printenv" --name foo
Task test-app-6swct is submitted successfully for execution.

$ kf tasks test-app
Listing Tasks in Space: test space
Name              ID  DisplayName        Age    Duration  Succeeded  Reason
test-app-6swct    3   foo                1m     21s       True       <nil>

Gerenciar tarefas

Veja todas as tarefas de um app com o comando kf tasks APP_NAME.

$ kf tasks test-app
Listing Tasks in Space: test space
Name              ID  DisplayName        Age    Duration  Succeeded  Reason
test-app-gd8dv    1   test-app-gd8dv     1m     21s       True       <nil>

Cancelar uma tarefa

Cancele uma tarefa ativa usando o comando kf terminate-task.

Cancelar uma tarefa por nome de tarefa.

$ kf terminate-task test-app-6w6mz
Task "test-app-6w6mz" is successfully submitted for termination

Ou cancele uma tarefa de APP_NAME + ID da tarefa.

$ kf terminate-task test-app 2
Task "test-app-6w6mz" is successfully submitted for termination

Tarefas canceladas têm status PipelineRunCancelled.

$ kf tasks test-app
Listing Tasks in Space: test space
Name              ID  DisplayName        Age    Duration  Succeeded  Reason
test-app-gd8dv    1   test-app-gd8dv     1m     21s       True       <nil>
test-app-6w6mz    2   test-app-6w6mz     38s    11s       False      PipelineRunCancelled

Ver registros da tarefa

Veja os registros de uma tarefa usando o comando kf logs APP_NAME --task.

$ kf logs test-app --task