-
Notifications
You must be signed in to change notification settings - Fork 264
Description
Describe the solution you'd like
I would like Trident to support VolumeAttributesClass (VAC) to dynamically modify mutable parameters of PVCs. The feature is now generally available in Kubernetes.
Specifically, we want to control the QoS class of ONTAP volumes dynamically (e.g., switching between "gold" and "silver") without changing the StorageClass or migrating the volume.
Regarding the parameter design, we request support for specifying ONTAP QoS Policy Group names (e.g., qosPolicy: "gold") in the VAC, rather than raw IOPS values. This approach enables a Separation of Concerns: Storage Admins can tune the specific IOPS values centrally on ONTAP without requiring updates to Kubernetes objects, while Kubernetes Admins simply manage the Service Level intent ("Gold").
Describe alternatives you've considered
- Using multiple StorageClasses
- Leads to a combinatorial explosion of StorageClasses ({svm} x {accessMode} x {qos}).
- Changing QoS requires data migration, which is disruptive and operationally expensive.
- Updating QoS via storage backend CLI (out-of-band)
- Configuration Drift: The change is hidden from Kubernetes, breaking GitOps workflows and complicating accounting.
- Reduced Visibility: Operators cannot determine the actual volume state solely through Kubernetes APIs.
Additional context
- https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
trident/frontend/csi/controller_server.go
Lines 1049 to 1054 in cea7ba1
func (p *Plugin) ControllerModifyVolume( _ context.Context, _ *csi.ControllerModifyVolumeRequest, ) (*csi.ControllerModifyVolumeResponse, error) { // Trident doesn't support ControllerModifyVolume return nil, status.Error(codes.Unimplemented, "") }