Vous pouvez exécuter des workflows de courte durée en les exécutant en tant que tâches dans Kf. Les tâches sont exécutées sous "Applications", ce qui signifie que chaque tâche doit être associée à une application. Chaque exécution de tâche utilise les artefacts de compilation de l'application parente. Les tâches étant de courte durée, l'application ne sera pas déployée en tant qu'application de longue durée et aucune route ne sera créée pour l'application ou la tâche.
Transférer une application pour exécuter des tâches
Clonez le dépôt test-app :
git clone https://github.com/cloudfoundry-samples/test-app test-app
cd test-app
Déployez l'application.
Déployez l'application à l'aide de la commande
kf push APP_NAME --task
. L'option--task
indique que l'application est destinée à être utilisée pour l'exécution de tâches. Par conséquent, aucune route n'est créée sur l'application, et celle-ci n'est pas déployée en tant qu'application de longue durée :kf push test-app --task
Vérifiez qu'aucune instance ni route n'a été créée en répertoriant les applications.
kf apps
Notez que l'application n'est pas démarrée et ne possède pas d'URL :
Listing Apps in Space: test-space Name Instances Memory Disk CPU URLs test-app stopped 1Gi 1Gi 100m <nil>
Exécuter une tâche sur l'application
Lorsque vous exécutez une tâche sur l'application, vous pouvez éventuellement spécifier une commande de démarrage à l'aide de l'option --command
. Si aucune commande de démarrage n'est spécifiée, elle utilise la commande de démarrage indiquée dans l'application. Si aucune commande de démarrage n'est spécifiée pour l'application, elle recherche la configuration CMD de l'image du conteneur. Une commande de démarrage doit exister pour que la tâche puisse s'exécuter.
kf run-task test-app --command "printenv"
Un message semblable à celui-ci s'affiche, confirmant que la tâche a été envoyée :
Task test-app-gd8dv is submitted successfully for execution.
Le nom de la tâche est généré automatiquement, précédé du nom de l'application, et suivi d'une chaîne de votre choix. Le nom de la tâche est un identifiant unique pour les tâches dans le même cluster.
Spécifier les limites de ressources de la tâche
Les limites de ressources (telles que les cœurs de processeur, la limite de mémoire et le quota d'espace disque) peuvent être spécifiées dans l'application (pendant kf push
) ou lors de la commande kf run-task
. Les limites spécifiées dans la commande kf run-task
prévalent sur celles spécifiées dans l'application.
Pour spécifier des limites de ressources dans une application, vous pouvez utiliser les options --cpu-cores
, --memory-limit
et --disk-quota
dans la commande kf push
.
kf push test-app --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G --task
Pour remplacer ces limites dans l'application, vous pouvez utiliser les options --cpu-cores
, --memory-limit
et --disk-quota
dans la commande kf run-task
.
kf run-task test-app --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G
Spécifier un nom personnalisé à afficher pour une tâche
Vous pouvez éventuellement utiliser l'option --name
pour spécifier un nom personnalisé à afficher pour une tâche afin de faciliter l'identification ou le regroupement.
$ 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>
Gérer des tâches
Affichez toutes les tâches d'une application à l'aide de la commande 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>
Annuler une tâche
Annulez une tâche active à l'aide de la commande kf terminate-task
:
Annulez une tâche par son nom :
$ kf terminate-task test-app-6w6mz Task "test-app-6w6mz" is successfully submitted for termination
Ou annulez une tâche à l'aide de
APP_NAME
+ ID de la tâche :$ kf terminate-task test-app 2 Task "test-app-6w6mz" is successfully submitted for termination
Les tâches annulées affichent l'état 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
Afficher les journaux de tâches
Affichez les journaux d'une tâche à l'aide de la commande kf logs APP_NAME --task
:
$ kf logs test-app --task