Skip to content

Latest commit

 

History

History
61 lines (54 loc) · 3.25 KB

driver-parameters.md

File metadata and controls

61 lines (54 loc) · 3.25 KB

Driver Parameters

This driver requires existing and already configured NFSv3 or NFSv4 server, it supports dynamic provisioning of Persistent Volumes via Persistent Volume Claims by creating a new sub directory under NFS server.

storage class usage (dynamic provisioning)

StorageClass example

Name Meaning Example Value Mandatory Default value
server NFS Server address domain name nfs-server.default.svc.cluster.local
or IP address 127.0.0.1
Yes
share NFS share path / Yes
subDir sub directory under nfs share No if sub directory does not exist, this driver would create a new one
mountPermissions mounted folder permissions. The default is 0, if set as non-zero, driver will perform chmod after mount No
onDelete when volume is deleted, keep the directory if it's retain delete(default), retain, archive No delete
  • VolumeID(volumeHandle) is the identifier of the volume handled by the driver, format of VolumeID:
{nfs-server-address}#{sub-dir-name}#{share-name}

example: nfs-server.default.svc.cluster.local/share#subdir#

PV/PVC usage (static provisioning)

PersistentVolume example

Name Meaning Example Value Mandatory Default value
volumeHandle Specify a value the driver can use to uniquely identify the share in the cluster. A recommended way to produce a unique value is to combine the nfs-server address, sub directory name and share name: {nfs-server-address}#{sub-dir-name}#{share-name}. Yes
volumeAttributes.server NFS Server address domain name nfs-server.default.svc.cluster.local
or IP address 127.0.0.1
Yes
volumeAttributes.share NFS share path / Yes
volumeAttributes.mountPermissions mounted folder permissions. The default is 0, if set as non-zero, driver will perform chmod after mount No

Tips

subDir parameter supports following pv/pvc metadata conversion

if subDir value contains following strings, it would be converted into corresponding pv/pvc name or namespace

  • ${pvc.metadata.name}
  • ${pvc.metadata.namespace}
  • ${pv.metadata.name}

provide mountOptions for DeleteVolume

since DeleteVolumeRequest does not provide mountOptions, following is the workaround to provide mountOptions for DeleteVolume, check details here

  • create a secret with mountOptions
kubectl create secret generic mount-options --from-literal mountOptions="nfsvers=3,hard"
  • define a storage class with csi.storage.k8s.io/provisioner-secret-name and csi.storage.k8s.io/provisioner-secret-namespace setting:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-csi
provisioner: nfs.csi.k8s.io
parameters:
  server: nfs-server.default.svc.cluster.local
  share: /
  # csi.storage.k8s.io/provisioner-secret is only needed for providing mountOptions in DeleteVolume
  csi.storage.k8s.io/provisioner-secret-name: "mount-options"
  csi.storage.k8s.io/provisioner-secret-namespace: "default"
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
  - nfsvers=4.1