Exécuter des tâches

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

  1. Clonez le dépôt test-app :

    git clone https://github.com/cloudfoundry-samples/test-app test-app
    cd test-app
  2. 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
  3. 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