Use a custom storage provisioner

Use storage classes to bind persistent volumes from a non-default provisioner in OpenShift Dev Spaces.

Before you begin

About this task

OpenShift Dev Spaces has one component that requires persistent volumes to store data:

  • A OpenShift Dev Spaces workspace. OpenShift Dev Spaces workspaces store source code using volumes, for example /projects volume.
Note:

OpenShift Dev Spaces workspaces source code is stored in the persistent volume only if a workspace is not ephemeral.

Persistent volume claims facts:

  • OpenShift Dev Spaces does not create persistent volumes in the infrastructure.
  • OpenShift Dev Spaces uses persistent volume claims (PVC) to mount persistent volumes.
  • The Dev Workspace operator creates persistent volume claims.

Define a storage class name in the OpenShift Dev Spaces configuration to use the storage classes feature in the OpenShift Dev Spaces PVC.

Use CheCluster Custom Resource definition to define storage classes:

Procedure

Define storage class names in the CheCluster Custom Resource.
spec:
  devEnvironments:
    storage:
      perUserStrategyPvcConfig:
        claimSize: <claim_size>
        storageClass: <storage_class_name>
      perWorkspaceStrategyPvcConfig:
        claimSize: <claim_size>
        storageClass: <storage_class_name>
      pvcStrategy: <pvc_strategy>

where:

claimSize
Persistent Volume Claim size.
storageClass
Storage class for the Persistent Volume Claim. When omitted or left blank, a default storage class is used.
pvcStrategy

Persistent volume claim strategy. The supported strategies are:

  • per-user: All workspaces Persistent Volume Claims share one volume.
  • per-workspace: Each workspace gets its own individual Persistent Volume Claim.
  • ephemeral: Non-persistent storage. Local changes are lost when the workspace stops.

Results

  • Start a workspace and verify that the PersistentVolumeClaim uses the configured storage class:
    oc get pvc -n <user_namespace> -o jsonpath='{.items[*].spec.storageClassName}'