From bd7c7b203f419251bb16b5f30d7306de3d280c7e Mon Sep 17 00:00:00 2001 From: Viktor Kuzmin Date: Mon, 7 Aug 2023 09:49:25 +0300 Subject: Implement ExpandVolume also for controller https://kubernetes-csi.github.io/docs/volume-expansion.html CSI Resizer should be always run even if not implemented. Also it should run only against controller. Volume resize on node rpc call is handled by kubelet. For now the only job for controller's volume resize is to make it two step and propagate changes to node. --- pkg/driver/controllerserver.go | 12 ++++++++++++ pkg/driver/driver.go | 1 + 2 files changed, 13 insertions(+) diff --git a/pkg/driver/controllerserver.go b/pkg/driver/controllerserver.go index 3a5abdc..57b43d0 100644 --- a/pkg/driver/controllerserver.go +++ b/pkg/driver/controllerserver.go @@ -180,6 +180,18 @@ func (cs *ControllerServer) ControllerGetCapabilities(ctx context.Context, req * }, nil } +func (cs *ControllerServer) ControllerExpandVolume(ctx context.Context, req *csi.ControllerExpandVolumeRequest) (*csi.ControllerExpandVolumeResponse, error) { + capacity := req.GetCapacityRange().GetRequiredBytes() + + glog.Infof("expand volume req: %v, capacity: %v", req.GetVolumeId(), capacity) + + // We need to propagate resize requests to node servers + return &csi.ControllerExpandVolumeResponse{ + CapacityBytes: capacity, + NodeExpansionRequired: true, + }, nil +} + func sanitizeVolumeId(volumeId string) string { volumeId = strings.ToLower(volumeId) if len(volumeId) > 63 { diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go index 20a6fa5..23dbae3 100644 --- a/pkg/driver/driver.go +++ b/pkg/driver/driver.go @@ -77,6 +77,7 @@ func NewSeaweedFsDriver(filer, nodeID, endpoint string) *SeaweedFsDriver { csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME, csi.ControllerServiceCapability_RPC_PUBLISH_UNPUBLISH_VOLUME, csi.ControllerServiceCapability_RPC_SINGLE_NODE_MULTI_WRITER, + csi.ControllerServiceCapability_RPC_EXPAND_VOLUME, }) return n -- cgit v1.2.3