Helm chart for Deployment of WekaIO Container Storage Interface (CSI) plugin for WekaFS - the world fastest filesystem
https://github.com/weka/csi-wekafs
Name | Url | |
---|---|---|
WekaIO, Inc. | [email protected] | https://weka.io |
- Kubernetes cluster of version 1.20 or later is recommended. Minimum version is 1.17
- Access to terminal with
kubectl
installed - Weka system pre-configured and Weka client installed and registered in cluster for each Kubernetes node
- Starting with version 2.6.0 of WEKA CSI Plugin, both AMD64 and ARM64 platforms are supported.
NOTE: For more information on WEKA client software support state of ARM64, please refer to the WEKA documentation revision history.
On platforms not currently supported by WEKA software, NFS failback mode can be used. For additional information on NFS transport configuration, please refer to the NFS documentation
- Helm public repo (recommended)
- Helm-based local deployment
- Deploy an Example application
- SELinux Support & Installation Notes
- Using Weka CSI Plugin with NFS transport
If you want to build the driver yourself, you can do so with the following command from the root directory:
make build
Key | Type | Default | Description |
---|---|---|---|
dynamicProvisionPath | string | "csi-volumes" |
Directory in root of file system where dynamic volumes are provisioned |
csiDriverName | string | "csi.weka.io" |
Name of the driver (and provisioner) |
csiDriverVersion | string | "2.5.2-SNAPSHOT.36.3becaf7" |
CSI driver version |
images.livenessprobesidecar | string | "registry.k8s.io/sig-storage/livenessprobe:v2.14.0" |
CSI liveness probe sidecar image URL |
images.attachersidecar | string | "registry.k8s.io/sig-storage/csi-attacher:v4.7.0" |
CSI attacher sidecar image URL |
images.provisionersidecar | string | "registry.k8s.io/sig-storage/csi-provisioner:v5.1.0" |
CSI provisioner sidecar image URL |
images.registrarsidecar | string | "registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.12.0" |
CSI registrar sidercar |
images.resizersidecar | string | "registry.k8s.io/sig-storage/csi-resizer:v1.12.0" |
CSI resizer sidecar image URL |
images.snapshottersidecar | string | "registry.k8s.io/sig-storage/csi-snapshotter:v8.1.0" |
CSI snapshotter sidecar image URL |
images.nodeinfo | string | "quay.io/weka.io/csi-wekafs" |
CSI nodeinfo sidecar image URL, used for reading node metadata |
images.csidriver | string | "quay.io/weka.io/csi-wekafs" |
CSI driver main image URL |
images.csidriverTag | string | "2.5.2-SNAPSHOT.36.3becaf7" |
CSI driver tag |
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 |
globalPluginTolerations | list | [{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Exists"}] |
Tolerations for all CSI driver components |
controllerPluginTolerations | list | [{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Exists"}] |
Tolerations for CSI controller component only (by default same as global) |
nodePluginTolerations | list | [{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Exists"}] |
Tolerations for CSI node component only (by default same as global) |
nodeSelector | object | {} |
Optional nodeSelector for CSI plugin deployment on certain Kubernetes nodes only This nodeselector will be applied to all CSI plugin components |
affinity | object | {} |
Optional affinity for CSI plugin deployment This affinity will be applied to all CSI plugin components |
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 |
controller.replicas | int | 2 |
Controller number of replicas |
controller.maxConcurrentRequests | int | 5 |
Maximum concurrent requests from sidecars (global) |
controller.concurrency | object | {"createSnapshot":5,"createVolume":5,"deleteSnapshot":5,"deleteVolume":5,"expandVolume":5} |
maximum concurrent operations per operation type |
controller.grpcRequestTimeoutSeconds | int | 30 |
Return GRPC Unavailable if request waits in queue for that long time (seconds) |
controller.configureProvisionerLeaderElection | bool | true |
Configure provisioner sidecar for leader election |
controller.configureResizerLeaderElection | bool | true |
Configure resizer sidecar for leader election |
controller.configureSnapshotterLeaderElection | bool | true |
Configure snapshotter sidecar for leader election |
controller.configureAttacherLeaderElection | bool | true |
Configure attacher sidecar for leader election |
controller.nodeSelector | object | {} |
optional nodeSelector for controller components only |
controller.affinity | object | {} |
optional affinity for controller components only |
node.maxConcurrentRequests | int | 5 |
Maximum concurrent requests from sidecars (global) |
node.concurrency | object | {"nodePublishVolume":5,"nodeUnpublishVolume":5} |
maximum concurrent operations per operation type (to avoid API starvation) |
node.grpcRequestTimeoutSeconds | int | 30 |
Return GRPC Unavailable if request waits in queue for that long time (seconds) |
node.nodeSelector | object | {} |
optional nodeSelector for node components only |
node.affinity | object | {} |
optional affinity for node components only |
logLevel | int | 5 |
Log level of CSI plugin |
useJsonLogging | bool | false |
Use JSON structured logging instead of human-readable logging format (for exporting logs to structured log parser) |
legacyVolumeSecretName | string | "" |
for migration of pre-CSI 0.7.0 volumes only, default API secret. Must reside in same namespace as the plugin |
priorityClassName | string | "" |
Optional CSI Plugin priorityClassName |
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 |
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" |
kubeletPath | string | "/var/lib/kubelet" |
kubelet path, in cases Kubernetes is installed not in default folder |
metrics.enabled | bool | true |
Enable Prometheus Metrics |
metrics.controllerPort | int | 9090 |
Metrics port for Controller Server |
metrics.provisionerPort | int | 9091 |
Provisioner metrics port |
metrics.resizerPort | int | 9092 |
Resizer metrics port |
metrics.snapshotterPort | int | 9093 |
Snapshotter metrics port |
metrics.nodePort | int | 9094 |
Metrics port for Node Serer |
metrics.attacherPort | int | 9095 |
Attacher metrics port |
hostNetwork | bool | false |
Set to true to use host networking. Will be always set to true when using NFS mount protocol |
pluginConfig.fsGroupPolicy | string | "File" |
WARNING: Changing this value might require uninstall and re-install of the plugin |
pluginConfig.allowInsecureHttps | bool | false |
Allow insecure HTTPS (skip TLS certificate verification) |
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. |
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. |
pluginConfig.objectNaming.seedSnapshotPrefix | string | "csisnp-seed-" |
Prefix that will be added to automatically created "seed" snapshot of empty filesytem, must not exceed 12 symbols. |
pluginConfig.allowedOperations.autoCreateFilesystems | bool | true |
Allow automatic provisioning of CSI volumes based on distinct Weka filesystem |
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 |
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) |
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 |
pluginConfig.mutuallyExclusiveMountOptions[0] | string | "readcache,writecache,coherent,forcedirect" |
|
pluginConfig.mutuallyExclusiveMountOptions[1] | string | "sync,async" |
|
pluginConfig.mutuallyExclusiveMountOptions[2] | string | "ro,rw" |
|
pluginConfig.mountProtocol.useNfs | bool | false |
Use NFS transport for mounting Weka filesystems, off by default |
pluginConfig.mountProtocol.allowNfsFailback | bool | false |
Allow Failback to NFS transport if Weka client fails to mount filesystem using native protocol |
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 |
pluginConfig.mountProtocol.clientGroupName | string | "" |
Specify existing client group name for NFS configuration. If not set, "WekaCSIPluginClients" group will be created |
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 |
Autogenerated from chart metadata using helm-docs v1.14.2