# CSI NFS driver ## Kubernetes ### Requirements The folllowing feature gates and runtime config have to be enabled to deploy the driver ``` FEATURE_GATES=CSIPersistentVolume=true,MountPropagation=true RUNTIME_CONFIG="storage.k8s.io/v1alpha1=true" ``` Mountprogpation requries support for privileged containers. So, make sure privileged containers are enabled in the cluster. ### Example local-up-cluster.sh ```ALLOW_PRIVILEGED=true FEATURE_GATES=CSIPersistentVolume=true,MountPropagation=true RUNTIME_CONFIG="storage.k8s.io/v1alpha1=true" LOG_LEVEL=5 hack/local-up-cluster.sh``` ### Deploy ```kubectl -f deploy/kubernetes create``` ### Example Nginx application Please update the NFS Server & share information in nginx.yaml file. ```kubectl -f examples/kubernetes/nginx.yaml create``` ## Using CSC tool ### Build nfsplugin ``` $ make nfs ``` ### Start NFS driver ``` $ sudo ./_output/nfsplugin --endpoint tcp://127.0.0.1:10000 --nodeid CSINode -v=5 ``` ## Test Get ```csc``` tool from https://github.com/thecodeteam/gocsi/tree/master/csc #### Get plugin info ``` $ csc identity plugin-info --endpoint tcp://127.0.0.1:10000 "NFS" "0.1.0" ``` ### Get supported versions ``` $ csc identity supported-versions --endpoint tcp://127.0.0.1:10000 0.1.0 ``` #### NodePublish a volume ``` $ export NFS_SERVER="Your Server IP (Ex: 10.10.10.10)" $ export NFS_SHARE="Your NFS share" $ csc node publish --endpoint tcp://127.0.0.1:10000 --target-path /mnt/nfs --attrib server=$NFS_SERVER --attrib share=$NFS_SHARE nfstestvol nfstestvol ``` #### NodeUnpublish a volume ``` $ csc node unpublish --endpoint tcp://127.0.0.1:10000 --target-path /mnt/nfs nfstestvol nfstestvol ``` #### Get NodeID ``` $ csc node get-id --endpoint tcp://127.0.0.1:10000 CSINode ```