This commit elaborates on how to deploy nfs-client as well as modify and
doing changes to the files before said deployment, updating the
README.md to make deployment easier.
(cherry picked from commit e2bee920ee)
107 lines
3.2 KiB
Markdown
107 lines
3.2 KiB
Markdown
# Kubernetes NFS-Client Provisioner
|
|
|
|
[](https://quay.io/repository/external_storage/nfs-client-provisioner)
|
|
|
|
|
|
`nfs-client` is an automatic provisioner that used your *already configured* NFS server, automatically creating Persistent Volumes.
|
|
|
|
- Persistent volumes are provisioned as ${namespace}-${pvcName}-${pvName}
|
|
- Persistent volumes which are recycled as archieved-${namespace}-${pvcName}-${pvName}
|
|
|
|
# How to deploy nfs-client to your cluster.
|
|
|
|
To note, you must *already* have an NFS Server.
|
|
|
|
1. Editing:
|
|
|
|
Note: To deploy to an ARM-based environment, use: `deploy/deployment-arm.yaml` instead, otherwise use `deploy/deployment.yaml`.
|
|
Modify `deploy/deployment.yaml` and change the values to your own NFS server:
|
|
|
|
|
|
```yaml
|
|
env:
|
|
- name: PROVISIONER_NAME
|
|
value: fuseim.pri/ifs
|
|
- name: NFS_SERVER
|
|
value: 10.10.10.60
|
|
- name: NFS_PATH
|
|
value: /ifs/kubernetes
|
|
volumes:
|
|
- name: nfs-client-root
|
|
nfs:
|
|
server: 10.10.10.60
|
|
path: /ifs/kubernetes
|
|
```
|
|
|
|
Modify `deploy/class.yaml` to match the same value indicated by `PROVISIONER_NAME`:
|
|
|
|
```yaml
|
|
apiVersion: storage.k8s.io/v1
|
|
kind: StorageClass
|
|
metadata:
|
|
name: managed-nfs-storage
|
|
provisioner: fuseim.pri/ifs # or choose another name, must match deployment's env PROVISIONER_NAME'
|
|
```
|
|
|
|
2. Authorization
|
|
|
|
If your cluster has RBAC enabled or you are running OpenShift you must authorize the provisioner. If you are in a namespace/project other than "default" either edit `deploy/auth/clusterrolebinding.yaml` or edit the `oadm policy` command accordingly.
|
|
|
|
Kubernetes:
|
|
|
|
```sh
|
|
$ kubectl create -f deploy/auth/serviceaccount.yaml -f deploy/auth/clusterrole.yaml -f deploy/auth/clusterrolebinding.yaml
|
|
serviceaccount "nfs-client-provisioner" created
|
|
clusterrole "nfs-client-provisioner-runner" created
|
|
clusterrolebinding "run-nfs-client-provisioner" created
|
|
```
|
|
|
|
OpenShift:
|
|
|
|
```sh
|
|
$ oc create -f deploy/auth/openshift-clusterrole.yaml -f deploy/auth/serviceaccount.yaml
|
|
serviceaccount "nfs-client-provisioner" created
|
|
clusterrole "nfs-client-provisioner-runner" created
|
|
$ oadm policy add-scc-to-user hostmount-anyuid system:serviceaccount:default:nfs-client-provisioner
|
|
$ oadm policy add-cluster-role-to-user nfs-client-provisioner-runner system:serviceaccount:default:nfs-client-provisioner
|
|
```
|
|
|
|
3. Finally, test your environment!
|
|
|
|
Now we'll test your NFS provisioner.
|
|
|
|
Deploy:
|
|
|
|
```sh
|
|
$ kubectl create -f deploy/test-claim.yaml -f deploy/test-pod.yaml
|
|
```
|
|
|
|
Now check your NFS Server for the file `SUCCESS`.
|
|
|
|
```sh
|
|
kubectl delete -f deploy/test-pod.yaml -f deploy/test-claim.yaml
|
|
```
|
|
|
|
Now check the folder renamed to `archived-???`.
|
|
|
|
4. Deploying your own PersistentVolumeClaim
|
|
|
|
To deploy your own PVC, make sure that you have the correct `storage-class` as indicated by your `deploy/class.yaml` file.
|
|
|
|
For example:
|
|
|
|
```yaml
|
|
kind: PersistentVolumeClaim
|
|
apiVersion: v1
|
|
metadata:
|
|
name: test-claim
|
|
annotations:
|
|
volume.beta.kubernetes.io/storage-class: "managed-nfs-storage"
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteMany
|
|
resources:
|
|
requests:
|
|
storage: 1Mi
|
|
```
|