Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add volumeClaimTemplate as a Workspace volume source #2326

Commits on Apr 9, 2020

  1. Add volumeClaimTemplate as a Workspace volume source

    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
    jlpettersson committed Apr 9, 2020
    Configuration menu
    Copy the full SHA
    c7ce3da View commit details
    Browse the repository at this point in the history