elixir-cloud-aai / TESK

GA4GH Task Execution Service Root Project + Deployment scripts on Kubernetes
https://tesk.readthedocs.io
Apache License 2.0
39 stars 29 forks source link
ga4gh hacktoberfest tesk

An implementation of a task execution engine based on the TES standard running on Kubernetes. For more details on TES, see the (very) brief introduction to TES.

For organisational reasons, this project is split into 3 repositories:

If the API is running on your cluster it will pull the images from our docker.io repository automatically.

TESK is designed with the goal to support any Kubernetes cluster, for its deployment please refer to the deployment page.

The technical documentation is available in the documentation folder.

Architecture

As a diagram:

TESK architecture

Description: The first pod in the task lifecycle is the API pod, a pod which runs a web server (Tomcat) and exposes the TES specified endpoints. It consumes TES requests, validates them and translates them to Kubernetes jobs. The API pod then creates a task controller pod, or taskmaster.

The taskmaster consumes the executor jobs, inputs and outputs. It first creates filer pod, which creates a persistent volume claim (PVC) to mount as scratch space. All mounts are initialized and all files are downloaded into the locations specified in the TES request; the populated PVC can then be used by each executor pod one after the other. After the filer has finished, the taskmaster goes through the executors and executes them as pods one by one. Note: Each TES task has a separate taskmaster, PVC and executor pods belonging to it; the only 'singleton' pod across tasks is the API pod.

After the last executor, the filer is called once more to process the outputs and push them to remote locations from the PVC. The PVC is the scrubbed, deleted and the taskmaster ends, completing the task.

Requirements