|
| 1 | +# CSI WekaFS Driver |
| 2 | +Helm chart for Deployment of WekaIO Container Storage Interface (CSI) plugin for WekaFS - the world fastest filesystem |
| 3 | + |
| 4 | +[](https://opensource.org/licenses/Apache-2.0) |
| 5 | +[](https://artifacthub.io/packages/search?repo=csi-wekafs) |
| 6 | +   |
| 7 | + |
| 8 | +## Homepage |
| 9 | +https://github.com/weka/csi-wekafs |
| 10 | + |
| 11 | +## Maintainers |
| 12 | + |
| 13 | +| Name | Email | Url | |
| 14 | +| ---- | ------ | --- | |
| 15 | +| WekaIO, Inc. | <[email protected]> | <https://weka.io> | |
| 16 | + |
| 17 | +## Pre-requisite |
| 18 | +- Kubernetes cluster of version 1.18 and up, 1.19 and up recommended |
| 19 | +- Helm v3 must be installed and configured properly |
| 20 | +- Weka system pre-configured and Weka client installed and registered in cluster for each Kubernetes node |
| 21 | + |
| 22 | +## Deployment |
| 23 | +```shell |
| 24 | +helm repo add csi-wekafs https://weka.github.io/csi-wekafs |
| 25 | +helm install csi-wekafsplugin csi-wekafs/csi-wekafsplugin --namespace csi-wekafsplugin --create-namespace [--set selinuxSupport=<off | mixed | enforced>] |
| 26 | +``` |
| 27 | + |
| 28 | +> **NOTE:** Since version 0.8.0, Weka CSI plugin supports installation on SELinux-enabled Kubernetes clusters |
| 29 | +> Refer to [SELinux Support & Installation Notes](https://github.com/weka/csi-wekafs/blob/master/selinux/README.md) for additional information |
| 30 | +
|
| 31 | +> **NOTE:** Since version 0.7.0, Weka CSI plugin transitions to API-based deployment model which requires API |
| 32 | +> connectivity and credentials parameters to be set in Storage Class. |
| 33 | +> |
| 34 | +> Kubernetes does not allow storage class modification for existing volumes, hence the |
| 35 | +> recommended upgrade process is re-deploying new persistent volumes based on new storage class format. |
| 36 | +> |
| 37 | +> However, for sake of more convenient migration, a `legacySecretName` parameter can be set that will |
| 38 | +> bind existing legacy volumes to a Weka cluster API and allow volume expansion. |
| 39 | +> |
| 40 | +> For further information, refer [Official Weka CSI Plugin documentation](https://docs.weka.io/appendices/weka-csi-plugin) |
| 41 | +
|
| 42 | +## Usage |
| 43 | +- [Deploy an Example application](https://github.com/weka/csi-wekafs/blob/master/docs/usage.md) |
| 44 | +- [SELinux Support & Installation Notes](https://github.com/weka/csi-wekafs/blob/master/selinux/README.md) |
| 45 | + |
| 46 | +## Additional Documentation |
| 47 | +- [Official Weka CSI Plugin documentation](https://docs.weka.io/appendices/weka-csi-plugin) |
| 48 | + |
| 49 | +## Values |
| 50 | + |
| 51 | +| Key | Type | Default | Description | |
| 52 | +|-----|------|---------|-------------| |
| 53 | +| dynamicProvisionPath | string | `"csi-volumes"` | Directory in root of file system where dynamic volumes are provisioned | |
| 54 | +| csiDriverName | string | `"csi.weka.io"` | Name of the driver (and provisioner) | |
| 55 | +| csiDriverVersion | string | `"2.5.1"` | CSI driver version | |
| 56 | +| images.livenessprobesidecar | string | `"registry.k8s.io/sig-storage/livenessprobe:v2.14.0"` | CSI liveness probe sidecar image URL | |
| 57 | +| images.attachersidecar | string | `"registry.k8s.io/sig-storage/csi-attacher:v4.7.0"` | CSI attacher sidecar image URL | |
| 58 | +| images.provisionersidecar | string | `"registry.k8s.io/sig-storage/csi-provisioner:v5.1.0"` | CSI provisioner sidecar image URL | |
| 59 | +| images.registrarsidecar | string | `"registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.12.0"` | CSI registrar sidercar | |
| 60 | +| images.resizersidecar | string | `"registry.k8s.io/sig-storage/csi-resizer:v1.12.0"` | CSI resizer sidecar image URL | |
| 61 | +| images.snapshottersidecar | string | `"registry.k8s.io/sig-storage/csi-snapshotter:v8.1.0"` | CSI snapshotter sidecar image URL | |
| 62 | +| images.nodeinfo | string | `"quay.io/weka.io/csi-wekafs"` | CSI nodeinfo sidecar image URL, used for reading node metadata | |
| 63 | +| images.csidriver | string | `"quay.io/weka.io/csi-wekafs"` | CSI driver main image URL | |
| 64 | +| images.csidriverTag | string | `"2.5.1"` | CSI driver tag | |
| 65 | +| imagePullSecret | string | `""` | image pull secret required for image download. Must have permissions to access all images above. Should be used in case of private registry that requires authentication | |
| 66 | +| globalPluginTolerations | list | `[{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Exists"}]` | Tolerations for all CSI driver components | |
| 67 | +| controllerPluginTolerations | list | `[{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Exists"}]` | Tolerations for CSI controller component only (by default same as global) | |
| 68 | +| nodePluginTolerations | list | `[{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Exists"}]` | Tolerations for CSI node component only (by default same as global) | |
| 69 | +| nodeSelector | object | `{}` | Optional nodeSelector for CSI plugin deployment on certain Kubernetes nodes only This nodeselector will be applied to all CSI plugin components | |
| 70 | +| affinity | object | `{}` | Optional affinity for CSI plugin deployment This affinity will be applied to all CSI plugin components | |
| 71 | +| machineConfigLabels | list | `["worker","master"]` | Optional setting for OCP platform only, which machineconfig pools to apply the Weka SELinux policy on NOTE: by default, the policy will be installed both on workers and control plane nodes | |
| 72 | +| controller.replicas | int | `2` | Controller number of replicas | |
| 73 | +| controller.maxConcurrentRequests | int | `5` | Maximum concurrent requests from sidecars (global) | |
| 74 | +| controller.concurrency | object | `{"createSnapshot":5,"createVolume":5,"deleteSnapshot":5,"deleteVolume":5,"expandVolume":5}` | maximum concurrent operations per operation type | |
| 75 | +| controller.grpcRequestTimeoutSeconds | int | `30` | Return GRPC Unavailable if request waits in queue for that long time (seconds) | |
| 76 | +| controller.configureProvisionerLeaderElection | bool | `true` | Configure provisioner sidecar for leader election | |
| 77 | +| controller.configureResizerLeaderElection | bool | `true` | Configure resizer sidecar for leader election | |
| 78 | +| controller.configureSnapshotterLeaderElection | bool | `true` | Configure snapshotter sidecar for leader election | |
| 79 | +| controller.configureAttacherLeaderElection | bool | `true` | Configure attacher sidecar for leader election | |
| 80 | +| controller.nodeSelector | object | `{}` | optional nodeSelector for controller components only | |
| 81 | +| controller.affinity | object | `{}` | optional affinity for controller components only | |
| 82 | +| node.maxConcurrentRequests | int | `5` | Maximum concurrent requests from sidecars (global) | |
| 83 | +| node.concurrency | object | `{"nodePublishVolume":5,"nodeUnpublishVolume":5}` | maximum concurrent operations per operation type (to avoid API starvation) | |
| 84 | +| node.grpcRequestTimeoutSeconds | int | `30` | Return GRPC Unavailable if request waits in queue for that long time (seconds) | |
| 85 | +| node.nodeSelector | object | `{}` | optional nodeSelector for node components only | |
| 86 | +| node.affinity | object | `{}` | optional affinity for node components only | |
| 87 | +| logLevel | int | `5` | Log level of CSI plugin | |
| 88 | +| useJsonLogging | bool | `false` | Use JSON structured logging instead of human-readable logging format (for exporting logs to structured log parser) | |
| 89 | +| legacyVolumeSecretName | string | `""` | for migration of pre-CSI 0.7.0 volumes only, default API secret. Must reside in same namespace as the plugin | |
| 90 | +| priorityClassName | string | `""` | Optional CSI Plugin priorityClassName | |
| 91 | +| selinuxSupport | string | `"off"` | Support SELinux labeling for Persistent Volumes, may be either `off`, `mixed`, `enforced` (default off) In `enforced` mode, CSI node components will only start on nodes having a label `selinuxNodeLabel` below In `mixed` mode, separate CSI node components will be installed on SELinux-enabled and regular hosts In `off` mode, only non-SELinux-enabled node components will be run on hosts without label. WARNING: if SELinux is not enabled, volume provisioning and publishing might fail! NOTE: SELinux support is enabled automatically on clusters recognized as RedHat OpenShift Container Platform | |
| 92 | +| selinuxNodeLabel | string | `"csi.weka.io/selinux_enabled"` | This label must be set to `"true"` on SELinux-enabled Kubernetes nodes, e.g., to run the node server in secure mode on SELinux-enabled node, the node must have label `csi.weka.io/selinux_enabled="true"` | |
| 93 | +| kubeletPath | string | `"/var/lib/kubelet"` | kubelet path, in cases Kubernetes is installed not in default folder | |
| 94 | +| metrics.enabled | bool | `true` | Enable Prometheus Metrics | |
| 95 | +| metrics.controllerPort | int | `9090` | Metrics port for Controller Server | |
| 96 | +| metrics.provisionerPort | int | `9091` | Provisioner metrics port | |
| 97 | +| metrics.resizerPort | int | `9092` | Resizer metrics port | |
| 98 | +| metrics.snapshotterPort | int | `9093` | Snapshotter metrics port | |
| 99 | +| metrics.nodePort | int | `9094` | Metrics port for Node Serer | |
| 100 | +| metrics.attacherPort | int | `9095` | Attacher metrics port | |
| 101 | +| hostNetwork | bool | `false` | Set to true to use host networking. Will be always set to true when using NFS mount protocol | |
| 102 | +| pluginConfig.fsGroupPolicy | string | `"File"` | WARNING: Changing this value might require uninstall and re-install of the plugin | |
| 103 | +| pluginConfig.allowInsecureHttps | bool | `false` | Allow insecure HTTPS (skip TLS certificate verification) | |
| 104 | +| pluginConfig.objectNaming.volumePrefix | string | `"csivol-"` | Prefix that will be added to names of Weka cluster filesystems / snapshots assocciated with CSI volume, must not exceed 7 symbols. | |
| 105 | +| pluginConfig.objectNaming.snapshotPrefix | string | `"csisnp-"` | Prefix that will be added to names of Weka cluster snapshots assocciated with CSI snapshot, must not exceed 7 symbols. | |
| 106 | +| pluginConfig.objectNaming.seedSnapshotPrefix | string | `"csisnp-seed-"` | Prefix that will be added to automatically created "seed" snapshot of empty filesytem, must not exceed 12 symbols. | |
| 107 | +| pluginConfig.allowedOperations.autoCreateFilesystems | bool | `true` | Allow automatic provisioning of CSI volumes based on distinct Weka filesystem | |
| 108 | +| pluginConfig.allowedOperations.autoExpandFilesystems | bool | `true` | Allow automatic expansion of filesystem on which Weka snapshot-backed CSI volumes, e.g. in case a required volume capacity exceeds the size of filesystem. Note: the filesystem is not expanded automatically when a new directory-backed volume is provisioned | |
| 109 | +| pluginConfig.allowedOperations.snapshotDirectoryVolumes | bool | `false` | Create snapshots of legacy (dir/v1) volumes. By default disabled. Note: when enabled, for every legacy volume snapshot, a full filesystem snapshot will be created (wasteful) | |
| 110 | +| pluginConfig.allowedOperations.snapshotVolumesWithoutQuotaEnforcement | bool | `false` | Allow creation of snapshot-backed volumes even on unsupported Weka cluster versions, off by default Note: On versions of Weka < v4.2 snapshot-backed volume capacity cannot be enforced | |
| 111 | +| pluginConfig.mutuallyExclusiveMountOptions[0] | string | `"readcache,writecache,coherent,forcedirect"` | | |
| 112 | +| pluginConfig.mutuallyExclusiveMountOptions[1] | string | `"sync,async"` | | |
| 113 | +| pluginConfig.mutuallyExclusiveMountOptions[2] | string | `"ro,rw"` | | |
| 114 | +| pluginConfig.mountProtocol.useNfs | bool | `false` | Use NFS transport for mounting Weka filesystems, off by default | |
| 115 | +| pluginConfig.mountProtocol.allowNfsFailback | bool | `false` | Allow Failback to NFS transport if Weka client fails to mount filesystem using native protocol | |
| 116 | +| pluginConfig.mountProtocol.interfaceGroupName | string | `""` | Specify name of NFS interface group to use for mounting Weka filesystems. If not set, first NFS interface group will be used | |
| 117 | +| pluginConfig.mountProtocol.clientGroupName | string | `""` | Specify existing client group name for NFS configuration. If not set, "WekaCSIPluginClients" group will be created | |
| 118 | +| pluginConfig.mountProtocol.nfsProtocolVersion | string | `"4.1"` | Specify NFS protocol version to use for mounting Weka filesystems. Default is "4.1", consult Weka documentation for supported versions | |
| 119 | + |
| 120 | +---------------------------------------------- |
| 121 | +Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2) |
0 commit comments