diff --git a/charts/README.md b/charts/README.md index 727df399061..01b8a8db7a3 100644 --- a/charts/README.md +++ b/charts/README.md @@ -127,6 +127,7 @@ The following table lists the configurable parameters of the latest SMB CSI Driv | `windows.resources.smb.requests.cpu` | smb-csi-driver cpu requests limits | `10m` | | `windows.resources.smb.requests.memory` | smb-csi-driver memory requests limits | `20Mi` | | `windows.kubelet` | configure kubelet directory path on Windows agent node | `'C:\var\lib\kubelet'` | +| `storageClasses` | create multiple storage classes | `[]` | | ### Csi Proxy support on windows > 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 | `image.csiproxy.tag` | csiproxy docker image tag | `v1.1.2` | | `image.csiproxy.pullPolicy` | csiproxy image pull policy | `IfNotPresent` | +## Create multiple storage classes + + - create multiple storage classes with different configurations using the `storageClasses` parameter: + +```yaml +storageClasses: + - name: smb-csi + annotations: + storageclass.kubernetes.io/is-default-class: "true" + parameters: + source: "//smb-server.default.svc.cluster.local/share" + # if csi.storage.k8s.io/provisioner-secret is provided, will create a sub directory + # with PV name under source + csi.storage.k8s.io/provisioner-secret-name: smbcreds + csi.storage.k8s.io/provisioner-secret-namespace: default + csi.storage.k8s.io/node-stage-secret-name: smbcreds + csi.storage.k8s.io/node-stage-secret-namespace: default + reclaimPolicy: Delete + volumeBindingMode: Immediate + allowVolumeExpansion: true + mountOptions: + - dir_mode=0777 + - file_mode=0777 + - noperm + - mfsymlinks + - cache=strict + - noserverino # required to prevent data corruption + - name: smb-csi-retain + parameters: + source: "//smb-server.default.svc.cluster.local/share" + # if csi.storage.k8s.io/provisioner-secret is provided, will create a sub directory + # with PV name under source + csi.storage.k8s.io/provisioner-secret-name: smbcreds + csi.storage.k8s.io/provisioner-secret-namespace: default + csi.storage.k8s.io/node-stage-secret-name: smbcreds + csi.storage.k8s.io/node-stage-secret-namespace: default + reclaimPolicy: Retain + volumeBindingMode: Immediate + allowVolumeExpansion: true + mountOptions: + - dir_mode=0777 + - file_mode=0777 + - noperm + - mfsymlinks + - cache=strict + - noserverino # required to prevent data corruption +``` + + - install with custom values: +```console +helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system -f custom-values.yaml +``` + ## troubleshooting - Add `--wait -v=5 --debug` in `helm install` command to get detailed error diff --git a/charts/latest/csi-driver-smb-v0.0.0.tgz b/charts/latest/csi-driver-smb-v0.0.0.tgz index f414e5f4132..f42ea727377 100644 Binary files a/charts/latest/csi-driver-smb-v0.0.0.tgz and b/charts/latest/csi-driver-smb-v0.0.0.tgz differ diff --git a/charts/latest/csi-driver-smb/templates/storageclass.yaml b/charts/latest/csi-driver-smb/templates/storageclass.yaml new file mode 100644 index 00000000000..9d7f71b9cba --- /dev/null +++ b/charts/latest/csi-driver-smb/templates/storageclass.yaml @@ -0,0 +1,30 @@ +{{- if .Values.storageClasses }} +{{- range .Values.storageClasses }} +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: {{ .name }} +{{ include "smb.labels" $ | indent 2 }} + {{- with .annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +provisioner: {{ $.Values.driver.name }} +{{- with .parameters }} +parameters: +{{ toYaml . | indent 2 }} +{{- end }} +reclaimPolicy: {{ .reclaimPolicy | default "Delete" }} +volumeBindingMode: {{ .volumeBindingMode | default "Immediate" }} +{{- if hasKey . "allowVolumeExpansion" }} +allowVolumeExpansion: {{ .allowVolumeExpansion }} +{{- else }} +allowVolumeExpansion: true +{{- end }} +{{- with .mountOptions }} +mountOptions: +{{ toYaml . | nindent 2 }} +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/latest/csi-driver-smb/values.yaml b/charts/latest/csi-driver-smb/values.yaml index da216bb1b04..8bbe5911436 100755 --- a/charts/latest/csi-driver-smb/values.yaml +++ b/charts/latest/csi-driver-smb/values.yaml @@ -180,3 +180,45 @@ priorityClassName: system-cluster-critical ## by example : ## securityContext: { runAsUser: 1001 } securityContext: { seccompProfile: {type: RuntimeDefault} } +## StorageClass resources for creating multiple storage classes: +# storageClasses: +# - name: smb-csi +# annotations: +# storageclass.kubernetes.io/is-default-class: "true" +# parameters: +# source: "//smb-server.default.svc.cluster.local/share" +# # if csi.storage.k8s.io/provisioner-secret is provided, will create a sub directory +# # with PV name under source +# csi.storage.k8s.io/provisioner-secret-name: smbcreds +# csi.storage.k8s.io/provisioner-secret-namespace: default +# csi.storage.k8s.io/node-stage-secret-name: smbcreds +# csi.storage.k8s.io/node-stage-secret-namespace: default +# reclaimPolicy: Delete +# volumeBindingMode: Immediate +# allowVolumeExpansion: true +# mountOptions: +# - dir_mode=0777 +# - file_mode=0777 +# - noperm +# - mfsymlinks +# - cache=strict +# - noserverino # required to prevent data corruption +# - name: smb-csi-retain +# parameters: +# source: "//smb-server.default.svc.cluster.local/share" +# # if csi.storage.k8s.io/provisioner-secret is provided, will create a sub directory +# # with PV name under source +# csi.storage.k8s.io/provisioner-secret-name: smbcreds +# csi.storage.k8s.io/provisioner-secret-namespace: default +# csi.storage.k8s.io/node-stage-secret-name: smbcreds +# csi.storage.k8s.io/node-stage-secret-namespace: default +# reclaimPolicy: Delete +# volumeBindingMode: Immediate +# allowVolumeExpansion: true +# mountOptions: +# - dir_mode=0777 +# - file_mode=0777 +# - noperm +# - mfsymlinks +# - cache=strict +# - noserverino # required to prevent data corruption