An existing PersistentVolumeClaim can currently be used as a Workspace
volume source. There is two ways of using an existing PVC as volume:
- Reuse an existing PVC
- Create a new PVC before each PipelineRun.
There is disadvantages by reusing the same PVC for every PipelineRun:
- You need to clean the PVC at the end of the Pipeline
- All Tasks using the workspace will be scheduled to the node where
the PV is bound
- Concurrent PipelineRuns may interfere, an artifact or file from one
PipelineRun may slip in to or be used in another PipelineRun, with
very few audit tracks.
There is also disadvantages by creating a new PVC before each PipelineRun:
- This can not (easily) be done declaratively
- This is hard to do programmatically, because it is hard to know when
to delete the PVC. The PipelineRun can not be set as OwnerReference since
the PVC must be created first
This commit adds 'volumeClaimTemplate' as a volume source for workspaces. This
has several advantages:
- The syntax is used in k8s StatefulSet and other k8s projects so it is
familiar in the kubernetes ecosystem
- It is possible to declaratively declare that a PVC should be created for each
PipelineRun, e.g. from a TriggerTemplate.
- The user can choose storageClass (or omit to get the cluster default) to e.g.
get a faster SSD volume, or to get a volume compatible with e.g. Windows.
- The user can adapt the size to the job, e.g. use 5Gi for apps that contains
machine learning models, or 1Gi for microservice apps. It can be changed on
demand in a configuration that lives in the users namespace e.g. in a
TriggerTemplate.
- The size affects the storage quota that is set on the namespace and it may affect
billing and cost depending on the cluster environment.
- The PipelineRun or TaskRun with the template is created first, and is used
as OwnerReference on the PVC. That means that the PVC will have the same lifecycle
as the PipelineRun.
Related to tektoncd#1986
See also:
- tektoncd#2174
- tektoncd#2218
- tektoncd/triggers#476
- tektoncd/triggers#482
- kubeflow/kfp-tekton#51