documentation additions

This commit is contained in:
Travis Glenn Hansen 2020-07-09 06:31:23 -06:00
parent 3196ec826e
commit deb8971e53
2 changed files with 73 additions and 9 deletions

View File

@ -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
systems, predominantly `FreeNAS / TrueNAS` and `ZoL` on `Ubuntu`.
The current drivers implement depth and breadth of the `csi` spec, so you have
access to resizing, snapshots, etc, etc.
The current drivers implement the depth and breadth of the `csi` spec, so you
have access to resizing, snapshots, clones, etc functionality.
`democratic-csi` is 2 things:
- several implementations of `csi` drivers
- freenas-nfs (manages zfs datasets to share over nfs)
- freenas-iscsi (manages zfs zvols to share over iscsi)
- zfs-generic-nfs (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)
- `freenas-nfs` (manages zfs datasets to share over nfs)
- `freenas-iscsi` (manages zfs zvols to share over iscsi)
- `zfs-generic-nfs` (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)
- framework for developing `csi` drivers
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
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
`values.yaml`)
## Node Prep
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:
- 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
```
@ -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
- 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)
# 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

View File

@ -330,6 +330,7 @@ class ZfsLocalEphemeralInlineDriver extends CsiBaseDriver {
});
}
// TODO: catch out of space errors and return specifc grpc message?
await zb.zfs.create(datasetName, {
parents: true,
properties: volumeProperties,