Skip to content

Commit 951bc6a

Browse files
wcrumvishwanaths
andauthored
add csi-wekafsplugin 2.5.1 (#104)
Co-authored-by: Vishwanath S <[email protected]>
1 parent 853368e commit 951bc6a

29 files changed

+2175
-0
lines changed
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# CSI WekaFS Driver
2+
Helm chart for Deployment of WekaIO Container Storage Interface (CSI) plugin for WekaFS - the world fastest filesystem
3+
4+
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
5+
[![Artifact HUB](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/csi-wekafs)](https://artifacthub.io/packages/search?repo=csi-wekafs)
6+
![Version: 2.5.1](https://img.shields.io/badge/Version-2.5.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v2.5.1](https://img.shields.io/badge/AppVersion-v2.5.1-informational?style=flat-square)
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)
Binary file not shown.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Patterns to ignore when building packages.
2+
# This supports shell glob matching, relative path matching, and
3+
# negation (prefixed with !). Only one pattern per line.
4+
.DS_Store
5+
# Common VCS dirs
6+
.git/
7+
.gitignore
8+
.bzr/
9+
.bzrignore
10+
.hg/
11+
.hgignore
12+
.svn/
13+
# Common backup files
14+
*.swp
15+
*.bak
16+
*.tmp
17+
*~
18+
# Various IDEs
19+
.project
20+
.idea/
21+
*.tmproj
22+
.vscode/
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<!-- Release notes generated using configuration in .github/release.yaml at main -->
2+
3+
## What's Changed
4+
### Improvements
5+
* feat(CSI-295): add affinity for controller and separated nodeSelector for controller and node by @sergeyberezansky in https://github.com/weka/csi-wekafs/pull/377
6+
* feat(CSI-302): convert controller StatefulSet to Deployment by @sergeyberezansky in https://github.com/weka/csi-wekafs/pull/381
7+
* feat(CSI-303): add livenessProbe to attacher sidecar by @sergeyberezansky in https://github.com/weka/csi-wekafs/pull/382
8+
### Bug Fixes
9+
* fix(CSI-294): caCertificate, NfsTargetIps, localContainerName are not hashed in API client by @sergeyberezansky in https://github.com/weka/csi-wekafs/pull/371
10+
* fix(CSI-292): parse NFS version 3.0 to correctly pass it to mountoption by @sergeyberezansky in https://github.com/weka/csi-wekafs/pull/372
11+
* fix(CSI-297): nfsTargetIps override is handled incorreclty when empty by @sergeyberezansky in https://github.com/weka/csi-wekafs/pull/374
12+
* fix(CSI-296): node registration fails after switch transport from NFS to Wekafs due to label conflict by @sergeyberezansky in https://github.com/weka/csi-wekafs/pull/375
13+
* feat(CSI-301): bump locar to version 0.4.2 by @sergeyberezansky in https://github.com/weka/csi-wekafs/pull/380
14+
### Miscellaneous
15+
* docs: fix the example of static provisioning of directory-backed volume by @sergeyberezansky in https://github.com/weka/csi-wekafs/pull/370
16+
* chore(deps): update actions/checkout digest to 11bd719 by @renovate in https://github.com/weka/csi-wekafs/pull/352
17+
* fix(deps): update kubernetes packages to v0.31.2 by @renovate in https://github.com/weka/csi-wekafs/pull/376
18+
* chore(deps): update registry.k8s.io/kubernetes/kubectl to v1.31.2 by @renovate in https://github.com/weka/csi-wekafs/pull/373
19+
* fix(deps): update golang.org/x/exp digest to f66d83c by @renovate in https://github.com/weka/csi-wekafs/pull/349
20+
* fix(deps): update module github.com/prometheus/client_golang to v1.20.5 by @renovate in https://github.com/weka/csi-wekafs/pull/369
21+
22+
### Known limitations
23+
* Due to current limitation of WEKA software, publishing snapshot-backed volumes via NFS transport is not supported and could result in `stale file handle` error when trying to access the volume contents from within the pod.
24+
This limitation applies to both new snapshot-backed volumes and to any volumes that were cloned from existing PersistentVolume or Snapshot.
25+
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
annotations:
2+
artifacthub.io/category: storage
3+
artifacthub.io/containsSecurityUpdates: "true"
4+
artifacthub.io/license: Apache-2.0
5+
artifacthub.io/prerelease: "false"
6+
artifacthub.io/signKey: |
7+
fingerprint: BA9F2D31BE9193E01FA17450BCE0A5CF67AC0C59
8+
url: https://weka.github.io/csi-wekafs/csi-public.gpg
9+
apiVersion: v2
10+
appVersion: v2.5.1
11+
description: Helm chart for Deployment of WekaIO Container Storage Interface (CSI)
12+
plugin for WekaFS - the world fastest filesystem
13+
home: https://github.com/weka/csi-wekafs
14+
icon: https://weka.github.io/csi-wekafs/logo.png
15+
keywords:
16+
- storage
17+
- filesystem
18+
- HPC
19+
maintainers:
20+
21+
name: WekaIO, Inc.
22+
url: https://weka.io
23+
name: csi-wekafsplugin
24+
sources:
25+
- https://github.com/weka/csi-wekafs/tree/v2.5.1
26+
type: application
27+
version: 2.5.1
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Overview
2+
Helm Chart for Weka wekafs CSI driver deployment
3+
4+
# Usage
5+
6+
## Install driver
7+
To install the driver, issue the following command
8+
```
9+
helm install csi-wekafsplugin --namespace csi-wekafsplugin --create-namespace .
10+
```
11+
> **NOTE:** Optionally modify values.yaml or set overrides via Helm command line
12+
13+
## Uninstall driver
14+
To uninstall a driver, issue the following command
15+
```
16+
helm uninstall csi-wekafsplugin --namespace csi-wekafsplugin -n=csi-wekafsplugin
17+
```
18+
19+
# Upgrade
20+
## Upgrading from versions v0.6.0 and below
21+
> WARNING: Removal of CSI plugin from versions v0.6.0 and below requires checking out an older version of Weka CSI Plugin.
22+
To upgrade from versions before v0.6.0, the previous version must be uninstalled using a cleanup script (deprecated!)
23+
1. Checkout the sources of previous version of the Weka CSI Plugin by using the following command:
24+
```shell
25+
git clone https://github.com/weka/csi-wekafs.git csi-wekafs
26+
git checkout v0.8.4
27+
```
28+
2. Run the cleanup script
29+
```
30+
cd csi-wekafs
31+
./deploy/kubernetes-latest/cleanup.sh
32+
```
33+
Then proceed to [Helm installation](#install-driver)
34+
## Upgrading from versions below v2.0.0
35+
In version v2.0.0, fsGroup support was added to CSIDriver. Since CSIDriver component is considered immutable by Kubernetes,
36+
upgrading the driver requires a complete removal and reinstallation of the CSI driver.
37+
38+
> **NOTE:** Existing Weka CSI volumes and workloads using those volumes will not be affected by Weka CSI Plugin uninstallation.

0 commit comments

Comments
 (0)