From 7cff0724903ace1133f6163bbe9d966ba6cbdd6a Mon Sep 17 00:00:00 2001
From: Andri Joos <andri@joos.io>
Date: Mon, 4 Nov 2024 21:20:05 +0100
Subject: [PATCH] add support for multiple storage classes

---
 nfs-server/templates/deployment.yaml   |  2 +-
 nfs-server/templates/storageClass.yaml | 25 +++++++++++++++++
 nfs-server/values.yaml                 | 39 ++++++++++++++------------
 3 files changed, 47 insertions(+), 19 deletions(-)
 create mode 100644 nfs-server/templates/storageClass.yaml

diff --git a/nfs-server/templates/deployment.yaml b/nfs-server/templates/deployment.yaml
index e5458c8..c03ea2f 100644
--- a/nfs-server/templates/deployment.yaml
+++ b/nfs-server/templates/deployment.yaml
@@ -1,7 +1,7 @@
 apiVersion: apps/v1
 kind: Deployment
 metadata:
-  name: {{ include "nfs-server.name" . }}
+  name: {{ include "nfs-server.fullname" . }}
   labels:
     {{- include "nfs-server.labels" . | nindent 4 }}
 spec:
diff --git a/nfs-server/templates/storageClass.yaml b/nfs-server/templates/storageClass.yaml
new file mode 100644
index 0000000..56cffea
--- /dev/null
+++ b/nfs-server/templates/storageClass.yaml
@@ -0,0 +1,25 @@
+{{- range .Values.storageClasses }}
+---
+apiVersion: storage.k8s.io/v1
+kind: StorageClass
+metadata:
+  name: {{ .name }}
+  labels:
+    {{- include "nfs-server.labels" $ | nindent 4 }}
+  {{- with .annotations }}
+  annotations:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+provisioner: nfs.csi.k8s.io
+{{- with .parameters }}
+parameters:
+{{ toYaml . | indent 2 }}
+{{- end }}
+reclaimPolicy: {{ .reclaimPolicy }}
+volumeBindingMode: {{ .volumeBindingMode }}
+allowVolumeExpansion: {{ .allowVolumeExpansion | default false }}
+{{- with .mountOptions }}
+mountOptions:
+  {{- toYaml . | nindent 2 }}
+{{- end }}
+{{- end }}
diff --git a/nfs-server/values.yaml b/nfs-server/values.yaml
index d177162..cdddff4 100644
--- a/nfs-server/values.yaml
+++ b/nfs-server/values.yaml
@@ -41,9 +41,8 @@ podLabels: {}
 podSecurityContext: {}
   # fsGroup: 2000
 
-securityContext: {
+securityContext:
   privileged: true
-}
   # capabilities:
   #   drop:
   #   - ALL
@@ -123,21 +122,25 @@ env:
     PERMITTED: '*'
   secret: {}
 
+storageClasses: []
+# - name: nfs-csi-dynamic
+#   volumeBindingMode: Immediate
+#   annotations:
+#     helm.sh/resource-policy: keep
+#   parameters:
+#     server: nfs-server.nfs-server.svc.cluster.local
+#     share: /
+#     subDir: ""
+#   reclaimPolicy: Delete
+#   volumeBindingMode: Immediate
+#   mountOptions:
+#   - nfsvers=4
+# - name: nfs-csi-static
+#   annotations:
+#     helm.sh/resource-policy: keep
+#   reclaimPolicy: Retain
+#   volumeBindingMode: Immediate
+
 csi-driver-nfs:
-  # For static provisioning, create the pv's manually
   storageClass:
-    create: true
-    name: nfs-csi
-
-    annotations:
-      helm.sh/resource-policy: keep
-
-    parameters:
-      server: nfs-server.nfs-server.svc.cluster.local
-      share: /
-      subDir: ""
-
-    reclaimPolicy: Delete
-    volumeBindingMode: Immediate
-    mountOptions:
-    - nfsvers=4
+    create: false
-- 
GitLab