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.
ALLOW_PRIVILEGED=true FEATURE_GATES=CSIPersistentVolume=true,MountPropagation=true RUNTIME_CONFIG="storage.k8s.io/v1alpha1=true" LOG_LEVEL=5 hack/local-up-cluster.sh
kubectl -f deploy/kubernetes create
Please update the NFS Server & share information in nginx.yaml file.
kubectl -f examples/kubernetes/nginx.yaml create
$ make nfs
$ sudo ./_output/nfsplugin --endpoint tcp://127.0.0.1:10000 --nodeid CSINode -v=5
Get csc
tool from https://github.com/rexray/gocsi/tree/master/csc
$ csc identity plugin-info --endpoint tcp://127.0.0.1:10000
"NFS" "0.1.0"
$ 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
$ csc node unpublish --endpoint tcp://127.0.0.1:10000 --target-path /mnt/nfs nfstestvol
nfstestvol
$ csc node get-id --endpoint tcp://127.0.0.1:10000
CSINode
First, stand up a local cluster ALLOW_PRIVILEGED=1 hack/local-up-cluster.sh
(from your Kubernetes repo)
For Fedora/RHEL clusters, the following might be required:
sudo chown -R $USER:$USER /var/run/kubernetes/
sudo chown -R $USER:$USER /var/lib/kubelet
sudo chcon -R -t svirt_sandbox_file_t /var/lib/kubelet
For all of the following commands, set the KUBECONFIG
env variables as instructed by local-up-cluster.sh
or as needed for some other cluster.
deploy/kubernetes/deploy.sh
will deploy the nfs driver using an
image from quay.io which (at the time of writing this) isn't available
yet.
It is possible to use a locally built image without any registry:
$ make container
...
Successfully tagged nfsplugin:latest
$ NFSPLUGIN_REGISTRY=none NFSPLUGIN_TAG=latest deploy/kubernetes/deploy.sh
applying RBAC rules
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-attacher/v1.0.1/deploy/kubernetes/rbac.yaml
serviceaccount/csi-attacher created
clusterrole.rbac.authorization.k8s.io/external-attacher-runner created
clusterrolebinding.rbac.authorization.k8s.io/csi-attacher-role created
role.rbac.authorization.k8s.io/external-attacher-cfg created
rolebinding.rbac.authorization.k8s.io/csi-attacher-role-cfg created
deploying nfs plugin components
deploy/kubernetes/csi-attacher-nfsplugin.yaml
using image: quay.io/k8scsi/csi-attacher:v1.0.1
using image: nfsplugin:latest
service/csi-attacher-nfsplugin created
statefulset.apps/csi-attacher-nfsplugin created
deploy/kubernetes/csi-nodeplugin-nfsplugin.yaml
using image: quay.io/k8scsi/csi-node-driver-registrar:v1.0.2
using image: nfsplugin:latest
daemonset.apps/csi-nodeplugin-nfsplugin created
deploy/kubernetes/csi-nodeplugin-rbac.yaml
serviceaccount/csi-nodeplugin created
clusterrole.rbac.authorization.k8s.io/csi-nodeplugin created
clusterrolebinding.rbac.authorization.k8s.io/csi-nodeplugin created
10:53:11 waiting for nfs deployment to complete, attempt #0
10:53:21 waiting for nfs deployment to complete, attempt #1
Other clusters may need a registry to pull from:
$ make push REGISTRY_NAME=my-registry:5000
...
$ NFSPLUGIN_REGISTRY=my-registry:5000 NFSPLUGIN_TAG=latest deploy/kubernetes/deploy.sh
Once you have the driver installed, tests can be run with:
$ make build-tests
mkdir -p bin
CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-X main.version=4fa924a251193c9eef937042112462433089d658 -extldflags "-static"' -o ./bin/tests ./cmd/tests
$ ./bin/tests --ginkgo.v --ginkgo.progress
Jun 7 10:57:39.667: INFO: The --provider flag is not set. Continuing as if --provider=skeleton had been used.
Running Suite: CSI Suite
========================
Random Seed: 1559897859 - Will randomize all specs
Will run 103 of 103 specs
...
Learn how to engage with the Kubernetes community on the community page.
You can reach the maintainers of this project at:
Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.