Skip to content

Commit a566175

Browse files
committed
feat: support multiple storage classes creation using helm chart
1 parent a1c4386 commit a566175

File tree

4 files changed

+126
-0
lines changed

4 files changed

+126
-0
lines changed

charts/README.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ The following table lists the configurable parameters of the latest SMB CSI Driv
127127
| `windows.resources.smb.requests.cpu` | smb-csi-driver cpu requests limits | `10m` |
128128
| `windows.resources.smb.requests.memory` | smb-csi-driver memory requests limits | `20Mi` |
129129
| `windows.kubelet` | configure kubelet directory path on Windows agent node | `'C:\var\lib\kubelet'` |
130+
| `storageClasses` | create multiple storage classes | `[]` | |
130131

131132
### Csi Proxy support on windows
132133
> if you have set `windows.useHostProcessContainers` as `true`, csi-proxy is not needed by CSI driver.
@@ -147,6 +148,59 @@ The following table lists the configurable parameters of the latest CSI-proxy Dr
147148
| `image.csiproxy.tag` | csiproxy docker image tag | `v1.1.2` |
148149
| `image.csiproxy.pullPolicy` | csiproxy image pull policy | `IfNotPresent` |
149150

151+
## Create multiple storage classes
152+
153+
- create multiple storage classes with different configurations using the `storageClasses` parameter:
154+
155+
```yaml
156+
storageClasses:
157+
- name: smb-csi
158+
annotations:
159+
storageclass.kubernetes.io/is-default-class: "true"
160+
parameters:
161+
source: "//smb-server.default.svc.cluster.local/share"
162+
# if csi.storage.k8s.io/provisioner-secret is provided, will create a sub directory
163+
# with PV name under source
164+
csi.storage.k8s.io/provisioner-secret-name: smbcreds
165+
csi.storage.k8s.io/provisioner-secret-namespace: default
166+
csi.storage.k8s.io/node-stage-secret-name: smbcreds
167+
csi.storage.k8s.io/node-stage-secret-namespace: default
168+
reclaimPolicy: Delete
169+
volumeBindingMode: Immediate
170+
allowVolumeExpansion: true
171+
mountOptions:
172+
- dir_mode=0777
173+
- file_mode=0777
174+
- noperm
175+
- mfsymlinks
176+
- cache=strict
177+
- noserverino # required to prevent data corruption
178+
- name: smb-csi-retain
179+
parameters:
180+
source: "//smb-server.default.svc.cluster.local/share"
181+
# if csi.storage.k8s.io/provisioner-secret is provided, will create a sub directory
182+
# with PV name under source
183+
csi.storage.k8s.io/provisioner-secret-name: smbcreds
184+
csi.storage.k8s.io/provisioner-secret-namespace: default
185+
csi.storage.k8s.io/node-stage-secret-name: smbcreds
186+
csi.storage.k8s.io/node-stage-secret-namespace: default
187+
reclaimPolicy: Retain
188+
volumeBindingMode: Immediate
189+
allowVolumeExpansion: true
190+
mountOptions:
191+
- dir_mode=0777
192+
- file_mode=0777
193+
- noperm
194+
- mfsymlinks
195+
- cache=strict
196+
- noserverino # required to prevent data corruption
197+
```
198+
199+
- install with custom values:
200+
```console
201+
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system -f custom-values.yaml
202+
```
203+
150204
## troubleshooting
151205

152206
- Add `--wait -v=5 --debug` in `helm install` command to get detailed error
532 Bytes
Binary file not shown.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{{- if .Values.storageClasses }}
2+
{{- range .Values.storageClasses }}
3+
---
4+
apiVersion: storage.k8s.io/v1
5+
kind: StorageClass
6+
metadata:
7+
name: {{ .name }}
8+
{{ include "smb.labels" $ | indent 2 }}
9+
{{- with .annotations }}
10+
annotations:
11+
{{- toYaml . | nindent 4 }}
12+
{{- end }}
13+
provisioner: {{ $.Values.driver.name }}
14+
{{- with .parameters }}
15+
parameters:
16+
{{ toYaml . | indent 2 }}
17+
{{- end }}
18+
reclaimPolicy: {{ .reclaimPolicy | default "Delete" }}
19+
volumeBindingMode: {{ .volumeBindingMode | default "Immediate" }}
20+
{{- if hasKey . "allowVolumeExpansion" }}
21+
allowVolumeExpansion: {{ .allowVolumeExpansion }}
22+
{{- else }}
23+
allowVolumeExpansion: true
24+
{{- end }}
25+
{{- with .mountOptions }}
26+
mountOptions:
27+
{{ toYaml . | nindent 2 }}
28+
{{- end }}
29+
{{- end }}
30+
{{- end }}

charts/latest/csi-driver-smb/values.yaml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,3 +180,45 @@ priorityClassName: system-cluster-critical
180180
## by example :
181181
## securityContext: { runAsUser: 1001 }
182182
securityContext: { seccompProfile: {type: RuntimeDefault} }
183+
## StorageClass resources for creating multiple storage classes:
184+
# storageClasses:
185+
# - name: smb-csi
186+
# annotations:
187+
# storageclass.kubernetes.io/is-default-class: "true"
188+
# parameters:
189+
# source: "//smb-server.default.svc.cluster.local/share"
190+
# # if csi.storage.k8s.io/provisioner-secret is provided, will create a sub directory
191+
# # with PV name under source
192+
# csi.storage.k8s.io/provisioner-secret-name: smbcreds
193+
# csi.storage.k8s.io/provisioner-secret-namespace: default
194+
# csi.storage.k8s.io/node-stage-secret-name: smbcreds
195+
# csi.storage.k8s.io/node-stage-secret-namespace: default
196+
# reclaimPolicy: Delete
197+
# volumeBindingMode: Immediate
198+
# allowVolumeExpansion: true
199+
# mountOptions:
200+
# - dir_mode=0777
201+
# - file_mode=0777
202+
# - noperm
203+
# - mfsymlinks
204+
# - cache=strict
205+
# - noserverino # required to prevent data corruption
206+
# - name: smb-csi-retain
207+
# parameters:
208+
# source: "//smb-server.default.svc.cluster.local/share"
209+
# # if csi.storage.k8s.io/provisioner-secret is provided, will create a sub directory
210+
# # with PV name under source
211+
# csi.storage.k8s.io/provisioner-secret-name: smbcreds
212+
# csi.storage.k8s.io/provisioner-secret-namespace: default
213+
# csi.storage.k8s.io/node-stage-secret-name: smbcreds
214+
# csi.storage.k8s.io/node-stage-secret-namespace: default
215+
# reclaimPolicy: Delete
216+
# volumeBindingMode: Immediate
217+
# allowVolumeExpansion: true
218+
# mountOptions:
219+
# - dir_mode=0777
220+
# - file_mode=0777
221+
# - noperm
222+
# - mfsymlinks
223+
# - cache=strict
224+
# - noserverino # required to prevent data corruption

0 commit comments

Comments
 (0)