Executar tarefas

Você pode executar fluxos de trabalho de curta duração executando-os como tarefas no Kf. As tarefas são executadas em "Apps", ou seja, cada uma delas precisa ter um app associado. Toda 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 nem 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 app.

    Envie o app com o comando kf push APP_NAME --task. A flag --task indica que o app deve ser usado para executar tarefas e, portanto, nenhuma rota é criada, e ele não é implantado como um aplicativo de longa duração:

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

    kf apps

    O app 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ê pode especificar um comando inicial usando a flag --command. Se nenhum comando inicial for especificado, ele usará o comando inicial especificado no app. Se o aplicativo 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 do envio da tarefa vai ser assim:

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

O nome da tarefa é gerado automaticamente, recebendo como prefixo o nome do app e como sufixo uma string arbitrária. O nome da tarefa é um identificador exclusivo que é usado para tarefas no mesmo cluster.

Especificar os 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 flags --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

Se quiser modificar esses limites no app, use as flags --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

Você pode usar a flag --name para especificar um nome de exibição personalizado em uma tarefa para facilitar a identificação e 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

Para ver todas as tarefas de um app, use 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

Para cancelar uma tarefa ativa, use o comando kf terminate-task:

  • Cancelar uma tarefa pelo nome:

    $ kf terminate-task test-app-6w6mz
    Task "test-app-6w6mz" is successfully submitted for termination
    
  • Também é possível cancelar uma tarefa usando APP_NAME + ID da tarefa:

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

As tarefas canceladas têm o 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