-
Notifications
You must be signed in to change notification settings - Fork 286
Description
Is your feature request related to a problem?/Why is this needed**
Currently, the subDir parameter is supported in StorageClass, allowing PVCs to be created inside a specific folder. This is particularly useful for organizing and separating data by directories in the NFS CSI driver.
However, when creating snapshots via VolumeSnapshot, there is no option to specify subDir. As a result, snapshots are always stored in the root directory of the NFS server, with names like snapshot-<snapshotUID>.
https://github.com/kubernetes-csi/external-snapshotter/blob/v8.2.0/pkg/sidecar-controller/csi_handler.go#L87
Describe the solution you'd like in detail
VolumeSnapshotClass should support the subDir parameter, just like StorageClass. This would allow snapshots to be stored in the same subdirectory as their corresponding PVCs when using the NFS CSI driver.
Since VolumeSnapshotClass already has a parameters field, this change would require modifications to the CSI driver and would not impact any Kubernetes core components or external-snapshotter behavior.
Proposed Parameter Handling:
The subDir parameter should be processed within the CSI driver to determine the directory where snapshots are stored. Below is an example configuration:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: my-snapshot-class
parameters:
subDir: "snapshots"- If
subDiris specified, the snapshot will be stored inside the given subdirectory. - If not specified, the default behavior (storing in the root directory) remains unchanged.
Describe alternatives you've considered
- Manually moving snapshots to the desired subdirectory after creation, which is not ideal due to automation and access control limitations. Additionally, the
VolumeSnapshotContent.status.snapshotHandlewould also need to be manually updated, which is not supported by Kubernetes and can lead to inconsistencies.
Additional context
This feature would be particularly beneficial for this CSI driver, where organizing snapshots in specific directories can improve manageability. Allowing users to specify subDir in VolumeSnapshotClass ensures consistency in snapshot placement and improves manageability.
Additionally, modifying subDir does not affect existing snapshots. Since parameters in VolumeSnapshotClass cannot be modified after creation, users must create a new VolumeSnapshotClass with the desired subDir. Moreover, the snapshotHandle stored in VolumeSnapshotContent.status includes folder information, ensuring that restoring snapshots remains unaffected by subDir changes.
Expected Directory Structure Change
Current Behavior:
/nfs-root/snapshot-<snapshotUID>
Proposed Behavior with subDir: snapshots:
/nfs-root/snapshots/snapshot-<snapshotUID>