Attention: This user guide to apply fsgroup to volumes provisioned by filestore driver is applicable for
stable-masteroverlay driver manifest bundle, deployed to kubernetes 1.19+ clusters. For 1.19 (CSIVolumeFSGroupPolicy feature gate needs to be manually enabled). For a workaround to apply fsgroup on clusters 1.19 (with CSIVolumeFSGroupPolicy feature gate disabled), and clusters <= 1.18 see user-guide here
Attention:
CSIVolumeFSGroupPolicyis a Kubernetes feature which is Beta is 1.20+, Alpha(1.19).
Attention: CSIDriver object
fsGroupPolicyfield is added in Kubernetes 1.19 (alpha) and cannot be set when using an older Kubernetes release. For 1.20+ k8s versions the feature is be enabled by default.
Kubernetes uses fsGroup to change permissions and ownership of the volume to match user requested fsGroup in the pod's SecurityContext. Kubernetes feature CSIVolumeFSGroupPolicy is a beta feature in K8s 1.20+ by which CSI drivers can explicitly declare support for fsgroup. Read more about CSIVolumeFSGroupPolicy here and here.
-
Create
StorageClassIf you haven't created a
StorageClassyet, create one first:$ kubectl apply -f ./examples/kubernetes/fsgroup/demo-sc.yamlIf a non-default network is used for the filestore instance, provide a network paramter to the storage class.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-filestore provisioner: filestore.csi.storage.gke.io parameters: network: <network name> # Change this network as per the deployment volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true
-
Check the CSI driver object for the filestore driver. It should report
fsGroupPolicy: File$ kubectl get csidriver filestore.csi.storage.gke.io -o json { "apiVersion": "storage.k8s.io/v1", "kind": "CSIDriver", ... "spec": { "attachRequired": false, "fsGroupPolicy": "File", "podInfoOnMount": true, "volumeLifecycleModes": [ "Persistent" ] } }
-
Create Pod with fsgroup and using a PVC with ReadWriteMany access mode, provisioned by CSI Filestore driver.
$ kubectl apply -f ./examples/kubernetes/fsgroup/pod-with-fsgroup.yaml -
Verify that the pod is up and running and fsgroup ownerhsip change is applied in the volume.
$ kubectl exec busybox-pod -- ls -l /tmp
total 16
drwxrws--- 2 root 4000 16384 Jan 27 04:27 lost+found