Improves the README.md for nfs-client
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.
This commit is contained in:
		
							parent
							
								
									407fa3f435
								
							
						
					
					
						commit
						e2bee920ee
					
				
							
								
								
									
										124
									
								
								README.md
								
								
								
								
							
							
						
						
									
										124
									
								
								README.md
								
								
								
								
							|  | @ -1,50 +1,106 @@ | |||
| # kubernetes nfs-client-provisioner | ||||
| # Kubernetes NFS-Client Provisioner | ||||
| 
 | ||||
| [](https://quay.io/repository/external_storage/nfs-client-provisioner) | ||||
| 
 | ||||
| - pv provisioned as ${namespace}-${pvcName}-${pvName} | ||||
| - pv recycled as archieved-${namespace}-${pvcName}-${pvName} | ||||
| 
 | ||||
| # deploy | ||||
| - modify and deploy `deploy/deployment.yaml` | ||||
| - modify and deploy `deploy/class.yaml` | ||||
| `nfs-client` is an automatic provisioner that used your *already configured* NFS server, automatically creating Persistent Volumes. | ||||
| 
 | ||||
| ## ARM based | ||||
| To deploy on ARM based (Raspberry PI) use `deploy/deployment-arm.yaml` instead of `deploy/deployment.yaml` | ||||
| - Persistent volumes are provisioned as ${namespace}-${pvcName}-${pvName} | ||||
| - Persistent volumes which are recycled as archieved-${namespace}-${pvcName}-${pvName} | ||||
| 
 | ||||
| # authorization | ||||
| # How to deploy nfs-client to your cluster. | ||||
| 
 | ||||
| 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. | ||||
| To note, you must *already* have an NFS Server. | ||||
| 
 | ||||
| ## RBAC | ||||
| ```console | ||||
| $ kubectl create -f deploy/auth/serviceaccount.yaml | ||||
| serviceaccount "nfs-client-provisioner" created | ||||
| $ kubectl create -f deploy/auth/clusterrole.yaml | ||||
| clusterrole "nfs-client-provisioner-runner" created | ||||
| $ kubectl create -f deploy/auth/clusterrolebinding.yaml | ||||
| clusterrolebinding "run-nfs-client-provisioner" created | ||||
| $ kubectl patch deployment nfs-client-provisioner -p '{"spec":{"template":{"spec":{"serviceAccount":"nfs-client-provisioner"}}}}' | ||||
| 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 | ||||
| ``` | ||||
| 
 | ||||
| ## OpenShift | ||||
| ```console | ||||
| $ oc create -f deploy/auth/serviceaccount.yaml | ||||
| 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 | ||||
| $ oc create -f deploy/auth/openshift-clusterrole.yaml | ||||
| 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 | ||||
| $ oc patch deployment nfs-client-provisioner -p '{"spec":{"template":{"spec":{"serviceAccount":"nfs-client-provisioner"}}}}' | ||||
| ``` | ||||
| 
 | ||||
| # test | ||||
| - `kubectl create -f deploy/test-claim.yaml` | ||||
| - `kubectl create -f deploy/test-pod.yaml` | ||||
| - check the folder and file "SUCCESS" created | ||||
| - `kubectl delete -f deploy/test-pod.yaml` | ||||
| - `kubectl delete -f deploy/test-claim.yaml` | ||||
| - check the folder renamed to `archived-???` | ||||
| 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 | ||||
| ``` | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue