Executar tarefas

Pode executar fluxos de trabalho de curta duração executando-os como tarefas no Kf. As tarefas são executadas em Apps, o que significa que cada tarefa tem de ter uma app associada. Cada execução de tarefas usa os artefactos de compilação da app principal. Uma vez que as tarefas são de curta duração, a app não é implementada como uma aplicação de execução prolongada, e não devem ser criadas rotas para a app nem para a tarefa.

Envie uma 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 a app.

    Envie a app com o comando kf push APP_NAME --task. A flag --task indica que a app se destina a ser usada para executar tarefas e, por isso, não são criadas rotas na app, e esta não é implementada como uma aplicação de execução prolongada:

    kf push test-app --task
  3. Confirme que não foram criadas instâncias nem rotas da app ao listar a app:

    kf apps

    Repare que a app não é iniciada e não tem URLs:

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

Execute uma tarefa na app

Quando executa uma tarefa na app, pode especificar opcionalmente um comando de início usando a flag --command. Se não for especificado nenhum comando de início, é usado o comando de início especificado na app. Se a app não tiver um comando de início especificado, é procurada a configuração CMD da imagem do contentor. Tem de existir um comando de início para executar a tarefa com êxito.

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

É apresentada uma mensagem semelhante a esta, a confirmar que a tarefa foi enviada:

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

O nome da tarefa é gerado automaticamente, com o prefixo do nome da app e o sufixo de uma string arbitrária. O nome da tarefa é um identificador exclusivo das tarefas no mesmo cluster.

Especifique os limites de recursos de tarefas

Os limites de recursos (como núcleos da CPU/limite de memória/quota de disco) podem ser especificados na 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 na app.

Para especificar limites de recursos numa app, pode usar os sinalizadores --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 substituir estes limites na app, pode usar 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

Especifique um nome a apresentar personalizado para uma tarefa

Opcionalmente, pode usar a flag --name para especificar um nome a apresentar 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>

Faça a gestão de tarefas

Veja todas as tarefas de uma 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>

Cancele uma tarefa

Cancele uma tarefa ativa através do comando kf terminate-task:

  • Cancele uma tarefa pelo nome da tarefa:

    $ kf terminate-task test-app-6w6mz
    Task "test-app-6w6mz" is successfully submitted for termination
    
  • Em alternativa, cancele uma tarefa através de 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 estado 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 registos de tarefas

Veja os registos de uma tarefa através do comando kf logs APP_NAME --task:

$ kf logs test-app --task