Skip to content

Commit 267ed88

Browse files
authored
Merge pull request #977 from andyzhangx/support-multi-sc
feat: support multiple storage classes creation using helm chart
2 parents e3bee8b + 574fbcb commit 267ed88

File tree

4 files changed

+89
-1
lines changed

4 files changed

+89
-1
lines changed

charts/README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,37 @@ The following table lists the configurable parameters of the latest NFS CSI Driv
116116
| `externalSnapshotter.resources.requests.cpu` | snapshot-controller cpu requests limits | 10m |
117117
| `externalSnapshotter.resources.requests.memory` | snapshot-controller memory requests limits | 20Mi |
118118
| `storageClass.create` | create storageclass| `false` | |
119+
| `storageClasses` | create multiple storageclasses (if specified, `storageClass.create` is still respected)| `[]` | |
120+
121+
### Create multiple storage classes
122+
123+
You can create multiple storage classes with different configurations using the `storageClasses` parameter:
124+
125+
```yaml
126+
storageClasses:
127+
- name: nfs-delete
128+
annotations:
129+
storageclass.kubernetes.io/is-default-class: "true"
130+
parameters:
131+
server: nfs-server.default.svc.cluster.local
132+
share: /
133+
reclaimPolicy: Delete
134+
volumeBindingMode: Immediate
135+
mountOptions:
136+
- nfsvers=4.1
137+
- name: nfs-retain
138+
parameters:
139+
server: nfs-server.default.svc.cluster.local
140+
share: /data
141+
reclaimPolicy: Retain
142+
volumeBindingMode: Immediate
143+
mountOptions:
144+
- nfsvers=4.1
145+
```
146+
Install with custom values:
147+
```console
148+
helm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs --namespace kube-system -f custom-values.yaml
149+
```
119150

120151
## troubleshooting
121152
- Add `--wait -v=5 --debug` in `helm install` command to get detailed error
235 Bytes
Binary file not shown.

charts/latest/csi-driver-nfs/templates/storageclass.yaml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,33 @@ mountOptions:
2222
{{ toYaml . | nindent 2 }}
2323
{{- end }}
2424
{{- end }}
25+
{{- if .Values.storageClasses }}
26+
{{- range .Values.storageClasses }}
27+
---
28+
apiVersion: storage.k8s.io/v1
29+
kind: StorageClass
30+
metadata:
31+
name: {{ .name }}
32+
{{ include "nfs.labels" $ | indent 2 }}
33+
{{- with .annotations }}
34+
annotations:
35+
{{- toYaml . | nindent 4 }}
36+
{{- end }}
37+
provisioner: {{ $.Values.driver.name }}
38+
{{- with .parameters }}
39+
parameters:
40+
{{ toYaml . | indent 2 }}
41+
{{- end }}
42+
reclaimPolicy: {{ .reclaimPolicy | default "Delete" }}
43+
volumeBindingMode: {{ .volumeBindingMode | default "Immediate" }}
44+
{{- if hasKey . "allowVolumeExpansion" }}
45+
allowVolumeExpansion: {{ .allowVolumeExpansion }}
46+
{{- else }}
47+
allowVolumeExpansion: true
48+
{{- end }}
49+
{{- with .mountOptions }}
50+
mountOptions:
51+
{{ toYaml . | nindent 2 }}
52+
{{- end }}
53+
{{- end }}
54+
{{- end }}

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

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,11 +183,38 @@ storageClass:
183183
# server: nfs-server.default.svc.cluster.local
184184
# share: /
185185
# subDir:
186-
# mountPermissions: "0"
186+
# mountPermissions: "0755"
187187
# csi.storage.k8s.io/provisioner-secret is only needed for providing mountOptions in DeleteVolume
188188
# csi.storage.k8s.io/provisioner-secret-name: "mount-options"
189189
# csi.storage.k8s.io/provisioner-secret-namespace: "default"
190190
# reclaimPolicy: Delete
191191
# volumeBindingMode: Immediate
192192
# mountOptions:
193193
# - nfsvers=4.1
194+
195+
## StorageClass resources for creating multiple storage classes:
196+
## If you want multiple storage classes with different configurations, use this instead of storageClass above
197+
# storageClasses:
198+
# - name: nfs-delete
199+
# annotations:
200+
# storageclass.kubernetes.io/is-default-class: "true"
201+
# parameters:
202+
# server: nfs-server.default.svc.cluster.local
203+
# share: /
204+
# # subDir:
205+
# # mountPermissions: "0"
206+
# # csi.storage.k8s.io/provisioner-secret is only needed for providing mountOptions in DeleteVolume
207+
# # csi.storage.k8s.io/provisioner-secret-name: "mount-options"
208+
# # csi.storage.k8s.io/provisioner-secret-namespace: "default"
209+
# reclaimPolicy: Delete
210+
# volumeBindingMode: Immediate
211+
# mountOptions:
212+
# - nfsvers=4.1
213+
# - name: nfs-retain
214+
# parameters:
215+
# server: nfs-server.default.svc.cluster.local
216+
# share: /
217+
# reclaimPolicy: Retain
218+
# volumeBindingMode: Immediate
219+
# mountOptions:
220+
# - nfsvers=4.1

0 commit comments

Comments
 (0)