Executar tarefas

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 aplicativo deve ser usado para executar o Tarefas e, portanto, nenhuma rota é criada no aplicativo e não é 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"

Você verá algo como isto, confirmando que a tarefa foi enviada:

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 prioridade em relação aos limites especificados no aplicativo.

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 até 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

Use o comando kf logs APP_NAME --task para ver os registros de uma tarefa:

$ kf logs test-app --task