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
Clone o repositório test-app repo:
git clone https://github.com/cloudfoundry-samples/test-app test-app
cd test-app
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
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