Uploaded image for project: 'Red Hat OpenShift Dev Spaces (formerly CodeReady Workspaces) '
  1. Red Hat OpenShift Dev Spaces (formerly CodeReady Workspaces)
  2. CRW-9440

Devspaces-Operator removes claim-devworkspace PVC when the PVC is removed from the project template

XMLWordPrintable

    • False
    • Hide

      None

      Show
      None
    • False

      Description of problem:

      Custom project templates can be used for the devspaces namespace creation [1]. This can be used for the shared PVC "claim-devworkspace" for example with:

       

                      apiVersion: template.openshift.io/v1
                      kind: Template
                      metadata:
                        name: devspaces-user-namespace-configurator
                        namespace: openshift-devspaces
                        labels:
                          app.kubernetes.io/part-of: che.eclipse.org
                          app.kubernetes.io/component: workspaces-config
                      objects:
                        - kind: PersistentVolumeClaim
                          apiVersion: v1
                          metadata:
                            name: claim-devworkspace
                          spec:
                            accessModes:
                              - ReadWriteMany
                            resources:
                              requests:
                                storage: 10Gi
                            storageClassName: example-storage-class

      When the PVC is removed from the template the devspaces-operator deletes the PVC.

       

       

      [1]https://docs.redhat.com/en/documentation/red_hat_openshift_dev_spaces/3.22/html/administration_guide/configuring-devspaces#configuring-a-user-namespace

      Prerequisites (if any, like setup, operators/versions):

      Steps to Reproduce

      1. Create the project template in the "openshift-devspaces" namespace:

      apiVersion: template.openshift.io/v1
      kind: Template
      metadata:
        name: devspaces-user-namespace-configurator
        namespace: openshift-devspaces
        labels:
          app.kubernetes.io/part-of: che.eclipse.org
          app.kubernetes.io/component: workspaces-config
      objects:
        - kind: PersistentVolumeClaim
          apiVersion: v1
          metadata:
            name: claim-devworkspace
          spec:
            accessModes:
              - ReadWriteOnce
            resources:
              requests:
                storage: 10Gi
            storageClassName: managed-nfs-storage
            volumeMode: Filesystem 

      2. Log into the DevSpaces UI and create a new devworkspace

      3. Stop the devworkspace

      4. Delete the "devspaces-user-namespace-configurator" template in the "openshift-devspaces" namespace

      5. This will cause that the "claim-devworkspace" PVC to be deleted:

      Log from devspaces-operator:

      2025-09-24T07:30:15Z INFO sync Object deleted {"namespace": "devspaces-userxx-xxx-com-1mft76", "kind": "v1.PersistentVolumeClaim", "name": "claim-devworkspace"} 

      Note: If the "claim-devworkspace" was already present in an existing devworkspace it will cause the following log in the devspaces-operator after removing the template:

      2025-09-24T07:26:30Z INFO sync Object deleted {"namespace": "devspaces-useryy-xxx-com-0dcwnc", "kind": "v1.PersistentVolumeClaim", "name": "claim-devworkspace"}2025-09-24T07:26:30Z ERROR workspaces-config Failed to sync object {"namespace": "devspaces-useryy-xxx-com-0dcwnc", "kind": "v1.PersistentVolumeClaim", "name": "claim-devworkspace", "error": "object is being deleted: persistentvolumeclaims \"claim-devworkspace\" already exists"}github.com/eclipse-che/che-operator/controllers/workspaceconfig.(*WorkspacesConfigReconciler).syncObject/che-operator/controllers/workspaceconfig/workspaces_config_controller.go:452github.com/eclipse-che/che-operator/controllers/workspaceconfig.(*WorkspacesConfigReconciler).syncTemplates/che-operator/controllers/workspaceconfig/workspaces_config_controller.go:396github.com/eclipse-che/che-operator/controllers/workspaceconfig.(*WorkspacesConfigReconciler).syncNamespace/che-operator/controllers/workspaceconfig/workspaces_config_controller.go:267github.com/eclipse-che/che-operator/controllers/workspaceconfig.(*WorkspacesConfigReconciler).Reconcile/che-operator/controllers/workspaceconfig/workspaces_config_controller.go:179sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile/che-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:119sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler/che-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:334sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem/che-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:294sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2/che-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:255 

      Actual results:

      "claim-devworkspace" PVC is deleted

      Expected results:

      No data loss – thus no deletion of the "claim-devworkspace" PVC

      Reproducibility (Always/Intermittent/Only Once):

      Always

      Acceptance criteria: 

       

      Definition of Done:

      Build Details:

      Additional info (Such as Logs, Screenshots, etc):

      Upstream issue: https://github.com/eclipse-che/che/issues/23569

       

              abazko Anatolii Bazko
              rh-ee-mthuring Maximilian Thüringer
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: