diff --git a/common/templates/_extra_ingress.tpl b/common/templates/_extra_ingress.tpl
index 8fa2c8661351fdc31d28b938f2f4b70b10b4953f..08e29a87f00f4d9937302cb36bd9489a835c336c 100644
--- a/common/templates/_extra_ingress.tpl
+++ b/common/templates/_extra_ingress.tpl
@@ -1,4 +1,4 @@
-{{- define "common.extra-ingress.ingress" -}}
+{{- define "common.extra-ingress" -}}
 apiVersion: networking.k8s.io/v1
 kind: Ingress
 metadata:
@@ -8,13 +8,14 @@ metadata:
     {{- toYaml . | nindent 4 }}
   {{- end }}
   labels:
-    {{- include "common.labels" . | nindent 4 }}
+    {{- include "common.variables.labels" . | nindent 4 }}
 spec:
   {{- with .Values.ingressClassName }}
   ingressClassName: {{ . | quote }}
   {{- end }}
   rules:
-    {{- (include "common.extra-ingress.rules" .) | nindent 4 }}
+    {{- (include "common.variables.extra-ingress.rules" .) | nindent 4 }}
   tls:
-    {{- (include "common.extra-ingress.tls" .) | nindent 4 }}
+    {{- (include "common.variables.extra-ingress.tls" .) | nindent 4 }}
+---
 {{- end }}
diff --git a/common/templates/_helpers.tpl b/common/templates/_helpers.tpl
index 2fce9c4016776dc6eb8703d9d2b4877c24b55b58..4bbcda7870accc725a84787a9bd65324b987cc7b 100644
--- a/common/templates/_helpers.tpl
+++ b/common/templates/_helpers.tpl
@@ -1,15 +1,15 @@
 {{/*
 Create chart name and version as used by the chart label.
 */}}
-{{- define "common.chart" -}}
+{{- define "common.variables.chart" -}}
 {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
 {{- end }}
 
 {{/*
 Common labels
 */}}
-{{- define "common.labels" -}}
-helm.sh/chart: {{ include "common.chart" . }}
+{{- define "common.variables.labels" -}}
+helm.sh/chart: {{ include "common.variables.chart" . }}
 {{- if .Chart.AppVersion }}
 app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
 {{- end }}
@@ -23,7 +23,7 @@ Extra Ingress
 {{/*
 Extra Ingress Rules
 */}}
-{{- define "common.extra-ingress.rules" -}}
+{{- define "common.variables.extra-ingress.rules" -}}
 {{- $rules := list -}}
 {{- range $name, $rule := .Values.rules -}}
   {{- $rules = append $rules $rule -}}
@@ -34,7 +34,7 @@ Extra Ingress Rules
 {{/*
 Extra Ingress TLS
 */}}
-{{- define "common.extra-ingress.tls" -}}
+{{- define "common.variables.extra-ingress.tls" -}}
 {{- $tlsDefinitions := list -}}
 {{- range $name, $tlsDefinition := .Values.tls -}}
   {{- $tlsDefinitions = append $tlsDefinitions $tlsDefinition -}}
@@ -49,7 +49,7 @@ Secret
 {{/*
 Secret data
 */}}
-{{- define "common.secret.data" -}}
+{{- define "common.variables.secret.data" -}}
 {{- $data := dict -}}
 {{- range $key, $value := .Values.data -}}
   {{- $data = merge $data (dict $key $value) -}}
diff --git a/common/templates/_persistentvolume.tpl b/common/templates/_persistentvolume.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..6f56c5877209d89c0bb0e42ba15484e1833bff03
--- /dev/null
+++ b/common/templates/_persistentvolume.tpl
@@ -0,0 +1,35 @@
+# Only use for static provisioning, dynamic provisioning will provision the pv upon request
+{{- define "common.persistentvolume" -}}
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+  name: {{ .Values.name }}
+  {{- with .Values.annotations }}
+  annotations:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+  labels:
+    {{- include "common.variables.labels" . | nindent 4 }}
+spec:
+  capacity:
+    storage: {{ .Values.size }}
+  {{- with .Values.mountOptions }}
+  mountOptions:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+  {{- with .Values.accessModes }}
+  accessModes:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+  persistentVolumeReclaimPolicy: {{ .Values.reclaimPolicy | default "Retain" }}
+  storageClassName: {{ .Values.storageClassName | default "manual" }}
+  {{- with .Values.claimRefName }}
+  claimRef:
+    name: {{ quote . }}
+    namespace: {{ quote $.Release.Namespace }}
+  {{- end}}
+  {{- with .Values.mount }}
+  {{- toYaml . | nindent 2 }}
+  {{- end }}
+---
+{{- end }}
diff --git a/common/templates/_persistentvolumeclaim.tpl b/common/templates/_persistentvolumeclaim.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..6a31438e76a6ce51c77156d220c745a69827be38
--- /dev/null
+++ b/common/templates/_persistentvolumeclaim.tpl
@@ -0,0 +1,25 @@
+{{- define "common.persistentvolumeclaim" -}}
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: {{ .Values.name }}
+  {{- with .Values.annotations }}
+  annotations:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+  labels:
+    {{- include "common.variables.labels" . | nindent 4 }}
+spec:
+  resources:
+    requests: 
+      storage: {{ .Values.size }}
+  {{- with .Values.accessModes }}
+  accessModes:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+  storageClassName: {{ .Values.storageClassName | default "manual" }}
+  {{- with .Values.volumeName }}
+  volumeName: {{ . }}
+  {{- end }}
+---
+{{- end }}
diff --git a/common/templates/_secret.tpl b/common/templates/_secret.tpl
index 0436b3f4f8e6f0093603e070a209d3cbe1ca7dcf..53b6ac8b858d83f30a12e6d857b41218656b32f4 100644
--- a/common/templates/_secret.tpl
+++ b/common/templates/_secret.tpl
@@ -1,9 +1,16 @@
-{{- define "common.secret.secret" -}}
+{{- define "common.secret" -}}
 apiVersion: v1
 kind: Secret
 metadata:
   name: {{ .Values.name | default "secret" | quote }}
+  {{- with .Values.annotations }}
+  annotations:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+  labels:
+    {{- include "common.variables.labels" . | nindent 4 }}
 type: {{ .Values.type | default "Opaque" }}
 data:
-  {{- (include "common.secret.data" .) | nindent 2 }}
+  {{- (include "common.variables.secret.data" .) | nindent 2 }}
+---
 {{- end }}
diff --git a/example/templates/extra_ingress.yaml b/example/templates/extra_ingress.yaml
index 9e6f3bc96ac49726ccae2a6fc960490f679d0062..9485737b24ab16fb21d094a0745ca48e26fb3b8e 100644
--- a/example/templates/extra_ingress.yaml
+++ b/example/templates/extra_ingress.yaml
@@ -1,3 +1,3 @@
 {{- if .Values.extraIngress }}
-{{ include "common.extra-ingress.ingress" (merge . (dict "Values" .Values.extraIngress)) }}
+{{ include "common.extra-ingress" (dict "Values" .Values.extraIngress "Chart" .Chart "Release" .Release) }}
 {{- end }}
diff --git a/example/templates/persistentvolumeclaims.yaml b/example/templates/persistentvolumeclaims.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a8f369703b3379dd12c4f24566fc0a54c8760bbf
--- /dev/null
+++ b/example/templates/persistentvolumeclaims.yaml
@@ -0,0 +1,3 @@
+{{- if .Values.extraIngress }}
+{{ include "common.persistentvolumeclaim" (dict "Values" .Values.volumes.persistentVolumeClaims.example "Chart" .Chart "Release" .Release) }}
+{{- end }}
diff --git a/example/templates/persistentvolumes.yaml b/example/templates/persistentvolumes.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..950f8fb5e736630c988841a6dbf8090b4acce4e9
--- /dev/null
+++ b/example/templates/persistentvolumes.yaml
@@ -0,0 +1,3 @@
+{{- if .Values.volumes.persistentVolumes.example }}
+{{ include "common.persistentvolume" (dict "Values" .Values.volumes.persistentVolumes.example "Chart" .Chart "Release" .Release) }}
+{{- end }}
diff --git a/example/templates/secret.yaml b/example/templates/secret.yaml
deleted file mode 100644
index 6ddac33ef20683f97642978778a424c191b9c844..0000000000000000000000000000000000000000
--- a/example/templates/secret.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-{{- if .Values.secret }}
-{{ include "common.secret.secret" (merge . (dict "Values" .Values.secret)) }}
-{{- end }}
diff --git a/example/templates/secrets.yaml b/example/templates/secrets.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..afb9199bdb22f24b56aa45497fb0bbb15d80f3f0
--- /dev/null
+++ b/example/templates/secrets.yaml
@@ -0,0 +1,6 @@
+{{- if .Values.secrets.secret0 }}
+{{ include "common.secret" (dict "Values" .Values.secrets.secret0 "Chart" .Chart "Release" .Release) }}
+{{- end }}
+{{- if .Values.secrets.secret1 }}
+{{ include "common.secret" (dict "Values" .Values.secrets.secret1 "Chart" .Chart "Release" .Release) }}
+{{- end }}
diff --git a/example/values.yaml b/example/values.yaml
index 73ad8794f2cb1b21edc52f35b2f8082dd17c60e8..1093a8e9cd60acb107c8c3e4793b5a2f18d09dae 100644
--- a/example/values.yaml
+++ b/example/values.yaml
@@ -17,9 +17,42 @@ extraIngress:
         - test.com
       secretName: test-tls
 
-secret:
-  name: example-secret
-  type: Generic
-  data:
-    username: dXNlcm5hbWU= # Base64-encoded 'username'
-    password: cGFzc3dvcmQ= # Base64-encoded 'password'
+secrets:
+  secret0:
+    name: example-secret0
+    data:
+      username: dXNlcm5hbWU= # Base64-encoded 'username'
+      password: cGFzc3dvcmQ= # Base64-encoded 'password'
+
+  secret1:
+    name: example-secret1
+    type: Opaque
+    data:
+      username: example
+      password: example
+
+volumes:
+  persistentVolumes:
+    example:
+      name: example
+      size: 5Gi
+      mountOptions:
+        - nfsvers=4.1
+      accessModes:
+        - ReadWriteMany
+      reclaimPolicy: Delete
+      storageClassName: manual
+      claimRefName: example
+      mount:
+        nfs:
+          server: 192.168.1.196
+          path: /example
+
+  persistentVolumeClaims:
+    example:
+      name: example
+      size: 5Gi
+      accessModes:
+        - ReadWriteMany
+      storageClassName: manual
+      volumeName: example