Ejecutar tareas

Puedes ejecutar flujos de trabajo de corta duración ejecutándolos como tareas en Kf. Las tareas se ejecutan en apps, lo que significa que cada tarea debe tener una aplicación asociada. Cada ejecución de tareas usa los artefactos de compilación de la app principal. Como las tareas son de corta duración, la app no se implementará como una aplicación de larga duración y no se deben crear rutas para la aplicación ni la tarea.

Envía una app para ejecutar tareas

  1. Clona el repositorio test-app:

    git clone https://github.com/cloudfoundry-samples/test-app test-app
    cd test-app
  2. Envía la app.

    Envía la app con el comando kf push APP_NAME --task. La marca --task indica que la aplicación está destinada a usarse en la ejecución de tareas y, por lo tanto, no se crean rutas en la aplicación y no se implementa como una aplicación de larga duración:

    kf push test-app --task
  3. Para confirmar que no se crearon instancias o rutas de apps, enumera la app:

    kf apps

    Observa que la app no se inició y no tiene URL:

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

Ejecuta una tarea en la app

Cuando ejecutas una tarea en la app, tienes la opción de especificar un comando de inicio con la marca --command. Si no se especifica ningún comando de inicio, se usa el comando de inicio especificado en la aplicación. Si la app no tiene un comando de inicio especificado, busca la configuración de CMD de la imagen del contenedor. Debe existir un comando de inicio para ejecutar la tarea de forma correcta.

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

Verás un resultado similar a este, que confirma que se envió la tarea:

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

El nombre de la tarea se genera automáticamente, tiene el prefijo de la app y el sufijo se agrega con una string arbitraria. El nombre de la tarea es un identificador único para tareas dentro del mismo clúster.

Especifica los límites de recursos de las tareas

Los límites de recursos (como núcleos de CPU, el límite de memoria o la cuota de disco) se pueden especificar en la app (en kf push) o en el comando kf run-task. Los límites especificados en el comando kf run-task tienen prioridad sobre los límites especificados en la app.

Para especificar los límites de recursos en una app, puedes usar las marcas --cpu-cores, --memory-limit y --disk-quota en el comando kf push.

kf push test-app --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G --task

Para anular estos límites en la app, puedes usar las marcas --cpu-cores, --memory-limit y --disk-quota en el comando kf run-task.

kf run-task test-app --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G

Especifica un nombre visible personalizado para una tarea

De forma opcional, puedes usar la marca --name a fin de especificar un nombre visible personalizado para una tarea a fin de facilitar la identificación o la agrupación:

$ 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>

Administra tareas

Usa el comando kf tasks APP_NAME para consultar todas las tareas de una app:

$ 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>

Cancela una tarea

Cancela una tarea activa con el comando kf terminate-task:

  • Cancela una tarea por su nombre:

    $ kf terminate-task test-app-6w6mz
    Task "test-app-6w6mz" is successfully submitted for termination
    
  • O cancela una tarea con APP_NAME + el ID de la tarea:

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

Las tareas canceladas tienen el 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

Consulta los registros de tareas

Usa el comando kf logs APP_NAME --task para ver los registros de una tarea:

$ kf logs test-app --task