Puedes ejecutar flujos de trabajo de corta duración ejecutándolos como tareas en Kf. Las tareas se ejecutan en Aplicaciones, lo que significa que cada tarea debe tener una aplicación asociada. Cada ejecución de una tarea usa los artefactos de compilación de la aplicación principal. Como las tareas son de corta duración, la aplicación no se desplegará como una aplicación de larga duración y no se deben crear rutas para la aplicación ni para la tarea.
Enviar una aplicación para ejecutar tareas
Clona el repositorio test-app repo.
git clone https://github.com/cloudfoundry-samples/test-app test-app
cd test-app
Envía la aplicación.
Envía la aplicación con el comando
kf push APP_NAME --task
. La marca--task
indica que la aplicación se va a usar para ejecutar tareas, por lo que no se crearán rutas en la aplicación y no se desplegará como una aplicación de larga duración.kf push test-app --task
Confirma que no se han creado instancias ni rutas de la aplicación mostrando la aplicación.
kf apps
Observe que la aplicación no se ha iniciado y no tiene URLs.
Listing Apps in Space: test-space Name Instances Memory Disk CPU URLs test-app stopped 1Gi 1Gi 100m <nil>
Ejecutar una tarea en la aplicación
Cuando ejecutas una tarea en la aplicación, puedes 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 aplicación no tiene ningún comando de inicio especificado, se busca la configuración CMD de la imagen de contenedor. Para que la tarea se ejecute correctamente, debe haber un comando de inicio.
kf run-task test-app --command "printenv"
Verás algo parecido a esto, que confirma que la tarea se ha enviado.
Task test-app-gd8dv is submitted successfully for execution.
El nombre de la tarea se genera automáticamente, se le añade el prefijo del nombre de la aplicación y se le añade una cadena arbitraria. El nombre de la tarea es un identificador único de las tareas del mismo clúster.
Especificar límites de recursos de tareas
Los límites de recursos (como los núcleos de CPU, el límite de memoria o la cuota de disco) se pueden especificar en la aplicación (durante kf push
) o durante el comando kf run-task
. Los límites especificados en el comando kf run-task
tienen prioridad sobre los límites especificados en la aplicación.
Para especificar límites de recursos en una aplicación, 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 aplicación, 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
Especificar un nombre visible personalizado para una tarea
También puedes usar la marca --name
para especificar un nombre visible personalizado de una tarea y así identificarla o agruparla más fácilmente.
$ 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>
Gestionar tareas
Consulta todas las tareas de una aplicación con el 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>
Cancelar una tarea
Cancela una tarea activa con el comando kf terminate-task
.
Cancelar una tarea por su nombre.
$ kf terminate-task test-app-6w6mz
Task "test-app-6w6mz" is successfully submitted for termination
También puedes cancelar una tarea por APP_NAME + ID de 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
Ver registros de tareas
Consulta los registros de una tarea con el comando kf logs APP_NAME --task
.
$ kf logs test-app --task