documentation additions
This commit is contained in:
		
							parent
							
								
									3196ec826e
								
							
						
					
					
						commit
						deb8971e53
					
				
							
								
								
									
										81
									
								
								README.md
								
								
								
								
							
							
						
						
									
										81
									
								
								README.md
								
								
								
								
							|  | @ -6,17 +6,17 @@ providing storage for various container orchestration systems (ie: Kubernetes). | ||||||
| The current focus is providing storage via iscsi/nfs from zfs-based storage | The current focus is providing storage via iscsi/nfs from zfs-based storage | ||||||
| systems, predominantly `FreeNAS / TrueNAS` and `ZoL` on `Ubuntu`. | systems, predominantly `FreeNAS / TrueNAS` and `ZoL` on `Ubuntu`. | ||||||
| 
 | 
 | ||||||
| The current drivers implement depth and breadth of the `csi` spec, so you have | The current drivers implement the depth and breadth of the `csi` spec, so you | ||||||
| access to resizing, snapshots, etc, etc. | have access to resizing, snapshots, clones, etc functionality. | ||||||
| 
 | 
 | ||||||
| `democratic-csi` is 2 things: | `democratic-csi` is 2 things: | ||||||
| 
 | 
 | ||||||
| - several implementations of `csi` drivers | - several implementations of `csi` drivers | ||||||
|   - freenas-nfs (manages zfs datasets to share over nfs) |   - `freenas-nfs` (manages zfs datasets to share over nfs) | ||||||
|   - freenas-iscsi (manages zfs zvols to share over iscsi) |   - `freenas-iscsi` (manages zfs zvols to share over iscsi) | ||||||
|   - zfs-generic-nfs (works with any ZoL installation...ie: Ubuntu) |   - `zfs-generic-nfs` (works with any ZoL installation...ie: Ubuntu) | ||||||
|   - zfs-generic-iscsi (works with any ZoL installation...ie: Ubuntu) |   - `zfs-generic-iscsi` (works with any ZoL installation...ie: Ubuntu) | ||||||
|   - zfs-local-ephemeral-inline (provisions node-local zfs datasets) |   - `zfs-local-ephemeral-inline` (provisions node-local zfs datasets) | ||||||
| - framework for developing `csi` drivers | - framework for developing `csi` drivers | ||||||
| 
 | 
 | ||||||
| If you have any interest in providing a `csi` driver, simply open an issue to | If you have any interest in providing a `csi` driver, simply open an issue to | ||||||
|  | @ -25,18 +25,54 @@ relatively easy to implement new drivers. | ||||||
| 
 | 
 | ||||||
| # Installation | # Installation | ||||||
| 
 | 
 | ||||||
| Predominantly 2 things are needed: | Predominantly 3 things are needed: | ||||||
| 
 | 
 | ||||||
| - node prep: https://netapp-trident.readthedocs.io/en/stable-v20.04/kubernetes/operations/tasks/worker.html | - node prep | ||||||
|  | - server prep | ||||||
| - deploy the driver into the cluster (`helm` chart provided with sample | - deploy the driver into the cluster (`helm` chart provided with sample | ||||||
|   `values.yaml`) |   `values.yaml`) | ||||||
| 
 | 
 | ||||||
|  | ## Node Prep | ||||||
|  | 
 | ||||||
| You should install/configure the requirements for both nfs and iscsi. | You should install/configure the requirements for both nfs and iscsi. | ||||||
| 
 | 
 | ||||||
|  | Follow the instructions here: https://netapp-trident.readthedocs.io/en/stable-v20.04/kubernetes/operations/tasks/worker.html | ||||||
|  | 
 | ||||||
| If you are running Kubernetes with rancher/rke please see the following: | If you are running Kubernetes with rancher/rke please see the following: | ||||||
| 
 | 
 | ||||||
| - https://github.com/rancher/rke/issues/1846 | - https://github.com/rancher/rke/issues/1846 | ||||||
| 
 | 
 | ||||||
|  | ### zfs-local-ephemeral-inline | ||||||
|  | 
 | ||||||
|  | This `driver` provisions node-local ephemeral storage on a per-pod basis. Each | ||||||
|  | node should have an identically named zfs pool created and avaialble to the | ||||||
|  | `driver`. Note, this is _NOT_ the same thing as using the docker zfs storage | ||||||
|  | driver (although the same pool could be used). No other requirements are | ||||||
|  | necessary. | ||||||
|  | 
 | ||||||
|  | - https://github.com/kubernetes/enhancements/blob/master/keps/sig-storage/20190122-csi-inline-volumes.md | ||||||
|  | - https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html | ||||||
|  | 
 | ||||||
|  | ## Server Prep | ||||||
|  | 
 | ||||||
|  | Server preparation depends slightly on which `driver` you are using. | ||||||
|  | 
 | ||||||
|  | ### FreeNAS (freenas-nfs, freenas-iscsi) | ||||||
|  | 
 | ||||||
|  | Ensure the following services are configurged and running: | ||||||
|  | 
 | ||||||
|  | - ssh (if you use a password for authentication make sure it is allowed) | ||||||
|  | - nfs | ||||||
|  | - iscsi | ||||||
|  | 
 | ||||||
|  | ### ZoL (zfs-generic-nfs, zfs-generic-iscsi) | ||||||
|  | 
 | ||||||
|  | Ensure ssh and zfs is installed on the server and that you have installed | ||||||
|  | `targetcli`. | ||||||
|  | 
 | ||||||
|  | - `yum install targetcli -y` | ||||||
|  | - `apt-get -y install targetcli-fb` | ||||||
|  | 
 | ||||||
| ## Helm Installation | ## Helm Installation | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
|  | @ -69,3 +105,30 @@ You may install multiple deployments of each/any driver. It requires the followi | ||||||
| - Make sure you have a unique `csiDriver.name` in the values file | - Make sure you have a unique `csiDriver.name` in the values file | ||||||
| - Use unqiue names for your storage classes (per cluster) | - Use unqiue names for your storage classes (per cluster) | ||||||
| - Use a unique parent dataset (ie: don't try to use the same parent across deployments or clusters) | - Use a unique parent dataset (ie: don't try to use the same parent across deployments or clusters) | ||||||
|  | 
 | ||||||
|  | # Snapshot Support | ||||||
|  | 
 | ||||||
|  | Install beta (v1.17+) CRDs (once per cluster): | ||||||
|  | 
 | ||||||
|  | - https://github.com/kubernetes-csi/external-snapshotter/tree/master/config/crd | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | kubectl apply -f snapshot.storage.k8s.io_volumesnapshotclasses.yaml | ||||||
|  | kubectl apply -f snapshot.storage.k8s.io_volumesnapshotcontents.yaml | ||||||
|  | kubectl apply -f snapshot.storage.k8s.io_volumesnapshots.yaml | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Install snapshot controller (once per cluster): | ||||||
|  | 
 | ||||||
|  | - https://github.com/kubernetes-csi/external-snapshotter/tree/master/deploy/kubernetes/snapshot-controller | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | # replace namespace references to your liking | ||||||
|  | kubectl apply -f rbac-snapshot-controller.yaml | ||||||
|  | kubectl apply -f setup-snapshot-controller.yaml | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Install `democratic-csi` as usual with `volumeSnapshotClasses` defined as appropriate. | ||||||
|  | 
 | ||||||
|  | https://kubernetes.io/docs/concepts/storage/volume-snapshots/ | ||||||
|  | https://github.com/kubernetes-csi/external-snapshotter#usage | ||||||
|  |  | ||||||
|  | @ -330,6 +330,7 @@ class ZfsLocalEphemeralInlineDriver extends CsiBaseDriver { | ||||||
|       }); |       }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     // TODO: catch out of space errors and return specifc grpc message?
 | ||||||
|     await zb.zfs.create(datasetName, { |     await zb.zfs.create(datasetName, { | ||||||
|       parents: true, |       parents: true, | ||||||
|       properties: volumeProperties, |       properties: volumeProperties, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue