diff --git a/assets/argo/argo-cd-5.45.1.tgz b/assets/argo/argo-cd-5.45.1.tgz
index 5cd88981b..93e223518 100644
Binary files a/assets/argo/argo-cd-5.45.1.tgz and b/assets/argo/argo-cd-5.45.1.tgz differ
diff --git a/assets/argo/argo-cd-5.45.2.tgz b/assets/argo/argo-cd-5.45.2.tgz
new file mode 100644
index 000000000..e59ed8097
Binary files /dev/null and b/assets/argo/argo-cd-5.45.2.tgz differ
diff --git a/assets/bitnami/airflow-15.0.3.tgz b/assets/bitnami/airflow-15.0.3.tgz
new file mode 100644
index 000000000..75a3c8831
Binary files /dev/null and b/assets/bitnami/airflow-15.0.3.tgz differ
diff --git a/assets/bitnami/kafka-25.1.8.tgz b/assets/bitnami/kafka-25.1.8.tgz
new file mode 100644
index 000000000..4878f3118
Binary files /dev/null and b/assets/bitnami/kafka-25.1.8.tgz differ
diff --git a/assets/bitnami/mariadb-13.1.3.tgz b/assets/bitnami/mariadb-13.1.3.tgz
new file mode 100644
index 000000000..c7be3c9f2
Binary files /dev/null and b/assets/bitnami/mariadb-13.1.3.tgz differ
diff --git a/assets/bitnami/postgresql-12.11.0.tgz b/assets/bitnami/postgresql-12.11.0.tgz
new file mode 100644
index 000000000..ec2a63657
Binary files /dev/null and b/assets/bitnami/postgresql-12.11.0.tgz differ
diff --git a/assets/bitnami/spark-7.2.1.tgz b/assets/bitnami/spark-7.2.1.tgz
new file mode 100644
index 000000000..589a5bfac
Binary files /dev/null and b/assets/bitnami/spark-7.2.1.tgz differ
diff --git a/assets/bitnami/tomcat-10.10.3.tgz b/assets/bitnami/tomcat-10.10.3.tgz
new file mode 100644
index 000000000..1f4fe87a7
Binary files /dev/null and b/assets/bitnami/tomcat-10.10.3.tgz differ
diff --git a/assets/bitnami/wordpress-17.1.7.tgz b/assets/bitnami/wordpress-17.1.7.tgz
new file mode 100644
index 000000000..347cbd0e9
Binary files /dev/null and b/assets/bitnami/wordpress-17.1.7.tgz differ
diff --git a/assets/clastix/kamaji-0.12.5.tgz b/assets/clastix/kamaji-0.12.5.tgz
new file mode 100644
index 000000000..4fe9b0a09
Binary files /dev/null and b/assets/clastix/kamaji-0.12.5.tgz differ
diff --git a/assets/datadog/datadog-3.35.1.tgz b/assets/datadog/datadog-3.35.1.tgz
new file mode 100644
index 000000000..b53b41dde
Binary files /dev/null and b/assets/datadog/datadog-3.35.1.tgz differ
diff --git a/assets/f5/f5-bigip-ctlr-0.0.2601.tgz b/assets/f5/f5-bigip-ctlr-0.0.2601.tgz
new file mode 100644
index 000000000..5020262b1
Binary files /dev/null and b/assets/f5/f5-bigip-ctlr-0.0.2601.tgz differ
diff --git a/assets/haproxy/haproxy-1.33.0.tgz b/assets/haproxy/haproxy-1.33.0.tgz
new file mode 100644
index 000000000..228c5c16c
Binary files /dev/null and b/assets/haproxy/haproxy-1.33.0.tgz differ
diff --git a/assets/jenkins/jenkins-4.6.3.tgz b/assets/jenkins/jenkins-4.6.3.tgz
new file mode 100644
index 000000000..8babb37e9
Binary files /dev/null and b/assets/jenkins/jenkins-4.6.3.tgz differ
diff --git a/assets/kuma/kuma-2.4.1.tgz b/assets/kuma/kuma-2.4.1.tgz
new file mode 100644
index 000000000..509200170
Binary files /dev/null and b/assets/kuma/kuma-2.4.1.tgz differ
diff --git a/assets/minio/minio-operator-5.0.8.tgz b/assets/minio/minio-operator-5.0.8.tgz
new file mode 100644
index 000000000..35d4f4554
Binary files /dev/null and b/assets/minio/minio-operator-5.0.8.tgz differ
diff --git a/assets/openebs/openebs-3.9.0.tgz b/assets/openebs/openebs-3.9.0.tgz
new file mode 100644
index 000000000..58e4f2230
Binary files /dev/null and b/assets/openebs/openebs-3.9.0.tgz differ
diff --git a/assets/redpanda/redpanda-5.3.3.tgz b/assets/redpanda/redpanda-5.3.3.tgz
new file mode 100644
index 000000000..0ef1da769
Binary files /dev/null and b/assets/redpanda/redpanda-5.3.3.tgz differ
diff --git a/assets/speedscale/speedscale-operator-1.3.30.tgz b/assets/speedscale/speedscale-operator-1.3.30.tgz
new file mode 100644
index 000000000..4b37080eb
Binary files /dev/null and b/assets/speedscale/speedscale-operator-1.3.30.tgz differ
diff --git a/assets/sysdig/sysdig-1.16.11.tgz b/assets/sysdig/sysdig-1.16.11.tgz
new file mode 100644
index 000000000..5d4beee15
Binary files /dev/null and b/assets/sysdig/sysdig-1.16.11.tgz differ
diff --git a/charts/argo/argo-cd/Chart.yaml b/charts/argo/argo-cd/Chart.yaml
index 9dcc94fb2..126ef8dcf 100644
--- a/charts/argo/argo-cd/Chart.yaml
+++ b/charts/argo/argo-cd/Chart.yaml
@@ -1,7 +1,7 @@
 annotations:
   artifacthub.io/changes: |
     - kind: fixed
-      description: fixed example for configs.styles to be sidebar instead of nav-bar
+      description: do not hardcode the pathtype of the grpc ingress rule when using a single ingress resource in aws alb
   artifacthub.io/signKey: |
     fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252
     url: https://argoproj.github.io/argo-helm/pgp_keys.asc
@@ -33,4 +33,4 @@ name: argo-cd
 sources:
 - https://github.com/argoproj/argo-helm/tree/main/charts/argo-cd
 - https://github.com/argoproj/argo-cd
-version: 5.45.1
+version: 5.45.2
diff --git a/charts/argo/argo-cd/templates/argocd-server/ingress.yaml b/charts/argo/argo-cd/templates/argocd-server/ingress.yaml
index 98ec1cb12..a142bb666 100644
--- a/charts/argo/argo-cd/templates/argocd-server/ingress.yaml
+++ b/charts/argo/argo-cd/templates/argocd-server/ingress.yaml
@@ -39,7 +39,7 @@ spec:
           {{- range $p := $paths }}
           {{- if and $.Values.server.ingressGrpc.isAWSALB $.Values.server.ingressGrpc.enabled }}
           - path: {{ $p }}
-            pathType: Prefix
+            pathType: {{ $.Values.server.ingressGrpc.pathType }}
             backend:
               service:
                 name: {{ template "argo-cd.server.fullname" $ }}-grpc
diff --git a/charts/bitnami/airflow/Chart.lock b/charts/bitnami/airflow/Chart.lock
index 158240a44..ba137a778 100644
--- a/charts/bitnami/airflow/Chart.lock
+++ b/charts/bitnami/airflow/Chart.lock
@@ -1,12 +1,12 @@
 dependencies:
 - name: redis
   repository: oci://registry-1.docker.io/bitnamicharts
-  version: 18.0.0
+  version: 18.0.2
 - name: postgresql
   repository: oci://registry-1.docker.io/bitnamicharts
   version: 12.10.0
 - name: common
   repository: oci://registry-1.docker.io/bitnamicharts
-  version: 2.9.0
-digest: sha256:46bd4e57c97682d567cd5666dd8e7dc636ebf89445a26548b6ba8576e173b6f6
-generated: "2023-08-28T09:05:13.118958317+02:00"
+  version: 2.10.0
+digest: sha256:909a1b88eddc7aa1b4f32055f052a679aed3f01b4790830724c09073d99c692b
+generated: "2023-09-05T11:31:11.531432+02:00"
diff --git a/charts/bitnami/airflow/Chart.yaml b/charts/bitnami/airflow/Chart.yaml
index e215294f5..74dede86f 100644
--- a/charts/bitnami/airflow/Chart.yaml
+++ b/charts/bitnami/airflow/Chart.yaml
@@ -50,4 +50,4 @@ maintainers:
 name: airflow
 sources:
 - https://github.com/bitnami/charts/tree/main/bitnami/airflow
-version: 15.0.2
+version: 15.0.3
diff --git a/charts/bitnami/airflow/charts/common/Chart.yaml b/charts/bitnami/airflow/charts/common/Chart.yaml
index 644d2a798..e35c2d0e7 100644
--- a/charts/bitnami/airflow/charts/common/Chart.yaml
+++ b/charts/bitnami/airflow/charts/common/Chart.yaml
@@ -2,7 +2,7 @@ annotations:
   category: Infrastructure
   licenses: Apache-2.0
 apiVersion: v2
-appVersion: 2.9.0
+appVersion: 2.9.2
 description: A Library Helm Chart for grouping common logic between bitnami charts.
   This chart is not deployable by itself.
 home: https://bitnami.com
@@ -20,4 +20,4 @@ name: common
 sources:
 - https://github.com/bitnami/charts
 type: library
-version: 2.9.0
+version: 2.10.0
diff --git a/charts/bitnami/airflow/charts/common/templates/_affinities.tpl b/charts/bitnami/airflow/charts/common/templates/_affinities.tpl
index b77534bb9..e85b1df45 100644
--- a/charts/bitnami/airflow/charts/common/templates/_affinities.tpl
+++ b/charts/bitnami/airflow/charts/common/templates/_affinities.tpl
@@ -60,12 +60,13 @@ Return a topologyKey definition
 
 {{/*
 Return a soft podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}}
+{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
 */}}
 {{- define "common.affinities.pods.soft" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
 preferredDuringSchedulingIgnoredDuringExecution:
   - podAffinityTerm:
       labelSelector:
@@ -78,16 +79,30 @@ preferredDuringSchedulingIgnoredDuringExecution:
           {{- end }}
       topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
     weight: 1
+  {{- range $extraPodAffinityTerms }}
+  - podAffinityTerm:
+      labelSelector:
+        matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 10 }}
+          {{- if not (empty $component) }}
+          {{ printf "app.kubernetes.io/component: %s" $component }}
+          {{- end }}
+          {{- range $key, $value := .extraMatchLabels }}
+          {{ $key }}: {{ $value | quote }}
+          {{- end }}
+      topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+    weight: {{ .weight | default 1 -}}
+  {{- end -}}
 {{- end -}}
 
 {{/*
 Return a hard podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}}
+{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
 */}}
 {{- define "common.affinities.pods.hard" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
 requiredDuringSchedulingIgnoredDuringExecution:
   - labelSelector:
       matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" .context )) | nindent 8 }}
@@ -98,6 +113,17 @@ requiredDuringSchedulingIgnoredDuringExecution:
         {{ $key }}: {{ $value | quote }}
         {{- end }}
     topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- range $extraPodAffinityTerms }}
+  - labelSelector:
+      matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 8 }}
+        {{- if not (empty $component) }}
+        {{ printf "app.kubernetes.io/component: %s" $component }}
+        {{- end }}
+        {{- range $key, $value := .extraMatchLabels }}
+        {{ $key }}: {{ $value | quote }}
+        {{- end }}
+    topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- end -}}
 {{- end -}}
 
 {{/*
diff --git a/charts/bitnami/airflow/charts/common/templates/_tplvalues.tpl b/charts/bitnami/airflow/charts/common/templates/_tplvalues.tpl
index dc15f7fdc..a8ed7637e 100644
--- a/charts/bitnami/airflow/charts/common/templates/_tplvalues.tpl
+++ b/charts/bitnami/airflow/charts/common/templates/_tplvalues.tpl
@@ -11,17 +11,28 @@ Usage:
 {{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ "scope" $app ) }}
 */}}
 {{- define "common.tplvalues.render" -}}
-{{- if .scope }}
-  {{- if typeIs "string" .value }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" .value  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+{{- $value := typeIs "string" .value | ternary .value (.value | toYaml) }}
+{{- if contains "{{" (toJson .value) }}
+  {{- if .scope }}
+      {{- tpl (cat "{{- with $.RelativeScope -}}" $value "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
   {{- else }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" (.value | toYaml)  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+    {{- tpl $value .context }}
   {{- end }}
 {{- else }}
-  {{- if typeIs "string" .value }}
-    {{- tpl .value .context }}
-  {{- else }}
-    {{- tpl (.value | toYaml) .context }}
-  {{- end }}
+    {{- $value }}
+{{- end }}
 {{- end -}}
+
+{{/*
+Merge a list of values that contains template after rendering them.
+Merge precedence is consistent with http://masterminds.github.io/sprig/dicts.html#merge-mustmerge
+Usage:
+{{ include "common.tplvalues.merge" ( dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $ ) }}
+*/}}
+{{- define "common.tplvalues.merge" -}}
+{{- $dst := dict -}}
+{{- range .values -}}
+{{- $dst = include "common.tplvalues.render" (dict "value" . "context" $.context "scope" $.scope) | fromYaml | merge $dst -}}
+{{- end -}}
+{{ $dst | toYaml }}
 {{- end -}}
diff --git a/charts/bitnami/airflow/charts/redis/Chart.yaml b/charts/bitnami/airflow/charts/redis/Chart.yaml
index 92101d5d5..4dd7bb41c 100644
--- a/charts/bitnami/airflow/charts/redis/Chart.yaml
+++ b/charts/bitnami/airflow/charts/redis/Chart.yaml
@@ -33,4 +33,4 @@ maintainers:
 name: redis
 sources:
 - https://github.com/bitnami/charts/tree/main/bitnami/redis
-version: 18.0.0
+version: 18.0.2
diff --git a/charts/bitnami/airflow/charts/redis/README.md b/charts/bitnami/airflow/charts/redis/README.md
index f736d6fab..9db7246b5 100644
--- a/charts/bitnami/airflow/charts/redis/README.md
+++ b/charts/bitnami/airflow/charts/redis/README.md
@@ -790,6 +790,12 @@ This issue can be mitigated by splitting the upgrade into two stages: one for al
 - Stage 2 (anything else that is not up to date, in this case only master):
 `helm upgrade oci://registry-1.docker.io/bitnamicharts/redis`
 
+### To 18.0.0
+
+This major version updates the Redis® docker image version used from `7.0` to `7.2`, the new stable version. There are no major changes in the chart, but we recommend checking the [Redis® 7.2 release notes](https://raw.githubusercontent.com/redis/redis/7.2/00-RELEASENOTES) before upgrading.
+
+NOTE: Due to an error in our release process, versions higher or equal than 17.15.4 already use 7.2 by default.
+
 ### To 17.0.0
 
 This major version updates the Redis® docker image version used from `6.2` to `7.0`, the new stable version. There are no major changes in the chart, but we recommend checking the [Redis® 7.0 release notes](https://raw.githubusercontent.com/redis/redis/7.0/00-RELEASENOTES) before upgrading.
@@ -976,4 +982,4 @@ Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
-limitations under the License.
\ No newline at end of file
+limitations under the License.
diff --git a/charts/bitnami/airflow/charts/redis/templates/secret-svcbind.yaml b/charts/bitnami/airflow/charts/redis/templates/secret-svcbind.yaml
index e9ad541a2..a1bfbe054 100644
--- a/charts/bitnami/airflow/charts/redis/templates/secret-svcbind.yaml
+++ b/charts/bitnami/airflow/charts/redis/templates/secret-svcbind.yaml
@@ -30,7 +30,7 @@ data:
   port: {{ print $port | b64enc | quote }}
   password: {{ print $password | b64enc | quote }}
   {{- if $password }}
-  uri: {{ printf "redis://%s@%s:%s" $password $host $port | b64enc | quote }}
+  uri: {{ printf "redis://:%s@%s:%s" $password $host $port | b64enc | quote }}
   {{- else }}
   uri: {{ printf "redis://%s:%s" $host $port | b64enc | quote }}
   {{- end }}
diff --git a/charts/bitnami/airflow/templates/config/configmap.yaml b/charts/bitnami/airflow/templates/config/configmap.yaml
index c4b50c80b..bdc3e73bf 100644
--- a/charts/bitnami/airflow/templates/config/configmap.yaml
+++ b/charts/bitnami/airflow/templates/config/configmap.yaml
@@ -28,7 +28,7 @@ data:
     kind: Pod
     metadata:
       name: k8s-executor-pod
-      {{- $labels := merge .Values.worker.podLabels .Values.commonLabels }}
+      {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.worker.podLabels .Values.commonLabels ) "context" . ) }}
       labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 8 }}
         app.kubernetes.io/component: worker
       {{- if .Values.worker.podAnnotations }}
diff --git a/charts/bitnami/airflow/templates/metrics/deployment.yaml b/charts/bitnami/airflow/templates/metrics/deployment.yaml
index 51492c790..a94f8e76f 100644
--- a/charts/bitnami/airflow/templates/metrics/deployment.yaml
+++ b/charts/bitnami/airflow/templates/metrics/deployment.yaml
@@ -16,7 +16,7 @@ metadata:
   {{- end }}
 spec:
   replicas: 1
-  {{- $podLabels := merge .Values.metrics.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: metrics
diff --git a/charts/bitnami/airflow/templates/metrics/service.yaml b/charts/bitnami/airflow/templates/metrics/service.yaml
index 5300e9df8..25d1a2af9 100644
--- a/charts/bitnami/airflow/templates/metrics/service.yaml
+++ b/charts/bitnami/airflow/templates/metrics/service.yaml
@@ -12,7 +12,7 @@ metadata:
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics
   {{- if or .Values.metrics.service.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.metrics.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -26,7 +26,7 @@ spec:
       port: {{ .Values.metrics.service.ports.http }}
       protocol: TCP
       targetPort: metrics
-  {{- $podLabels := merge .Values.metrics.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics
 {{- end }}
diff --git a/charts/bitnami/airflow/templates/metrics/servicemonitor.yaml b/charts/bitnami/airflow/templates/metrics/servicemonitor.yaml
index 6b180c29f..14b40680a 100644
--- a/charts/bitnami/airflow/templates/metrics/servicemonitor.yaml
+++ b/charts/bitnami/airflow/templates/metrics/servicemonitor.yaml
@@ -9,7 +9,7 @@ kind: ServiceMonitor
 metadata:
   name: {{ printf "%s-exporter" (include "common.names.fullname" .) }}
   namespace: {{ default .Release.Namespace .Values.metrics.serviceMonitor.namespace | quote }}
-  {{- $labels := merge .Values.metrics.serviceMonitor.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics
   {{- if .Values.commonAnnotations }}
diff --git a/charts/bitnami/airflow/templates/rbac/serviceaccount.yaml b/charts/bitnami/airflow/templates/rbac/serviceaccount.yaml
index 6e30419dc..0d5cd4ee9 100644
--- a/charts/bitnami/airflow/templates/rbac/serviceaccount.yaml
+++ b/charts/bitnami/airflow/templates/rbac/serviceaccount.yaml
@@ -11,7 +11,7 @@ metadata:
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if or .Values.serviceAccount.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.serviceAccount.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.serviceAccount.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
diff --git a/charts/bitnami/airflow/templates/scheduler/deployment.yaml b/charts/bitnami/airflow/templates/scheduler/deployment.yaml
index b310a8057..f6ddf381c 100644
--- a/charts/bitnami/airflow/templates/scheduler/deployment.yaml
+++ b/charts/bitnami/airflow/templates/scheduler/deployment.yaml
@@ -15,7 +15,7 @@ metadata:
   annotations: {{- include "common.tplvalues.render" (dict "value" .Values.commonAnnotations "context" $) | trim | nindent 4 }}
   {{- end }}
 spec:
-  {{- $podLabels := merge .Values.scheduler.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.scheduler.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: scheduler
diff --git a/charts/bitnami/airflow/templates/scheduler/poddisruptionbudget.yaml b/charts/bitnami/airflow/templates/scheduler/poddisruptionbudget.yaml
index 498d50cc9..f5be9ff15 100644
--- a/charts/bitnami/airflow/templates/scheduler/poddisruptionbudget.yaml
+++ b/charts/bitnami/airflow/templates/scheduler/poddisruptionbudget.yaml
@@ -18,7 +18,7 @@ spec:
   {{- if .Values.scheduler.pdb.maxUnavailable }}
   maxUnavailable: {{ .Values.scheduler.pdb.maxUnavailable }}
   {{- end }}
-  {{- $podLabels := merge .Values.scheduler.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.scheduler.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: scheduler
diff --git a/charts/bitnami/airflow/templates/scheduler/service-headless.yaml b/charts/bitnami/airflow/templates/scheduler/service-headless.yaml
index c58ef5078..a4e1f7710 100644
--- a/charts/bitnami/airflow/templates/scheduler/service-headless.yaml
+++ b/charts/bitnami/airflow/templates/scheduler/service-headless.yaml
@@ -20,7 +20,7 @@ spec:
     - name: task-logs
       port: {{ .Values.worker.containerPorts.http }}
       targetPort: task-logs
-  {{- $podLabels := merge .Values.scheduler.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.scheduler.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: scheduler
 {{- end }}
diff --git a/charts/bitnami/airflow/templates/web/deployment.yaml b/charts/bitnami/airflow/templates/web/deployment.yaml
index 0b5f93ffb..219da9713 100644
--- a/charts/bitnami/airflow/templates/web/deployment.yaml
+++ b/charts/bitnami/airflow/templates/web/deployment.yaml
@@ -14,7 +14,7 @@ metadata:
   annotations: {{- include "common.tplvalues.render" (dict "value" .Values.commonAnnotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
-  {{- $podLabels := merge .Values.web.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.web.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: web
diff --git a/charts/bitnami/airflow/templates/web/ingress.yaml b/charts/bitnami/airflow/templates/web/ingress.yaml
index ce6ce133e..4c15355d4 100644
--- a/charts/bitnami/airflow/templates/web/ingress.yaml
+++ b/charts/bitnami/airflow/templates/web/ingress.yaml
@@ -11,7 +11,7 @@ metadata:
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if or .Values.ingress.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.ingress.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.ingress.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
diff --git a/charts/bitnami/airflow/templates/web/poddisruptionbudget.yaml b/charts/bitnami/airflow/templates/web/poddisruptionbudget.yaml
index 21be8b855..61be35441 100644
--- a/charts/bitnami/airflow/templates/web/poddisruptionbudget.yaml
+++ b/charts/bitnami/airflow/templates/web/poddisruptionbudget.yaml
@@ -18,7 +18,7 @@ spec:
   {{- if .Values.web.pdb.maxUnavailable }}
   maxUnavailable: {{ .Values.web.pdb.maxUnavailable }}
   {{- end }}
-  {{- $podLabels := merge .Values.web.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.web.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: web
diff --git a/charts/bitnami/airflow/templates/web/service.yaml b/charts/bitnami/airflow/templates/web/service.yaml
index 5ab0da18f..32b336d67 100644
--- a/charts/bitnami/airflow/templates/web/service.yaml
+++ b/charts/bitnami/airflow/templates/web/service.yaml
@@ -11,7 +11,7 @@ metadata:
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: web
   {{- if or .Values.service.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -47,6 +47,6 @@ spec:
     {{- if .Values.service.extraPorts }}
     {{- include "common.tplvalues.render" (dict "value" .Values.service.extraPorts "context" $) | nindent 4 }}
     {{- end }}
-  {{- $podLabels := merge .Values.web.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.web.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: web
diff --git a/charts/bitnami/airflow/templates/worker/poddisruptionbudget.yaml b/charts/bitnami/airflow/templates/worker/poddisruptionbudget.yaml
index 17601d3c1..e4acbc11f 100644
--- a/charts/bitnami/airflow/templates/worker/poddisruptionbudget.yaml
+++ b/charts/bitnami/airflow/templates/worker/poddisruptionbudget.yaml
@@ -18,7 +18,7 @@ spec:
   {{- if .Values.worker.pdb.maxUnavailable }}
   maxUnavailable: {{ .Values.worker.pdb.maxUnavailable }}
   {{- end }}
-  {{- $podLabels := merge .Values.worker.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.worker.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: worker
diff --git a/charts/bitnami/airflow/templates/worker/service-headless.yaml b/charts/bitnami/airflow/templates/worker/service-headless.yaml
index f69e1a52a..8526ccac6 100644
--- a/charts/bitnami/airflow/templates/worker/service-headless.yaml
+++ b/charts/bitnami/airflow/templates/worker/service-headless.yaml
@@ -20,6 +20,6 @@ spec:
     - name: worker
       port: {{ .Values.worker.containerPorts.http }}
       targetPort: worker
-  {{- $podLabels := merge .Values.worker.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.worker.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: worker
diff --git a/charts/bitnami/airflow/templates/worker/statefulset.yaml b/charts/bitnami/airflow/templates/worker/statefulset.yaml
index 9c31f5052..1e8b93097 100644
--- a/charts/bitnami/airflow/templates/worker/statefulset.yaml
+++ b/charts/bitnami/airflow/templates/worker/statefulset.yaml
@@ -19,7 +19,7 @@ spec:
   podManagementPolicy: {{ .Values.worker.podManagementPolicy | quote }}
   {{- end }}
   replicas: {{ .Values.worker.replicaCount }}
-  {{- $podLabels := merge .Values.worker.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.worker.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: worker
diff --git a/charts/bitnami/kafka/Chart.lock b/charts/bitnami/kafka/Chart.lock
index 86957775a..703109ab6 100644
--- a/charts/bitnami/kafka/Chart.lock
+++ b/charts/bitnami/kafka/Chart.lock
@@ -1,9 +1,9 @@
 dependencies:
 - name: zookeeper
   repository: oci://registry-1.docker.io/bitnamicharts
-  version: 12.1.1
+  version: 12.1.2
 - name: common
   repository: oci://registry-1.docker.io/bitnamicharts
-  version: 2.9.1
-digest: sha256:d80576ab604d6ae40689f985ffff711a95525fd2e04df86f7524300fb5c7b6de
-generated: "2023-08-30T12:23:35.3141937Z"
+  version: 2.10.0
+digest: sha256:5e278241ce8a477449715df19d6e50542ff7afb81802a2cc8b4e04b8c0b35833
+generated: "2023-09-05T14:19:33.178442157Z"
diff --git a/charts/bitnami/kafka/Chart.yaml b/charts/bitnami/kafka/Chart.yaml
index 0dc286801..13e88d208 100644
--- a/charts/bitnami/kafka/Chart.yaml
+++ b/charts/bitnami/kafka/Chart.yaml
@@ -6,15 +6,15 @@ annotations:
   category: Infrastructure
   images: |
     - name: jmx-exporter
-      image: docker.io/bitnami/jmx-exporter:0.19.0-debian-11-r57
+      image: docker.io/bitnami/jmx-exporter:0.19.0-debian-11-r66
     - name: kafka-exporter
-      image: docker.io/bitnami/kafka-exporter:1.7.0-debian-11-r93
+      image: docker.io/bitnami/kafka-exporter:1.7.0-debian-11-r102
     - name: kafka
-      image: docker.io/bitnami/kafka:3.5.1-debian-11-r35
+      image: docker.io/bitnami/kafka:3.5.1-debian-11-r41
     - name: kubectl
-      image: docker.io/bitnami/kubectl:1.25.13-debian-11-r5
+      image: docker.io/bitnami/kubectl:1.25.13-debian-11-r11
     - name: os-shell
-      image: docker.io/bitnami/os-shell:11-debian-11-r51
+      image: docker.io/bitnami/os-shell:11-debian-11-r60
   licenses: Apache-2.0
 apiVersion: v2
 appVersion: 3.5.1
@@ -45,4 +45,4 @@ maintainers:
 name: kafka
 sources:
 - https://github.com/bitnami/charts/tree/main/bitnami/kafka
-version: 25.1.5
+version: 25.1.8
diff --git a/charts/bitnami/kafka/README.md b/charts/bitnami/kafka/README.md
index e3a36a9f0..0a2562fac 100644
--- a/charts/bitnami/kafka/README.md
+++ b/charts/bitnami/kafka/README.md
@@ -82,7 +82,7 @@ The command removes all the Kubernetes components associated with the chart and
 | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
 | `image.registry`                      | Kafka image registry                                                                                                                                                                                       | `docker.io`           |
 | `image.repository`                    | Kafka image repository                                                                                                                                                                                     | `bitnami/kafka`       |
-| `image.tag`                           | Kafka image tag (immutable tags are recommended)                                                                                                                                                           | `3.5.1-debian-11-r35` |
+| `image.tag`                           | Kafka image tag (immutable tags are recommended)                                                                                                                                                           | `3.5.1-debian-11-r41` |
 | `image.digest`                        | Kafka image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                                      | `""`                  |
 | `image.pullPolicy`                    | Kafka image pull policy                                                                                                                                                                                    | `IfNotPresent`        |
 | `image.pullSecrets`                   | Specify docker-registry secret names as an array                                                                                                                                                           | `[]`                  |
@@ -91,6 +91,8 @@ The command removes all the Kubernetes components associated with the chart and
 | `config`                              | Configuration file for Kafka, rendered as a template. Auto-generated based on chart values when not specified.                                                                                             | `""`                  |
 | `existingConfigmap`                   | ConfigMap with Kafka Configuration                                                                                                                                                                         | `""`                  |
 | `extraConfig`                         | Additional configuration to be appended at the end of the generated Kafka configuration file.                                                                                                              | `""`                  |
+| `secretConfig`                        | Additional configuration to be appended at the end of the generated Kafka configuration file.                                                                                                              | `""`                  |
+| `existingSecretConfig`                | Secret with additonal configuration that will be appended to the end of the generated Kafka configuration file                                                                                             | `""`                  |
 | `log4j`                               | An optional log4j.properties file to overwrite the default of the Kafka brokers                                                                                                                            | `""`                  |
 | `existingLog4jConfigMap`              | The name of an existing ConfigMap containing a log4j.properties file                                                                                                                                       | `""`                  |
 | `heapOpts`                            | Kafka Java Heap size                                                                                                                                                                                       | `-Xmx1024m -Xms1024m` |
@@ -181,6 +183,8 @@ The command removes all the Kubernetes components associated with the chart and
 | `controller.config`                                            | Configuration file for Kafka controller-eligible nodes, rendered as a template. Auto-generated based on chart values when not specified.                                                      | `""`                      |
 | `controller.existingConfigmap`                                 | ConfigMap with Kafka Configuration for controller-eligible nodes.                                                                                                                             | `""`                      |
 | `controller.extraConfig`                                       | Additional configuration to be appended at the end of the generated Kafka controller-eligible nodes configuration file.                                                                       | `""`                      |
+| `controller.secretConfig`                                      | Additional configuration to be appended at the end of the generated Kafka controller-eligible nodes configuration file.                                                                       | `""`                      |
+| `controller.existingSecretConfig`                              | Secret with additonal configuration that will be appended to the end of the generated Kafka controller-eligible nodes configuration file                                                      | `""`                      |
 | `controller.heapOpts`                                          | Kafka Java Heap size for controller-eligible nodes                                                                                                                                            | `-Xmx1024m -Xms1024m`     |
 | `controller.command`                                           | Override Kafka container command                                                                                                                                                              | `[]`                      |
 | `controller.args`                                              | Override Kafka container arguments                                                                                                                                                            | `[]`                      |
@@ -277,6 +281,8 @@ The command removes all the Kubernetes components associated with the chart and
 | `broker.config`                                            | Configuration file for Kafka broker-only nodes, rendered as a template. Auto-generated based on chart values when not specified.                                                              | `""`                      |
 | `broker.existingConfigmap`                                 | ConfigMap with Kafka Configuration for broker-only nodes.                                                                                                                                     | `""`                      |
 | `broker.extraConfig`                                       | Additional configuration to be appended at the end of the generated Kafka broker-only nodes configuration file.                                                                               | `""`                      |
+| `broker.secretConfig`                                      | Additional configuration to be appended at the end of the generated Kafka broker-only nodes configuration file.                                                                               | `""`                      |
+| `broker.existingSecretConfig`                              | Secret with additonal configuration that will be appended to the end of the generated Kafka broker-only nodes configuration file                                                              | `""`                      |
 | `broker.heapOpts`                                          | Kafka Java Heap size for broker-only nodes                                                                                                                                                    | `-Xmx1024m -Xms1024m`     |
 | `broker.command`                                           | Override Kafka container command                                                                                                                                                              | `[]`                      |
 | `broker.args`                                              | Override Kafka container arguments                                                                                                                                                            | `[]`                      |
@@ -365,73 +371,73 @@ The command removes all the Kubernetes components associated with the chart and
 
 ### Traffic Exposure parameters
 
-| Name                                                         | Description                                                                                                                               | Value                  |
-| ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
-| `service.type`                                               | Kubernetes Service type                                                                                                                   | `ClusterIP`            |
-| `service.ports.client`                                       | Kafka svc port for client connections                                                                                                     | `9092`                 |
-| `service.ports.controller`                                   | Kafka svc port for controller connections. It is used if "kraft.enabled: true"                                                            | `9093`                 |
-| `service.ports.interbroker`                                  | Kafka svc port for inter-broker connections                                                                                               | `9094`                 |
-| `service.ports.external`                                     | Kafka svc port for external connections                                                                                                   | `9095`                 |
-| `service.extraPorts`                                         | Extra ports to expose in the Kafka service (normally used with the `sidecar` value)                                                       | `[]`                   |
-| `service.nodePorts.client`                                   | Node port for the Kafka client connections                                                                                                | `""`                   |
-| `service.nodePorts.external`                                 | Node port for the Kafka external connections                                                                                              | `""`                   |
-| `service.sessionAffinity`                                    | Control where client requests go, to the same pod or round-robin                                                                          | `None`                 |
-| `service.sessionAffinityConfig`                              | Additional settings for the sessionAffinity                                                                                               | `{}`                   |
-| `service.clusterIP`                                          | Kafka service Cluster IP                                                                                                                  | `""`                   |
-| `service.loadBalancerIP`                                     | Kafka service Load Balancer IP                                                                                                            | `""`                   |
-| `service.loadBalancerSourceRanges`                           | Kafka service Load Balancer sources                                                                                                       | `[]`                   |
-| `service.externalTrafficPolicy`                              | Kafka service external traffic policy                                                                                                     | `Cluster`              |
-| `service.annotations`                                        | Additional custom annotations for Kafka service                                                                                           | `{}`                   |
-| `service.headless.controller.annotations`                    | Annotations for the controller-eligible headless service.                                                                                 | `{}`                   |
-| `service.headless.controller.labels`                         | Labels for the controller-eligible headless service.                                                                                      | `{}`                   |
-| `service.headless.broker.annotations`                        | Annotations for the broker-only headless service.                                                                                         | `{}`                   |
-| `service.headless.broker.labels`                             | Labels for the broker-only headless service.                                                                                              | `{}`                   |
-| `externalAccess.enabled`                                     | Enable Kubernetes external cluster access to Kafka brokers                                                                                | `false`                |
-| `externalAccess.autoDiscovery.enabled`                       | Enable using an init container to auto-detect external IPs/ports by querying the K8s API                                                  | `false`                |
-| `externalAccess.autoDiscovery.image.registry`                | Init container auto-discovery image registry                                                                                              | `docker.io`            |
-| `externalAccess.autoDiscovery.image.repository`              | Init container auto-discovery image repository                                                                                            | `bitnami/kubectl`      |
-| `externalAccess.autoDiscovery.image.tag`                     | Init container auto-discovery image tag (immutable tags are recommended)                                                                  | `1.25.13-debian-11-r5` |
-| `externalAccess.autoDiscovery.image.digest`                  | Kubectl image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                   | `""`                   |
-| `externalAccess.autoDiscovery.image.pullPolicy`              | Init container auto-discovery image pull policy                                                                                           | `IfNotPresent`         |
-| `externalAccess.autoDiscovery.image.pullSecrets`             | Init container auto-discovery image pull secrets                                                                                          | `[]`                   |
-| `externalAccess.autoDiscovery.resources.limits`              | The resources limits for the auto-discovery init container                                                                                | `{}`                   |
-| `externalAccess.autoDiscovery.resources.requests`            | The requested resources for the auto-discovery init container                                                                             | `{}`                   |
-| `externalAccess.controller.forceExpose`                      | If set to true, force exposing controller-eligible nodes although they are configured as controller-only nodes                            | `false`                |
-| `externalAccess.controller.service.type`                     | Kubernetes Service type for external access. It can be NodePort, LoadBalancer or ClusterIP                                                | `LoadBalancer`         |
-| `externalAccess.controller.service.ports.external`           | Kafka port used for external access when service type is LoadBalancer                                                                     | `9094`                 |
-| `externalAccess.controller.service.loadBalancerIPs`          | Array of load balancer IPs for each Kafka broker. Length must be the same as replicaCount                                                 | `[]`                   |
-| `externalAccess.controller.service.loadBalancerNames`        | Array of load balancer Names for each Kafka broker. Length must be the same as replicaCount                                               | `[]`                   |
-| `externalAccess.controller.service.loadBalancerAnnotations`  | Array of load balancer annotations for each Kafka broker. Length must be the same as replicaCount                                         | `[]`                   |
-| `externalAccess.controller.service.loadBalancerSourceRanges` | Address(es) that are allowed when service is LoadBalancer                                                                                 | `[]`                   |
-| `externalAccess.controller.service.nodePorts`                | Array of node ports used for each Kafka broker. Length must be the same as replicaCount                                                   | `[]`                   |
-| `externalAccess.controller.service.externalIPs`              | Use distinct service host IPs to configure Kafka external listener when service type is NodePort. Length must be the same as replicaCount | `[]`                   |
-| `externalAccess.controller.service.useHostIPs`               | Use service host IPs to configure Kafka external listener when service type is NodePort                                                   | `false`                |
-| `externalAccess.controller.service.usePodIPs`                | using the MY_POD_IP address for external access.                                                                                          | `false`                |
-| `externalAccess.controller.service.domain`                   | Domain or external ip used to configure Kafka external listener when service type is NodePort or ClusterIP                                | `""`                   |
-| `externalAccess.controller.service.publishNotReadyAddresses` | Indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready                  | `false`                |
-| `externalAccess.controller.service.labels`                   | Service labels for external access                                                                                                        | `{}`                   |
-| `externalAccess.controller.service.annotations`              | Service annotations for external access                                                                                                   | `{}`                   |
-| `externalAccess.controller.service.extraPorts`               | Extra ports to expose in the Kafka external service                                                                                       | `[]`                   |
-| `externalAccess.broker.service.type`                         | Kubernetes Service type for external access. It can be NodePort, LoadBalancer or ClusterIP                                                | `LoadBalancer`         |
-| `externalAccess.broker.service.ports.external`               | Kafka port used for external access when service type is LoadBalancer                                                                     | `9094`                 |
-| `externalAccess.broker.service.loadBalancerIPs`              | Array of load balancer IPs for each Kafka broker. Length must be the same as replicaCount                                                 | `[]`                   |
-| `externalAccess.broker.service.loadBalancerNames`            | Array of load balancer Names for each Kafka broker. Length must be the same as replicaCount                                               | `[]`                   |
-| `externalAccess.broker.service.loadBalancerAnnotations`      | Array of load balancer annotations for each Kafka broker. Length must be the same as replicaCount                                         | `[]`                   |
-| `externalAccess.broker.service.loadBalancerSourceRanges`     | Address(es) that are allowed when service is LoadBalancer                                                                                 | `[]`                   |
-| `externalAccess.broker.service.nodePorts`                    | Array of node ports used for each Kafka broker. Length must be the same as replicaCount                                                   | `[]`                   |
-| `externalAccess.broker.service.externalIPs`                  | Use distinct service host IPs to configure Kafka external listener when service type is NodePort. Length must be the same as replicaCount | `[]`                   |
-| `externalAccess.broker.service.useHostIPs`                   | Use service host IPs to configure Kafka external listener when service type is NodePort                                                   | `false`                |
-| `externalAccess.broker.service.usePodIPs`                    | using the MY_POD_IP address for external access.                                                                                          | `false`                |
-| `externalAccess.broker.service.domain`                       | Domain or external ip used to configure Kafka external listener when service type is NodePort or ClusterIP                                | `""`                   |
-| `externalAccess.broker.service.publishNotReadyAddresses`     | Indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready                  | `false`                |
-| `externalAccess.broker.service.labels`                       | Service labels for external access                                                                                                        | `{}`                   |
-| `externalAccess.broker.service.annotations`                  | Service annotations for external access                                                                                                   | `{}`                   |
-| `externalAccess.broker.service.extraPorts`                   | Extra ports to expose in the Kafka external service                                                                                       | `[]`                   |
-| `networkPolicy.enabled`                                      | Specifies whether a NetworkPolicy should be created                                                                                       | `false`                |
-| `networkPolicy.allowExternal`                                | Don't require client label for connections                                                                                                | `true`                 |
-| `networkPolicy.explicitNamespacesSelector`                   | A Kubernetes LabelSelector to explicitly select namespaces from which traffic could be allowed                                            | `{}`                   |
-| `networkPolicy.externalAccess.from`                          | customize the from section for External Access on tcp-external port                                                                       | `[]`                   |
-| `networkPolicy.egressRules.customRules`                      | Custom network policy rule                                                                                                                | `{}`                   |
+| Name                                                         | Description                                                                                                                               | Value                   |
+| ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |
+| `service.type`                                               | Kubernetes Service type                                                                                                                   | `ClusterIP`             |
+| `service.ports.client`                                       | Kafka svc port for client connections                                                                                                     | `9092`                  |
+| `service.ports.controller`                                   | Kafka svc port for controller connections. It is used if "kraft.enabled: true"                                                            | `9093`                  |
+| `service.ports.interbroker`                                  | Kafka svc port for inter-broker connections                                                                                               | `9094`                  |
+| `service.ports.external`                                     | Kafka svc port for external connections                                                                                                   | `9095`                  |
+| `service.extraPorts`                                         | Extra ports to expose in the Kafka service (normally used with the `sidecar` value)                                                       | `[]`                    |
+| `service.nodePorts.client`                                   | Node port for the Kafka client connections                                                                                                | `""`                    |
+| `service.nodePorts.external`                                 | Node port for the Kafka external connections                                                                                              | `""`                    |
+| `service.sessionAffinity`                                    | Control where client requests go, to the same pod or round-robin                                                                          | `None`                  |
+| `service.sessionAffinityConfig`                              | Additional settings for the sessionAffinity                                                                                               | `{}`                    |
+| `service.clusterIP`                                          | Kafka service Cluster IP                                                                                                                  | `""`                    |
+| `service.loadBalancerIP`                                     | Kafka service Load Balancer IP                                                                                                            | `""`                    |
+| `service.loadBalancerSourceRanges`                           | Kafka service Load Balancer sources                                                                                                       | `[]`                    |
+| `service.externalTrafficPolicy`                              | Kafka service external traffic policy                                                                                                     | `Cluster`               |
+| `service.annotations`                                        | Additional custom annotations for Kafka service                                                                                           | `{}`                    |
+| `service.headless.controller.annotations`                    | Annotations for the controller-eligible headless service.                                                                                 | `{}`                    |
+| `service.headless.controller.labels`                         | Labels for the controller-eligible headless service.                                                                                      | `{}`                    |
+| `service.headless.broker.annotations`                        | Annotations for the broker-only headless service.                                                                                         | `{}`                    |
+| `service.headless.broker.labels`                             | Labels for the broker-only headless service.                                                                                              | `{}`                    |
+| `externalAccess.enabled`                                     | Enable Kubernetes external cluster access to Kafka brokers                                                                                | `false`                 |
+| `externalAccess.autoDiscovery.enabled`                       | Enable using an init container to auto-detect external IPs/ports by querying the K8s API                                                  | `false`                 |
+| `externalAccess.autoDiscovery.image.registry`                | Init container auto-discovery image registry                                                                                              | `docker.io`             |
+| `externalAccess.autoDiscovery.image.repository`              | Init container auto-discovery image repository                                                                                            | `bitnami/kubectl`       |
+| `externalAccess.autoDiscovery.image.tag`                     | Init container auto-discovery image tag (immutable tags are recommended)                                                                  | `1.25.13-debian-11-r11` |
+| `externalAccess.autoDiscovery.image.digest`                  | Kubectl image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                   | `""`                    |
+| `externalAccess.autoDiscovery.image.pullPolicy`              | Init container auto-discovery image pull policy                                                                                           | `IfNotPresent`          |
+| `externalAccess.autoDiscovery.image.pullSecrets`             | Init container auto-discovery image pull secrets                                                                                          | `[]`                    |
+| `externalAccess.autoDiscovery.resources.limits`              | The resources limits for the auto-discovery init container                                                                                | `{}`                    |
+| `externalAccess.autoDiscovery.resources.requests`            | The requested resources for the auto-discovery init container                                                                             | `{}`                    |
+| `externalAccess.controller.forceExpose`                      | If set to true, force exposing controller-eligible nodes although they are configured as controller-only nodes                            | `false`                 |
+| `externalAccess.controller.service.type`                     | Kubernetes Service type for external access. It can be NodePort, LoadBalancer or ClusterIP                                                | `LoadBalancer`          |
+| `externalAccess.controller.service.ports.external`           | Kafka port used for external access when service type is LoadBalancer                                                                     | `9094`                  |
+| `externalAccess.controller.service.loadBalancerIPs`          | Array of load balancer IPs for each Kafka broker. Length must be the same as replicaCount                                                 | `[]`                    |
+| `externalAccess.controller.service.loadBalancerNames`        | Array of load balancer Names for each Kafka broker. Length must be the same as replicaCount                                               | `[]`                    |
+| `externalAccess.controller.service.loadBalancerAnnotations`  | Array of load balancer annotations for each Kafka broker. Length must be the same as replicaCount                                         | `[]`                    |
+| `externalAccess.controller.service.loadBalancerSourceRanges` | Address(es) that are allowed when service is LoadBalancer                                                                                 | `[]`                    |
+| `externalAccess.controller.service.nodePorts`                | Array of node ports used for each Kafka broker. Length must be the same as replicaCount                                                   | `[]`                    |
+| `externalAccess.controller.service.externalIPs`              | Use distinct service host IPs to configure Kafka external listener when service type is NodePort. Length must be the same as replicaCount | `[]`                    |
+| `externalAccess.controller.service.useHostIPs`               | Use service host IPs to configure Kafka external listener when service type is NodePort                                                   | `false`                 |
+| `externalAccess.controller.service.usePodIPs`                | using the MY_POD_IP address for external access.                                                                                          | `false`                 |
+| `externalAccess.controller.service.domain`                   | Domain or external ip used to configure Kafka external listener when service type is NodePort or ClusterIP                                | `""`                    |
+| `externalAccess.controller.service.publishNotReadyAddresses` | Indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready                  | `false`                 |
+| `externalAccess.controller.service.labels`                   | Service labels for external access                                                                                                        | `{}`                    |
+| `externalAccess.controller.service.annotations`              | Service annotations for external access                                                                                                   | `{}`                    |
+| `externalAccess.controller.service.extraPorts`               | Extra ports to expose in the Kafka external service                                                                                       | `[]`                    |
+| `externalAccess.broker.service.type`                         | Kubernetes Service type for external access. It can be NodePort, LoadBalancer or ClusterIP                                                | `LoadBalancer`          |
+| `externalAccess.broker.service.ports.external`               | Kafka port used for external access when service type is LoadBalancer                                                                     | `9094`                  |
+| `externalAccess.broker.service.loadBalancerIPs`              | Array of load balancer IPs for each Kafka broker. Length must be the same as replicaCount                                                 | `[]`                    |
+| `externalAccess.broker.service.loadBalancerNames`            | Array of load balancer Names for each Kafka broker. Length must be the same as replicaCount                                               | `[]`                    |
+| `externalAccess.broker.service.loadBalancerAnnotations`      | Array of load balancer annotations for each Kafka broker. Length must be the same as replicaCount                                         | `[]`                    |
+| `externalAccess.broker.service.loadBalancerSourceRanges`     | Address(es) that are allowed when service is LoadBalancer                                                                                 | `[]`                    |
+| `externalAccess.broker.service.nodePorts`                    | Array of node ports used for each Kafka broker. Length must be the same as replicaCount                                                   | `[]`                    |
+| `externalAccess.broker.service.externalIPs`                  | Use distinct service host IPs to configure Kafka external listener when service type is NodePort. Length must be the same as replicaCount | `[]`                    |
+| `externalAccess.broker.service.useHostIPs`                   | Use service host IPs to configure Kafka external listener when service type is NodePort                                                   | `false`                 |
+| `externalAccess.broker.service.usePodIPs`                    | using the MY_POD_IP address for external access.                                                                                          | `false`                 |
+| `externalAccess.broker.service.domain`                       | Domain or external ip used to configure Kafka external listener when service type is NodePort or ClusterIP                                | `""`                    |
+| `externalAccess.broker.service.publishNotReadyAddresses`     | Indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready                  | `false`                 |
+| `externalAccess.broker.service.labels`                       | Service labels for external access                                                                                                        | `{}`                    |
+| `externalAccess.broker.service.annotations`                  | Service annotations for external access                                                                                                   | `{}`                    |
+| `externalAccess.broker.service.extraPorts`                   | Extra ports to expose in the Kafka external service                                                                                       | `[]`                    |
+| `networkPolicy.enabled`                                      | Specifies whether a NetworkPolicy should be created                                                                                       | `false`                 |
+| `networkPolicy.allowExternal`                                | Don't require client label for connections                                                                                                | `true`                  |
+| `networkPolicy.explicitNamespacesSelector`                   | A Kubernetes LabelSelector to explicitly select namespaces from which traffic could be allowed                                            | `{}`                    |
+| `networkPolicy.externalAccess.from`                          | customize the from section for External Access on tcp-external port                                                                       | `[]`                    |
+| `networkPolicy.egressRules.customRules`                      | Custom network policy rule                                                                                                                | `{}`                    |
 
 ### Volume Permissions parameters
 
@@ -440,7 +446,7 @@ The command removes all the Kubernetes components associated with the chart and
 | `volumePermissions.enabled`                            | Enable init container that changes the owner and group of the persistent volume                                                   | `false`            |
 | `volumePermissions.image.registry`                     | Init container volume-permissions image registry                                                                                  | `docker.io`        |
 | `volumePermissions.image.repository`                   | Init container volume-permissions image repository                                                                                | `bitnami/os-shell` |
-| `volumePermissions.image.tag`                          | Init container volume-permissions image tag (immutable tags are recommended)                                                      | `11-debian-11-r51` |
+| `volumePermissions.image.tag`                          | Init container volume-permissions image tag (immutable tags are recommended)                                                      | `11-debian-11-r60` |
 | `volumePermissions.image.digest`                       | Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""`               |
 | `volumePermissions.image.pullPolicy`                   | Init container volume-permissions image pull policy                                                                               | `IfNotPresent`     |
 | `volumePermissions.image.pullSecrets`                  | Init container volume-permissions image pull secrets                                                                              | `[]`               |
@@ -465,7 +471,7 @@ The command removes all the Kubernetes components associated with the chart and
 | `metrics.kafka.enabled`                                           | Whether or not to create a standalone Kafka exporter to expose Kafka metrics                                                     | `false`                                                                                 |
 | `metrics.kafka.image.registry`                                    | Kafka exporter image registry                                                                                                    | `docker.io`                                                                             |
 | `metrics.kafka.image.repository`                                  | Kafka exporter image repository                                                                                                  | `bitnami/kafka-exporter`                                                                |
-| `metrics.kafka.image.tag`                                         | Kafka exporter image tag (immutable tags are recommended)                                                                        | `1.7.0-debian-11-r93`                                                                   |
+| `metrics.kafka.image.tag`                                         | Kafka exporter image tag (immutable tags are recommended)                                                                        | `1.7.0-debian-11-r102`                                                                  |
 | `metrics.kafka.image.digest`                                      | Kafka exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                   | `""`                                                                                    |
 | `metrics.kafka.image.pullPolicy`                                  | Kafka exporter image pull policy                                                                                                 | `IfNotPresent`                                                                          |
 | `metrics.kafka.image.pullSecrets`                                 | Specify docker-registry secret names as an array                                                                                 | `[]`                                                                                    |
@@ -519,7 +525,7 @@ The command removes all the Kubernetes components associated with the chart and
 | `metrics.jmx.kafkaJmxPort`                                        | JMX port where the exporter will collect metrics, exposed in the Kafka container.                                                | `5555`                                                                                  |
 | `metrics.jmx.image.registry`                                      | JMX exporter image registry                                                                                                      | `docker.io`                                                                             |
 | `metrics.jmx.image.repository`                                    | JMX exporter image repository                                                                                                    | `bitnami/jmx-exporter`                                                                  |
-| `metrics.jmx.image.tag`                                           | JMX exporter image tag (immutable tags are recommended)                                                                          | `0.19.0-debian-11-r57`                                                                  |
+| `metrics.jmx.image.tag`                                           | JMX exporter image tag (immutable tags are recommended)                                                                          | `0.19.0-debian-11-r66`                                                                  |
 | `metrics.jmx.image.digest`                                        | JMX exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                     | `""`                                                                                    |
 | `metrics.jmx.image.pullPolicy`                                    | JMX exporter image pull policy                                                                                                   | `IfNotPresent`                                                                          |
 | `metrics.jmx.image.pullSecrets`                                   | Specify docker-registry secret names as an array                                                                                 | `[]`                                                                                    |
diff --git a/charts/bitnami/kafka/charts/common/Chart.yaml b/charts/bitnami/kafka/charts/common/Chart.yaml
index 5669a24b3..e35c2d0e7 100644
--- a/charts/bitnami/kafka/charts/common/Chart.yaml
+++ b/charts/bitnami/kafka/charts/common/Chart.yaml
@@ -2,7 +2,7 @@ annotations:
   category: Infrastructure
   licenses: Apache-2.0
 apiVersion: v2
-appVersion: 2.9.1
+appVersion: 2.9.2
 description: A Library Helm Chart for grouping common logic between bitnami charts.
   This chart is not deployable by itself.
 home: https://bitnami.com
@@ -20,4 +20,4 @@ name: common
 sources:
 - https://github.com/bitnami/charts
 type: library
-version: 2.9.1
+version: 2.10.0
diff --git a/charts/bitnami/kafka/charts/common/templates/_tplvalues.tpl b/charts/bitnami/kafka/charts/common/templates/_tplvalues.tpl
index dc15f7fdc..a8ed7637e 100644
--- a/charts/bitnami/kafka/charts/common/templates/_tplvalues.tpl
+++ b/charts/bitnami/kafka/charts/common/templates/_tplvalues.tpl
@@ -11,17 +11,28 @@ Usage:
 {{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ "scope" $app ) }}
 */}}
 {{- define "common.tplvalues.render" -}}
-{{- if .scope }}
-  {{- if typeIs "string" .value }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" .value  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+{{- $value := typeIs "string" .value | ternary .value (.value | toYaml) }}
+{{- if contains "{{" (toJson .value) }}
+  {{- if .scope }}
+      {{- tpl (cat "{{- with $.RelativeScope -}}" $value "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
   {{- else }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" (.value | toYaml)  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+    {{- tpl $value .context }}
   {{- end }}
 {{- else }}
-  {{- if typeIs "string" .value }}
-    {{- tpl .value .context }}
-  {{- else }}
-    {{- tpl (.value | toYaml) .context }}
-  {{- end }}
+    {{- $value }}
+{{- end }}
 {{- end -}}
+
+{{/*
+Merge a list of values that contains template after rendering them.
+Merge precedence is consistent with http://masterminds.github.io/sprig/dicts.html#merge-mustmerge
+Usage:
+{{ include "common.tplvalues.merge" ( dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $ ) }}
+*/}}
+{{- define "common.tplvalues.merge" -}}
+{{- $dst := dict -}}
+{{- range .values -}}
+{{- $dst = include "common.tplvalues.render" (dict "value" . "context" $.context "scope" $.scope) | fromYaml | merge $dst -}}
+{{- end -}}
+{{ $dst | toYaml }}
 {{- end -}}
diff --git a/charts/bitnami/kafka/charts/zookeeper/Chart.lock b/charts/bitnami/kafka/charts/zookeeper/Chart.lock
index e9716f484..9c54bcfb7 100644
--- a/charts/bitnami/kafka/charts/zookeeper/Chart.lock
+++ b/charts/bitnami/kafka/charts/zookeeper/Chart.lock
@@ -1,6 +1,6 @@
 dependencies:
 - name: common
   repository: oci://registry-1.docker.io/bitnamicharts
-  version: 2.9.0
-digest: sha256:416ad278a896f0e9b51d5305bef5d875c7cca6fbb64b75e1f131b04763e2aff9
-generated: "2023-08-22T14:36:38.84686+02:00"
+  version: 2.9.2
+digest: sha256:0d1ed3ab5c6a7e3ab3bfaea47851d574aae674797326572c51719718026e1f63
+generated: "2023-08-31T16:47:39.182152921Z"
diff --git a/charts/bitnami/kafka/charts/zookeeper/Chart.yaml b/charts/bitnami/kafka/charts/zookeeper/Chart.yaml
index 20793df51..0ee7ef4e6 100644
--- a/charts/bitnami/kafka/charts/zookeeper/Chart.yaml
+++ b/charts/bitnami/kafka/charts/zookeeper/Chart.yaml
@@ -2,9 +2,9 @@ annotations:
   category: Infrastructure
   images: |
     - name: os-shell
-      image: docker.io/bitnami/os-shell:11-debian-11-r43
+      image: docker.io/bitnami/os-shell:11-debian-11-r51
     - name: zookeeper
-      image: docker.io/bitnami/zookeeper:3.9.0-debian-11-r1
+      image: docker.io/bitnami/zookeeper:3.9.0-debian-11-r11
   licenses: Apache-2.0
 apiVersion: v2
 appVersion: 3.9.0
@@ -26,4 +26,4 @@ maintainers:
 name: zookeeper
 sources:
 - https://github.com/bitnami/charts/tree/main/bitnami/zookeeper
-version: 12.1.1
+version: 12.1.2
diff --git a/charts/bitnami/kafka/charts/zookeeper/README.md b/charts/bitnami/kafka/charts/zookeeper/README.md
index ba1fd588f..b3bc29768 100644
--- a/charts/bitnami/kafka/charts/zookeeper/README.md
+++ b/charts/bitnami/kafka/charts/zookeeper/README.md
@@ -82,7 +82,7 @@ The command removes all the Kubernetes components associated with the chart and
 | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------- | ----------------------- |
 | `image.registry`              | ZooKeeper image registry                                                                                                   | `docker.io`             |
 | `image.repository`            | ZooKeeper image repository                                                                                                 | `bitnami/zookeeper`     |
-| `image.tag`                   | ZooKeeper image tag (immutable tags are recommended)                                                                       | `3.9.0-debian-11-r1`    |
+| `image.tag`                   | ZooKeeper image tag (immutable tags are recommended)                                                                       | `3.9.0-debian-11-r11`   |
 | `image.digest`                | ZooKeeper image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                  | `""`                    |
 | `image.pullPolicy`            | ZooKeeper image pull policy                                                                                                | `IfNotPresent`          |
 | `image.pullSecrets`           | Specify docker-registry secret names as an array                                                                           | `[]`                    |
@@ -248,7 +248,7 @@ The command removes all the Kubernetes components associated with the chart and
 | `volumePermissions.enabled`                            | Enable init container that changes the owner and group of the persistent volume                                                   | `false`            |
 | `volumePermissions.image.registry`                     | Init container volume-permissions image registry                                                                                  | `docker.io`        |
 | `volumePermissions.image.repository`                   | Init container volume-permissions image repository                                                                                | `bitnami/os-shell` |
-| `volumePermissions.image.tag`                          | Init container volume-permissions image tag (immutable tags are recommended)                                                      | `11-debian-11-r43` |
+| `volumePermissions.image.tag`                          | Init container volume-permissions image tag (immutable tags are recommended)                                                      | `11-debian-11-r51` |
 | `volumePermissions.image.digest`                       | Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""`               |
 | `volumePermissions.image.pullPolicy`                   | Init container volume-permissions image pull policy                                                                               | `IfNotPresent`     |
 | `volumePermissions.image.pullSecrets`                  | Init container volume-permissions image pull secrets                                                                              | `[]`               |
diff --git a/charts/bitnami/kafka/charts/zookeeper/charts/common/Chart.yaml b/charts/bitnami/kafka/charts/zookeeper/charts/common/Chart.yaml
index 644d2a798..67e9a92ce 100644
--- a/charts/bitnami/kafka/charts/zookeeper/charts/common/Chart.yaml
+++ b/charts/bitnami/kafka/charts/zookeeper/charts/common/Chart.yaml
@@ -2,7 +2,7 @@ annotations:
   category: Infrastructure
   licenses: Apache-2.0
 apiVersion: v2
-appVersion: 2.9.0
+appVersion: 2.9.2
 description: A Library Helm Chart for grouping common logic between bitnami charts.
   This chart is not deployable by itself.
 home: https://bitnami.com
@@ -20,4 +20,4 @@ name: common
 sources:
 - https://github.com/bitnami/charts
 type: library
-version: 2.9.0
+version: 2.9.2
diff --git a/charts/bitnami/kafka/charts/zookeeper/charts/common/templates/_affinities.tpl b/charts/bitnami/kafka/charts/zookeeper/charts/common/templates/_affinities.tpl
index b77534bb9..e85b1df45 100644
--- a/charts/bitnami/kafka/charts/zookeeper/charts/common/templates/_affinities.tpl
+++ b/charts/bitnami/kafka/charts/zookeeper/charts/common/templates/_affinities.tpl
@@ -60,12 +60,13 @@ Return a topologyKey definition
 
 {{/*
 Return a soft podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}}
+{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
 */}}
 {{- define "common.affinities.pods.soft" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
 preferredDuringSchedulingIgnoredDuringExecution:
   - podAffinityTerm:
       labelSelector:
@@ -78,16 +79,30 @@ preferredDuringSchedulingIgnoredDuringExecution:
           {{- end }}
       topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
     weight: 1
+  {{- range $extraPodAffinityTerms }}
+  - podAffinityTerm:
+      labelSelector:
+        matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 10 }}
+          {{- if not (empty $component) }}
+          {{ printf "app.kubernetes.io/component: %s" $component }}
+          {{- end }}
+          {{- range $key, $value := .extraMatchLabels }}
+          {{ $key }}: {{ $value | quote }}
+          {{- end }}
+      topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+    weight: {{ .weight | default 1 -}}
+  {{- end -}}
 {{- end -}}
 
 {{/*
 Return a hard podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}}
+{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
 */}}
 {{- define "common.affinities.pods.hard" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
 requiredDuringSchedulingIgnoredDuringExecution:
   - labelSelector:
       matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" .context )) | nindent 8 }}
@@ -98,6 +113,17 @@ requiredDuringSchedulingIgnoredDuringExecution:
         {{ $key }}: {{ $value | quote }}
         {{- end }}
     topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- range $extraPodAffinityTerms }}
+  - labelSelector:
+      matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 8 }}
+        {{- if not (empty $component) }}
+        {{ printf "app.kubernetes.io/component: %s" $component }}
+        {{- end }}
+        {{- range $key, $value := .extraMatchLabels }}
+        {{ $key }}: {{ $value | quote }}
+        {{- end }}
+    topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- end -}}
 {{- end -}}
 
 {{/*
diff --git a/charts/bitnami/kafka/charts/zookeeper/charts/common/templates/_tplvalues.tpl b/charts/bitnami/kafka/charts/zookeeper/charts/common/templates/_tplvalues.tpl
index dc15f7fdc..edf99392c 100644
--- a/charts/bitnami/kafka/charts/zookeeper/charts/common/templates/_tplvalues.tpl
+++ b/charts/bitnami/kafka/charts/zookeeper/charts/common/templates/_tplvalues.tpl
@@ -11,17 +11,14 @@ Usage:
 {{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ "scope" $app ) }}
 */}}
 {{- define "common.tplvalues.render" -}}
-{{- if .scope }}
-  {{- if typeIs "string" .value }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" .value  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+{{- $value := typeIs "string" .value | ternary .value (.value | toYaml) }}
+{{- if contains "{{" (toJson .value) }}
+  {{- if .scope }}
+      {{- tpl (cat "{{- with $.RelativeScope -}}" $value "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
   {{- else }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" (.value | toYaml)  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+    {{- tpl $value .context }}
   {{- end }}
 {{- else }}
-  {{- if typeIs "string" .value }}
-    {{- tpl .value .context }}
-  {{- else }}
-    {{- tpl (.value | toYaml) .context }}
-  {{- end }}
-{{- end -}}
+    {{- $value }}
+{{- end }}
 {{- end -}}
diff --git a/charts/bitnami/kafka/charts/zookeeper/values.yaml b/charts/bitnami/kafka/charts/zookeeper/values.yaml
index 89f885db5..7e6ebbe11 100644
--- a/charts/bitnami/kafka/charts/zookeeper/values.yaml
+++ b/charts/bitnami/kafka/charts/zookeeper/values.yaml
@@ -79,7 +79,7 @@ diagnosticMode:
 image:
   registry: docker.io
   repository: bitnami/zookeeper
-  tag: 3.9.0-debian-11-r1
+  tag: 3.9.0-debian-11-r11
   digest: ""
   ## Specify a imagePullPolicy
   ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
@@ -663,7 +663,7 @@ volumePermissions:
   image:
     registry: docker.io
     repository: bitnami/os-shell
-    tag: 11-debian-11-r43
+    tag: 11-debian-11-r51
     digest: ""
     pullPolicy: IfNotPresent
     ## Optionally specify an array of imagePullSecrets.
diff --git a/charts/bitnami/kafka/templates/_helpers.tpl b/charts/bitnami/kafka/templates/_helpers.tpl
index 6d73466b2..a5a83c675 100644
--- a/charts/bitnami/kafka/templates/_helpers.tpl
+++ b/charts/bitnami/kafka/templates/_helpers.tpl
@@ -285,6 +285,31 @@ Return the Kafka controller-eligible configuration configmap
 {{- end -}}
 {{- end -}}
 
+{{/*
+Return the Kafka controller-eligible secret configuration
+*/}}
+{{- define "kafka.controller.secretConfigName" -}}
+{{- if .Values.controller.existingSecretConfig -}}
+    {{- include "common.tplvalues.render" (dict "value" .Values.controller.existingSecretConfig "context" $) -}}
+{{- else if .Values.existingSecretConfig -}}
+    {{- include "common.tplvalues.render" (dict "value" .Values.existingSecretConfig "context" $) -}}
+{{- else -}}
+    {{- printf "%s-controller-secret-configuration" (include "common.names.fullname" .) -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the Kafka controller-eligible secret configuration values 
+*/}}
+{{- define "kafka.controller.secretConfig" -}}
+{{- if .Values.secretConfig }}
+{{- include "common.tplvalues.render" ( dict "value" .Values.secretConfig "context" $ ) }}
+{{- end }}
+{{- if .Values.controller.secretConfig }}
+{{- include "common.tplvalues.render" ( dict "value" .Values.controller.secretConfig "context" $ ) }}
+{{- end }}
+{{- end -}}
+
 {{/*
 Return true if a configmap object should be created for controller-eligible pods
 */}}
@@ -294,6 +319,23 @@ Return true if a configmap object should be created for controller-eligible pods
 {{- end -}}
 {{- end -}}
 
+{{/*
+Return true if a secret object with config should be created for controller-eligible pods
+*/}}
+{{- define "kafka.controller.createSecretConfig" -}}
+{{- if and (or .Values.controller.secretConfig .Values.secretConfig) (and (not .Values.controller.existingSecretConfig) (not .Values.existingSecretConfig)) }}
+    {{- true -}}
+{{- end -}}
+{{- end -}}
+{{/*
+Return true if a secret object with config exists for controller-eligible pods
+*/}}
+{{- define "kafka.controller.secretConfigExists" -}}
+{{- if or .Values.controller.secretConfig .Values.secretConfig .Values.controller.existingSecretConfig .Values.existingSecretConfig }}
+    {{- true -}}
+{{- end -}}
+{{- end -}}
+
 {{/*
 Return the Kafka broker configuration configmap
 */}}
@@ -307,6 +349,31 @@ Return the Kafka broker configuration configmap
 {{- end -}}
 {{- end -}}
 
+{{/*
+Return the Kafka broker secret configuration
+*/}}
+{{- define "kafka.broker.secretConfigName" -}}
+{{- if .Values.broker.existingSecretConfig -}}
+    {{- include "common.tplvalues.render" (dict "value" .Values.broker.existingSecretConfig "context" $) -}}
+{{- else if .Values.existingSecretConfig -}}
+    {{- include "common.tplvalues.render" (dict "value" .Values.existingSecretConfig "context" $) -}}
+{{- else -}}
+    {{- printf "%s-broker-secret-configuration" (include "common.names.fullname" .) -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the Kafka broker secret configuration values 
+*/}}
+{{- define "kafka.broker.secretConfig" -}}
+{{- if .Values.secretConfig }}
+{{- include "common.tplvalues.render" ( dict "value" .Values.secretConfig "context" $ ) }}
+{{- end }}
+{{- if .Values.broker.secretConfig }}
+{{- include "common.tplvalues.render" ( dict "value" .Values.broker.secretConfig "context" $ ) }}
+{{- end }}
+{{- end -}}
+
 {{/*
 Return true if a configmap object should be created for broker pods
 */}}
@@ -316,6 +383,24 @@ Return true if a configmap object should be created for broker pods
 {{- end -}}
 {{- end -}}
 
+{{/*
+Return true if a secret object with config should be created for broker pods
+*/}}
+{{- define "kafka.broker.createSecretConfig" -}}
+{{- if and (or .Values.broker.secretConfig .Values.secretConfig) (and (not .Values.broker.existingSecretConfig) (not .Values.existingSecretConfig)) }}
+    {{- true -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return true if a secret object with config exists for broker pods
+*/}}
+{{- define "kafka.broker.secretConfigExists" -}}
+{{- if or .Values.broker.secretConfig .Values.secretConfig .Values.broker.existingSecretConfig .Values.existingSecretConfig }}
+    {{- true -}}
+{{- end -}}
+{{- end -}}
+
 {{/*
 Return the Kafka log4j ConfigMap name.
 */}}
@@ -747,6 +832,8 @@ Init container definition for Kafka initialization
       mountPath: /config
     - name: kafka-configmaps
       mountPath: /configmaps
+    - name: kafka-secret-config
+      mountPath: /secret-config
     - name: scripts
       mountPath: /scripts
     - name: tmp
diff --git a/charts/bitnami/kafka/templates/broker/config-secrets.yaml b/charts/bitnami/kafka/templates/broker/config-secrets.yaml
new file mode 100644
index 000000000..2965e7e17
--- /dev/null
+++ b/charts/bitnami/kafka/templates/broker/config-secrets.yaml
@@ -0,0 +1,25 @@
+{{- /*
+Copyright VMware, Inc.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- $replicaCount := int .Values.broker.replicaCount }}
+{{- if and (include "kafka.broker.createSecretConfig" .) (gt $replicaCount 0) }}
+{{- $secretName := printf "%s-broker-secret-configuration" (include "common.names.fullname" .) }}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ $secretName }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" . | nindent 4 }}
+    {{- if .Values.commonLabels }}
+    {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
+    {{- end }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+type: Opaque
+data: 
+  server-secret.properties: {{ include "kafka.broker.secretConfig" . | b64enc }}
+{{- end }}
+  
diff --git a/charts/bitnami/kafka/templates/broker/pdb.yaml b/charts/bitnami/kafka/templates/broker/pdb.yaml
index e4449b60c..585ca4f19 100644
--- a/charts/bitnami/kafka/templates/broker/pdb.yaml
+++ b/charts/bitnami/kafka/templates/broker/pdb.yaml
@@ -8,7 +8,7 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: {{ include "common.capabilities.policy.apiVersion" . }}
 kind: PodDisruptionBudget
 metadata:
-  name: {{ include "common.names.fullname" . }}
+  name: {{ printf "%s-broker" (include "common.names.fullname" .) }}
   namespace: {{ include "common.names.namespace" . | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: broker
@@ -23,7 +23,7 @@ spec:
   {{- if .Values.broker.pdb.maxUnavailable }}
   maxUnavailable: {{ .Values.broker.pdb.maxUnavailable }}
   {{- end }}
-  {{- $podLabels := merge .Values.broker.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.broker.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: broker
diff --git a/charts/bitnami/kafka/templates/broker/statefulset.yaml b/charts/bitnami/kafka/templates/broker/statefulset.yaml
index d899edb83..399600379 100644
--- a/charts/bitnami/kafka/templates/broker/statefulset.yaml
+++ b/charts/bitnami/kafka/templates/broker/statefulset.yaml
@@ -19,7 +19,7 @@ metadata:
 spec:
   podManagementPolicy: {{ .Values.broker.podManagementPolicy }}
   replicas: {{ .Values.broker.replicaCount }}
-  {{- $podLabels := merge .Values.broker.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.broker.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: broker
@@ -335,6 +335,13 @@ spec:
         - name: kafka-configmaps
           configMap:
             name: {{ include "kafka.broker.configmapName" . }}
+        - name: kafka-secret-config
+        {{- if (include "kafka.broker.secretConfigExists" .) }}
+          secret:
+            secretName: {{ include "kafka.broker.secretConfigName" . }}
+        {{- else }}
+          emptyDir: {}
+        {{- end }}
         - name: kafka-config
           emptyDir: {}
         - name: tmp
diff --git a/charts/bitnami/kafka/templates/broker/svc-external-access.yaml b/charts/bitnami/kafka/templates/broker/svc-external-access.yaml
index f781704c8..53ae586fe 100644
--- a/charts/bitnami/kafka/templates/broker/svc-external-access.yaml
+++ b/charts/bitnami/kafka/templates/broker/svc-external-access.yaml
@@ -13,7 +13,7 @@ kind: Service
 metadata:
   name: {{ printf "%s-%d-external" (include "common.names.fullname" $) $i | trunc 63 | trimSuffix "-" }}
   namespace: {{ include "common.names.namespace" $ | quote }}
-  {{- $labels := merge $.Values.externalAccess.broker.service.labels $.Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list $.Values.externalAccess.broker.service.labels $.Values.commonLabels ) "context" $ ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: kafka
     pod: {{ $targetPod }}
@@ -23,7 +23,7 @@ metadata:
     {{ include "common.tplvalues.render" ( dict "value" (index $.Values.externalAccess.broker.service.loadBalancerAnnotations $i) "context" $) | nindent 4 }}
     {{- end }}
     {{- if or $.Values.externalAccess.broker.service.annotations $.Values.commonAnnotations }}
-    {{- $annotations := merge $.Values.externalAccess.broker.service.annotations $.Values.commonAnnotations }}
+    {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list $.Values.externalAccess.broker.service.annotations $.Values.commonAnnotations ) "context" $ ) }}
     {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
     {{- end }}
   {{- end }}
@@ -53,7 +53,7 @@ spec:
   {{- if and (eq $.Values.externalAccess.broker.service.type "NodePort") (le (add $i 1) (len $.Values.externalAccess.broker.service.externalIPs)) }}
   externalIPs: [{{ index $.Values.externalAccess.broker.service.externalIPs $i | quote }}]
   {{- end }}
-  {{- $podLabels := merge $.Values.broker.podLabels $.Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list $.Values.broker.podLabels $.Values.commonLabels ) "context" $ ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/part-of: kafka
     app.kubernetes.io/component: broker
diff --git a/charts/bitnami/kafka/templates/broker/svc-headless.yaml b/charts/bitnami/kafka/templates/broker/svc-headless.yaml
index 1c04d8190..7c373e3b8 100644
--- a/charts/bitnami/kafka/templates/broker/svc-headless.yaml
+++ b/charts/bitnami/kafka/templates/broker/svc-headless.yaml
@@ -10,12 +10,12 @@ kind: Service
 metadata:
   name: {{ printf "%s-broker-headless" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }}
   namespace: {{ include "common.names.namespace" . | quote }}
-  {{- $labels := merge .Values.externalAccess.broker.service.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.externalAccess.broker.service.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: broker
     app.kubernetes.io/part-of: kafka
   {{- if or .Values.service.headless.broker.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.service.headless.broker.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.service.headless.broker.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -31,7 +31,7 @@ spec:
       port: {{ .Values.service.ports.client }}
       protocol: TCP
       targetPort: client
-  {{- $podLabels := merge .Values.broker.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.broker.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: broker
     app.kubernetes.io/part-of: kafka
diff --git a/charts/bitnami/kafka/templates/controller-eligible/config-secrets.yaml b/charts/bitnami/kafka/templates/controller-eligible/config-secrets.yaml
new file mode 100644
index 000000000..8eaa1ac56
--- /dev/null
+++ b/charts/bitnami/kafka/templates/controller-eligible/config-secrets.yaml
@@ -0,0 +1,25 @@
+{{- /*
+Copyright VMware, Inc.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- $replicaCount := int .Values.controller.replicaCount }}
+{{- if and (include "kafka.controller.createSecretConfig" .) (gt $replicaCount 0) }}
+{{- $secretName := printf "%s-controller-secret-configuration" (include "common.names.fullname" .) }}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ $secretName }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" . | nindent 4 }}
+    {{- if .Values.commonLabels }}
+    {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
+    {{- end }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+type: Opaque
+data: 
+  server-secret.properties: {{ include "kafka.controller.secretConfig" . | b64enc }}
+{{- end }}
+  
diff --git a/charts/bitnami/kafka/templates/controller-eligible/pdb.yaml b/charts/bitnami/kafka/templates/controller-eligible/pdb.yaml
index 6977704cd..4e4cd06e9 100644
--- a/charts/bitnami/kafka/templates/controller-eligible/pdb.yaml
+++ b/charts/bitnami/kafka/templates/controller-eligible/pdb.yaml
@@ -23,9 +23,9 @@ spec:
   {{- if .Values.controller.pdb.maxUnavailable }}
   maxUnavailable: {{ .Values.controller.pdb.maxUnavailable }}
   {{- end }}
-  {{- $podLabels := merge .Values.controller.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.controller.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
-      app.kubernetes.io/component: controller-only
+      app.kubernetes.io/component: controller-eligible
       app.kubernetes.io/part-of: kafka
 {{- end }}
diff --git a/charts/bitnami/kafka/templates/controller-eligible/statefulset.yaml b/charts/bitnami/kafka/templates/controller-eligible/statefulset.yaml
index 80ddc3727..3d7749c1c 100644
--- a/charts/bitnami/kafka/templates/controller-eligible/statefulset.yaml
+++ b/charts/bitnami/kafka/templates/controller-eligible/statefulset.yaml
@@ -19,7 +19,7 @@ metadata:
 spec:
   podManagementPolicy: {{ .Values.controller.podManagementPolicy }}
   replicas: {{ .Values.controller.replicaCount }}
-  {{- $podLabels := merge .Values.controller.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.controller.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: controller-eligible
@@ -328,6 +328,13 @@ spec:
         - name: kafka-configmaps
           configMap:
             name: {{ include "kafka.controller.configmapName" . }}
+        - name: kafka-secret-config
+        {{- if (include "kafka.controller.secretConfigExists" .) }}
+          secret:
+            secretName: {{ include "kafka.controller.secretConfigName" . }}
+        {{- else }}
+          emptyDir: {}
+        {{- end }}
         - name: kafka-config
           emptyDir: {}
         - name: tmp
diff --git a/charts/bitnami/kafka/templates/controller-eligible/svc-external-access.yaml b/charts/bitnami/kafka/templates/controller-eligible/svc-external-access.yaml
index f314ce98a..68f9854c7 100644
--- a/charts/bitnami/kafka/templates/controller-eligible/svc-external-access.yaml
+++ b/charts/bitnami/kafka/templates/controller-eligible/svc-external-access.yaml
@@ -14,7 +14,7 @@ kind: Service
 metadata:
   name: {{ printf "%s-controller-%d-external" $fullname $i | trunc 63 | trimSuffix "-" }}
   namespace: {{ include "common.names.namespace" $ | quote }}
-  {{- $labels := merge $.Values.externalAccess.controller.service.labels $.Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list $.Values.externalAccess.controller.service.labels $.Values.commonLabels ) "context" $ ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: kafka
     pod: {{ $targetPod }}
@@ -24,7 +24,7 @@ metadata:
     {{ include "common.tplvalues.render" ( dict "value" (index $.Values.externalAccess.controller.service.loadBalancerAnnotations $i) "context" $) | nindent 4 }}
     {{- end }}
     {{- if or $.Values.externalAccess.controller.service.annotations $.Values.commonAnnotations }}
-    {{- $annotations := merge $.Values.externalAccess.controller.service.annotations $.Values.commonAnnotations }}
+    {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list $.Values.externalAccess.controller.service.annotations $.Values.commonAnnotations ) "context" $ ) }}
     {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
     {{- end }}
   {{- end }}
@@ -54,7 +54,7 @@ spec:
   {{- if and (eq $.Values.externalAccess.controller.service.type "NodePort") (le (add $i 1) (len $.Values.externalAccess.controller.service.externalIPs)) }}
   externalIPs: [{{ index $.Values.externalAccess.controller.service.externalIPs $i | quote }}]
   {{- end }}
-  {{- $podLabels := merge $.Values.controller.podLabels $.Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list $.Values.controller.podLabels $.Values.commonLabels ) "context" $ ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/part-of: kafka
     app.kubernetes.io/component: controller-eligible
diff --git a/charts/bitnami/kafka/templates/controller-eligible/svc-headless.yaml b/charts/bitnami/kafka/templates/controller-eligible/svc-headless.yaml
index 91455df32..7d862254f 100644
--- a/charts/bitnami/kafka/templates/controller-eligible/svc-headless.yaml
+++ b/charts/bitnami/kafka/templates/controller-eligible/svc-headless.yaml
@@ -10,12 +10,12 @@ kind: Service
 metadata:
   name: {{ printf "%s-controller-headless" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }}
   namespace: {{ include "common.names.namespace" . | quote }}
-  {{- $labels := merge .Values.service.headless.controller.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.service.headless.controller.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: controller-eligible
     app.kubernetes.io/part-of: kafka
   {{- if or .Values.service.headless.controller.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.service.headless.controller.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.service.headless.controller.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -39,7 +39,7 @@ spec:
       port: {{ .Values.service.ports.controller }}
       targetPort: controller
     {{- end }}
-  {{- $podLabels := merge .Values.controller.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.controller.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: controller-eligible
     app.kubernetes.io/part-of: kafka
diff --git a/charts/bitnami/kafka/templates/metrics/deployment.yaml b/charts/bitnami/kafka/templates/metrics/deployment.yaml
index 16eb69f67..688f66bf0 100644
--- a/charts/bitnami/kafka/templates/metrics/deployment.yaml
+++ b/charts/bitnami/kafka/templates/metrics/deployment.yaml
@@ -20,7 +20,7 @@ metadata:
   {{- end }}
 spec:
   replicas: 1
-  {{- $podLabels := merge .Values.metrics.kafka.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.kafka.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: cluster-metrics
diff --git a/charts/bitnami/kafka/templates/metrics/jmx-servicemonitor.yaml b/charts/bitnami/kafka/templates/metrics/jmx-servicemonitor.yaml
index ddbae1d58..13ca96c1e 100644
--- a/charts/bitnami/kafka/templates/metrics/jmx-servicemonitor.yaml
+++ b/charts/bitnami/kafka/templates/metrics/jmx-servicemonitor.yaml
@@ -9,7 +9,7 @@ kind: ServiceMonitor
 metadata:
   name: {{ printf "%s-jmx-metrics" (include "common.names.fullname" .) }}
   namespace: {{ default (include "common.names.namespace" .) .Values.metrics.serviceMonitor.namespace | quote }}
-  {{- $labels := merge .Values.metrics.serviceMonitor.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics
   {{- if .Values.commonAnnotations }}
diff --git a/charts/bitnami/kafka/templates/metrics/jmx-svc.yaml b/charts/bitnami/kafka/templates/metrics/jmx-svc.yaml
index 3be835f44..0b123c2d0 100644
--- a/charts/bitnami/kafka/templates/metrics/jmx-svc.yaml
+++ b/charts/bitnami/kafka/templates/metrics/jmx-svc.yaml
@@ -12,7 +12,7 @@ metadata:
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics
   {{- if or .Values.metrics.jmx.service.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.metrics.jmx.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.jmx.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
diff --git a/charts/bitnami/kafka/templates/metrics/prometheusrule.yaml b/charts/bitnami/kafka/templates/metrics/prometheusrule.yaml
index ac26dd7d6..c758a39bf 100644
--- a/charts/bitnami/kafka/templates/metrics/prometheusrule.yaml
+++ b/charts/bitnami/kafka/templates/metrics/prometheusrule.yaml
@@ -9,7 +9,7 @@ kind: PrometheusRule
 metadata:
   name: {{ include "common.names.fullname" . }}
   namespace: {{ default (include "common.names.namespace" .) .Values.metrics.prometheusRule.namespace }}
-  {{- $labels := merge .Values.metrics.prometheusRule.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.prometheusRule.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics
   {{- if .Values.commonAnnotations }}
diff --git a/charts/bitnami/kafka/templates/metrics/servicemonitor.yaml b/charts/bitnami/kafka/templates/metrics/servicemonitor.yaml
index 61b70ab65..bb057243a 100644
--- a/charts/bitnami/kafka/templates/metrics/servicemonitor.yaml
+++ b/charts/bitnami/kafka/templates/metrics/servicemonitor.yaml
@@ -9,7 +9,7 @@ kind: ServiceMonitor
 metadata:
   name: {{ printf "%s-metrics" (include "common.names.fullname" .) }}
   namespace: {{ default (include "common.names.namespace" .) .Values.metrics.serviceMonitor.namespace | quote }}
-  {{- $labels := merge .Values.metrics.serviceMonitor.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: cluster-metrics
   {{- if .Values.commonAnnotations }}
diff --git a/charts/bitnami/kafka/templates/metrics/svc.yaml b/charts/bitnami/kafka/templates/metrics/svc.yaml
index d0c166366..5e4bf8114 100644
--- a/charts/bitnami/kafka/templates/metrics/svc.yaml
+++ b/charts/bitnami/kafka/templates/metrics/svc.yaml
@@ -12,7 +12,7 @@ metadata:
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: cluster-metrics
   {{- if or .Values.metrics.kafka.service.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.metrics.kafka.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.kafka.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -26,7 +26,7 @@ spec:
       port: {{ .Values.metrics.kafka.service.ports.metrics }}
       protocol: TCP
       targetPort: metrics
-  {{- $podLabels := merge .Values.metrics.kafka.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.kafka.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: cluster-metrics
 {{- end }}
diff --git a/charts/bitnami/kafka/templates/provisioning/job.yaml b/charts/bitnami/kafka/templates/provisioning/job.yaml
index daec23de6..adddad9fe 100644
--- a/charts/bitnami/kafka/templates/provisioning/job.yaml
+++ b/charts/bitnami/kafka/templates/provisioning/job.yaml
@@ -20,7 +20,7 @@ metadata:
 spec:
   template:
     metadata:
-      {{- $podLabels := merge .Values.provisioning.podLabels .Values.commonLabels }}
+      {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.provisioning.podLabels .Values.commonLabels ) "context" . ) }}
       labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }}
         app.kubernetes.io/component: kafka-provisioning
       {{- if .Values.provisioning.podAnnotations }}
diff --git a/charts/bitnami/kafka/templates/rbac/serviceaccount.yaml b/charts/bitnami/kafka/templates/rbac/serviceaccount.yaml
index 1d89f8fca..6b5166e4a 100644
--- a/charts/bitnami/kafka/templates/rbac/serviceaccount.yaml
+++ b/charts/bitnami/kafka/templates/rbac/serviceaccount.yaml
@@ -12,7 +12,7 @@ metadata:
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: kafka
   {{- if or .Values.serviceAccount.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.serviceAccount.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.serviceAccount.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
diff --git a/charts/bitnami/kafka/templates/scripts-configmap.yaml b/charts/bitnami/kafka/templates/scripts-configmap.yaml
index 599e6214f..316bb1ef9 100644
--- a/charts/bitnami/kafka/templates/scripts-configmap.yaml
+++ b/charts/bitnami/kafka/templates/scripts-configmap.yaml
@@ -140,6 +140,13 @@ data:
       sed -i "s/$placeholder/$password/g" "$KAFKA_CONFIG_FILE"
     }
 
+    append_file_to_kafka_conf() {
+        local file="${1:?missing source file}"
+        local conf="${2:?missing kafka conf file}"
+
+        cat "$1" >> "$2"
+    }
+
     configure_external_access() {
       # Configure external hostname
       if [[ -f "/shared/external-host.txt" ]]; then
@@ -353,5 +360,8 @@ data:
     {{- if and .Values.tls.zookeeper.enabled .Values.tls.zookeeper.existingSecret }}
     configure_zookeeper_tls
     {{- end }}
+    if [ -f /secret-config/server-secret.properties ]; then
+      append_file_to_kafka_conf /secret-config/server-secret.properties $KAFKA_CONFIG_FILE
+    fi
     {{- include "common.tplvalues.render" ( dict "value" .Values.extraInit "context" $ ) | nindent 4 }}
 
diff --git a/charts/bitnami/kafka/templates/svc.yaml b/charts/bitnami/kafka/templates/svc.yaml
index 1ec93bdf9..a37ba6274 100644
--- a/charts/bitnami/kafka/templates/svc.yaml
+++ b/charts/bitnami/kafka/templates/svc.yaml
@@ -11,7 +11,7 @@ metadata:
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: kafka
   {{- if or .Values.service.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
diff --git a/charts/bitnami/kafka/values.yaml b/charts/bitnami/kafka/values.yaml
index 3513f07b7..abd7ebb61 100644
--- a/charts/bitnami/kafka/values.yaml
+++ b/charts/bitnami/kafka/values.yaml
@@ -80,7 +80,7 @@ diagnosticMode:
 image:
   registry: docker.io
   repository: bitnami/kafka
-  tag: 3.5.1-debian-11-r35
+  tag: 3.5.1-debian-11-r41
   digest: ""
   ## Specify a imagePullPolicy
   ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
@@ -111,6 +111,15 @@ existingConfigmap: ""
 ## @param extraConfig Additional configuration to be appended at the end of the generated Kafka configuration file.
 ##
 extraConfig: ""
+## @param secretConfig Additional configuration to be appended at the end of the generated Kafka configuration file.
+## This value will be stored in a secret.
+##
+secretConfig: ""
+## @param existingSecretConfig Secret with additonal configuration that will be appended to the end of the generated Kafka configuration file
+## The key for the configuration should be: server-secret.properties
+## NOTE: This will override secretConfig value
+##
+existingSecretConfig: ""
 ## @param log4j An optional log4j.properties file to overwrite the default of the Kafka brokers
 ## An optional log4j.properties file to overwrite the default of the Kafka brokers
 ## ref: https://github.com/apache/kafka/blob/trunk/config/log4j.properties
@@ -436,6 +445,15 @@ controller:
   ## @param controller.extraConfig Additional configuration to be appended at the end of the generated Kafka controller-eligible nodes configuration file.
   ##
   extraConfig: ""
+  ## @param controller.secretConfig Additional configuration to be appended at the end of the generated Kafka controller-eligible nodes configuration file.
+  ## This value will be stored in a secret.
+  ##
+  secretConfig: ""
+  ## @param controller.existingSecretConfig Secret with additonal configuration that will be appended to the end of the generated Kafka controller-eligible nodes configuration file
+  ## The key for the configuration should be: server-secret.properties
+  ## NOTE: This will override controller.secretConfig value
+  ##
+  existingSecretConfig: ""
   ## @param controller.heapOpts Kafka Java Heap size for controller-eligible nodes
   ##
   heapOpts: -Xmx1024m -Xms1024m
@@ -806,6 +824,15 @@ broker:
   ## @param broker.extraConfig Additional configuration to be appended at the end of the generated Kafka broker-only nodes configuration file.
   ##
   extraConfig: ""
+  ## @param broker.secretConfig Additional configuration to be appended at the end of the generated Kafka broker-only nodes configuration file.
+  ## This value will be stored in a secret.
+  ##
+  secretConfig: ""
+  ## @param broker.existingSecretConfig Secret with additonal configuration that will be appended to the end of the generated Kafka broker-only nodes configuration file
+  ## The key for the configuration should be: server-secret.properties
+  ## NOTE: This will override broker.secretConfig value
+  ##
+  existingSecretConfig: ""
   ## @param broker.heapOpts Kafka Java Heap size for broker-only nodes
   ##
   heapOpts: -Xmx1024m -Xms1024m
@@ -1255,7 +1282,7 @@ externalAccess:
     image:
       registry: docker.io
       repository: bitnami/kubectl
-      tag: 1.25.13-debian-11-r5
+      tag: 1.25.13-debian-11-r11
       digest: ""
       ## Specify a imagePullPolicy
       ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
@@ -1505,7 +1532,7 @@ volumePermissions:
   image:
     registry: docker.io
     repository: bitnami/os-shell
-    tag: 11-debian-11-r51
+    tag: 11-debian-11-r60
     digest: ""
     pullPolicy: IfNotPresent
     ## Optionally specify an array of imagePullSecrets.
@@ -1587,7 +1614,7 @@ metrics:
     image:
       registry: docker.io
       repository: bitnami/kafka-exporter
-      tag: 1.7.0-debian-11-r93
+      tag: 1.7.0-debian-11-r102
       digest: ""
       ## Specify a imagePullPolicy
       ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
@@ -1841,7 +1868,7 @@ metrics:
     image:
       registry: docker.io
       repository: bitnami/jmx-exporter
-      tag: 0.19.0-debian-11-r57
+      tag: 0.19.0-debian-11-r66
       digest: ""
       ## Specify a imagePullPolicy
       ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
diff --git a/charts/bitnami/mariadb/Chart.lock b/charts/bitnami/mariadb/Chart.lock
index 14201b03a..19147bb9d 100644
--- a/charts/bitnami/mariadb/Chart.lock
+++ b/charts/bitnami/mariadb/Chart.lock
@@ -1,6 +1,6 @@
 dependencies:
 - name: common
   repository: oci://registry-1.docker.io/bitnamicharts
-  version: 2.9.0
-digest: sha256:416ad278a896f0e9b51d5305bef5d875c7cca6fbb64b75e1f131b04763e2aff9
-generated: "2023-08-22T14:14:34.796011+02:00"
+  version: 2.10.0
+digest: sha256:023ded170632d04528f30332370f34fc8fb96efb2886a01d934cb3bd6e6d2e09
+generated: "2023-09-05T11:34:05.709018+02:00"
diff --git a/charts/bitnami/mariadb/Chart.yaml b/charts/bitnami/mariadb/Chart.yaml
index d862bd06c..dab635bba 100644
--- a/charts/bitnami/mariadb/Chart.yaml
+++ b/charts/bitnami/mariadb/Chart.yaml
@@ -37,4 +37,4 @@ maintainers:
 name: mariadb
 sources:
 - https://github.com/bitnami/charts/tree/main/bitnami/mariadb
-version: 13.1.2
+version: 13.1.3
diff --git a/charts/bitnami/mariadb/charts/common/Chart.yaml b/charts/bitnami/mariadb/charts/common/Chart.yaml
index 644d2a798..e35c2d0e7 100644
--- a/charts/bitnami/mariadb/charts/common/Chart.yaml
+++ b/charts/bitnami/mariadb/charts/common/Chart.yaml
@@ -2,7 +2,7 @@ annotations:
   category: Infrastructure
   licenses: Apache-2.0
 apiVersion: v2
-appVersion: 2.9.0
+appVersion: 2.9.2
 description: A Library Helm Chart for grouping common logic between bitnami charts.
   This chart is not deployable by itself.
 home: https://bitnami.com
@@ -20,4 +20,4 @@ name: common
 sources:
 - https://github.com/bitnami/charts
 type: library
-version: 2.9.0
+version: 2.10.0
diff --git a/charts/bitnami/mariadb/charts/common/templates/_affinities.tpl b/charts/bitnami/mariadb/charts/common/templates/_affinities.tpl
index b77534bb9..e85b1df45 100644
--- a/charts/bitnami/mariadb/charts/common/templates/_affinities.tpl
+++ b/charts/bitnami/mariadb/charts/common/templates/_affinities.tpl
@@ -60,12 +60,13 @@ Return a topologyKey definition
 
 {{/*
 Return a soft podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}}
+{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
 */}}
 {{- define "common.affinities.pods.soft" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
 preferredDuringSchedulingIgnoredDuringExecution:
   - podAffinityTerm:
       labelSelector:
@@ -78,16 +79,30 @@ preferredDuringSchedulingIgnoredDuringExecution:
           {{- end }}
       topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
     weight: 1
+  {{- range $extraPodAffinityTerms }}
+  - podAffinityTerm:
+      labelSelector:
+        matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 10 }}
+          {{- if not (empty $component) }}
+          {{ printf "app.kubernetes.io/component: %s" $component }}
+          {{- end }}
+          {{- range $key, $value := .extraMatchLabels }}
+          {{ $key }}: {{ $value | quote }}
+          {{- end }}
+      topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+    weight: {{ .weight | default 1 -}}
+  {{- end -}}
 {{- end -}}
 
 {{/*
 Return a hard podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}}
+{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
 */}}
 {{- define "common.affinities.pods.hard" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
 requiredDuringSchedulingIgnoredDuringExecution:
   - labelSelector:
       matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" .context )) | nindent 8 }}
@@ -98,6 +113,17 @@ requiredDuringSchedulingIgnoredDuringExecution:
         {{ $key }}: {{ $value | quote }}
         {{- end }}
     topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- range $extraPodAffinityTerms }}
+  - labelSelector:
+      matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 8 }}
+        {{- if not (empty $component) }}
+        {{ printf "app.kubernetes.io/component: %s" $component }}
+        {{- end }}
+        {{- range $key, $value := .extraMatchLabels }}
+        {{ $key }}: {{ $value | quote }}
+        {{- end }}
+    topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- end -}}
 {{- end -}}
 
 {{/*
diff --git a/charts/bitnami/mariadb/charts/common/templates/_tplvalues.tpl b/charts/bitnami/mariadb/charts/common/templates/_tplvalues.tpl
index dc15f7fdc..a8ed7637e 100644
--- a/charts/bitnami/mariadb/charts/common/templates/_tplvalues.tpl
+++ b/charts/bitnami/mariadb/charts/common/templates/_tplvalues.tpl
@@ -11,17 +11,28 @@ Usage:
 {{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ "scope" $app ) }}
 */}}
 {{- define "common.tplvalues.render" -}}
-{{- if .scope }}
-  {{- if typeIs "string" .value }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" .value  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+{{- $value := typeIs "string" .value | ternary .value (.value | toYaml) }}
+{{- if contains "{{" (toJson .value) }}
+  {{- if .scope }}
+      {{- tpl (cat "{{- with $.RelativeScope -}}" $value "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
   {{- else }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" (.value | toYaml)  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+    {{- tpl $value .context }}
   {{- end }}
 {{- else }}
-  {{- if typeIs "string" .value }}
-    {{- tpl .value .context }}
-  {{- else }}
-    {{- tpl (.value | toYaml) .context }}
-  {{- end }}
+    {{- $value }}
+{{- end }}
 {{- end -}}
+
+{{/*
+Merge a list of values that contains template after rendering them.
+Merge precedence is consistent with http://masterminds.github.io/sprig/dicts.html#merge-mustmerge
+Usage:
+{{ include "common.tplvalues.merge" ( dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $ ) }}
+*/}}
+{{- define "common.tplvalues.merge" -}}
+{{- $dst := dict -}}
+{{- range .values -}}
+{{- $dst = include "common.tplvalues.render" (dict "value" . "context" $.context "scope" $.scope) | fromYaml | merge $dst -}}
+{{- end -}}
+{{ $dst | toYaml }}
 {{- end -}}
diff --git a/charts/bitnami/mariadb/templates/primary/networkpolicy-ingress.yaml b/charts/bitnami/mariadb/templates/primary/networkpolicy-ingress.yaml
index 318a11943..b3e5e6720 100644
--- a/charts/bitnami/mariadb/templates/primary/networkpolicy-ingress.yaml
+++ b/charts/bitnami/mariadb/templates/primary/networkpolicy-ingress.yaml
@@ -14,7 +14,7 @@ metadata:
   annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
   {{- end }}
 spec:
-  {{- $primaryPodLabels := merge .Values.primary.podLabels .Values.commonLabels }}
+  {{- $primaryPodLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.podLabels .Values.commonLabels ) "context" . ) }}
   podSelector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $primaryPodLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: primary
@@ -47,7 +47,7 @@ spec:
     {{- end }}
     {{- if and .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled (eq .Values.architecture "replication") }}
     - from:
-        {{- $secondaryPodLabels := merge .Values.secondary.podLabels .Values.commonLabels }}
+        {{- $secondaryPodLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.secondary.podLabels .Values.commonLabels ) "context" . ) }}
         - podSelector:
             matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $secondaryPodLabels "context" $ ) | nindent 14 }}
               app.kubernetes.io/component: secondary
diff --git a/charts/bitnami/mariadb/templates/primary/pdb.yaml b/charts/bitnami/mariadb/templates/primary/pdb.yaml
index 0a9b21c71..d39e58156 100644
--- a/charts/bitnami/mariadb/templates/primary/pdb.yaml
+++ b/charts/bitnami/mariadb/templates/primary/pdb.yaml
@@ -21,7 +21,7 @@ spec:
   {{- if .Values.primary.pdb.maxUnavailable }}
   maxUnavailable: {{ .Values.primary.pdb.maxUnavailable }}
   {{- end }}
-  {{- $podLabels := merge .Values.primary.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: primary
diff --git a/charts/bitnami/mariadb/templates/primary/statefulset.yaml b/charts/bitnami/mariadb/templates/primary/statefulset.yaml
index ee6ab57ad..4b1369b67 100644
--- a/charts/bitnami/mariadb/templates/primary/statefulset.yaml
+++ b/charts/bitnami/mariadb/templates/primary/statefulset.yaml
@@ -16,7 +16,7 @@ metadata:
 spec:
   replicas: 1
   revisionHistoryLimit: {{ .Values.primary.revisionHistoryLimit }}
-  {{- $podLabels := merge .Values.primary.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: primary
@@ -371,7 +371,7 @@ spec:
   volumeClaimTemplates:
     - metadata:
         name: data
-        {{- $claimLabels := merge .Values.primary.persistence.labels .Values.commonLabels }}
+        {{- $claimLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.persistence.labels .Values.commonLabels ) "context" . ) }}
         labels: {{- include "common.labels.matchLabels" ( dict "customLabels" $claimLabels "context" $ ) | nindent 10 }}
           app.kubernetes.io/component: primary
         {{- if .Values.primary.persistence.annotations }}
diff --git a/charts/bitnami/mariadb/templates/primary/svc.yaml b/charts/bitnami/mariadb/templates/primary/svc.yaml
index adf3685e0..0191bdf1b 100644
--- a/charts/bitnami/mariadb/templates/primary/svc.yaml
+++ b/charts/bitnami/mariadb/templates/primary/svc.yaml
@@ -12,7 +12,7 @@ metadata:
     app.kubernetes.io/component: primary
   annotations:
     {{- if or .Values.primary.service.annotations .Values.commonAnnotations }}
-    {{- $annotations := merge .Values.primary.service.annotations .Values.commonAnnotations }}
+    {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.service.annotations .Values.commonAnnotations ) "context" . ) }}
     {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
     {{- end }}
     {{- if and .Values.metrics.enabled .Values.metrics.annotations }}
@@ -57,6 +57,6 @@ spec:
     {{- if .Values.primary.service.extraPorts }}
     {{- include "common.tplvalues.render" (dict "value" .Values.primary.service.extraPorts "context" $) | nindent 4 }}
     {{- end }}
-  {{- $podLabels := merge .Values.primary.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: primary
diff --git a/charts/bitnami/mariadb/templates/secondary/networkpolicy-ingress.yaml b/charts/bitnami/mariadb/templates/secondary/networkpolicy-ingress.yaml
index a0d4cf321..d4545af44 100644
--- a/charts/bitnami/mariadb/templates/secondary/networkpolicy-ingress.yaml
+++ b/charts/bitnami/mariadb/templates/secondary/networkpolicy-ingress.yaml
@@ -14,7 +14,7 @@ metadata:
   annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
   {{- end }}
 spec:
-  {{- $secondaryPodLabels := merge .Values.secondary.podLabels .Values.commonLabels }}
+  {{- $secondaryPodLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.secondary.podLabels .Values.commonLabels ) "context" . ) }}
   podSelector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $secondaryPodLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: secondary
diff --git a/charts/bitnami/mariadb/templates/secondary/pdb.yaml b/charts/bitnami/mariadb/templates/secondary/pdb.yaml
index d4163f19e..5893731d5 100644
--- a/charts/bitnami/mariadb/templates/secondary/pdb.yaml
+++ b/charts/bitnami/mariadb/templates/secondary/pdb.yaml
@@ -21,7 +21,7 @@ spec:
   {{- if .Values.secondary.pdb.maxUnavailable }}
   maxUnavailable: {{ .Values.secondary.pdb.maxUnavailable }}
   {{- end }}
-  {{- $podLabels := merge .Values.secondary.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.secondary.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: secondary
diff --git a/charts/bitnami/mariadb/templates/secondary/statefulset.yaml b/charts/bitnami/mariadb/templates/secondary/statefulset.yaml
index b5ef7a795..82d4de9dd 100644
--- a/charts/bitnami/mariadb/templates/secondary/statefulset.yaml
+++ b/charts/bitnami/mariadb/templates/secondary/statefulset.yaml
@@ -17,7 +17,7 @@ metadata:
 spec:
   replicas: {{ .Values.secondary.replicaCount }}
   revisionHistoryLimit: {{ .Values.secondary.revisionHistoryLimit }}
-  {{- $podLabels := merge .Values.secondary.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.secondary.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: secondary
@@ -341,7 +341,7 @@ spec:
   volumeClaimTemplates:
     - metadata:
         name: data
-        {{- $claimLabels := merge .Values.secondary.persistence.labels .Values.commonLabels }}
+        {{- $claimLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.secondary.persistence.labels .Values.commonLabels ) "context" . ) }}
         labels: {{- include "common.labels.matchLabels" ( dict "customLabels" $claimLabels "context" $ ) | nindent 10 }}
           app.kubernetes.io/component: secondary
         {{- if .Values.secondary.persistence.annotations }}
diff --git a/charts/bitnami/mariadb/templates/secondary/svc.yaml b/charts/bitnami/mariadb/templates/secondary/svc.yaml
index 36fd81042..9c21941bf 100644
--- a/charts/bitnami/mariadb/templates/secondary/svc.yaml
+++ b/charts/bitnami/mariadb/templates/secondary/svc.yaml
@@ -13,7 +13,7 @@ metadata:
     app.kubernetes.io/component: secondary
   annotations:
     {{- if or .Values.secondary.service.annotations .Values.commonAnnotations }}
-    {{- $annotations := merge .Values.secondary.service.annotations .Values.commonAnnotations }}
+    {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.secondary.service.annotations .Values.commonAnnotations ) "context" . ) }}
     {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
     {{- end }}
     {{- if and .Values.metrics.enabled .Values.metrics.annotations }}
@@ -58,7 +58,7 @@ spec:
     {{- if .Values.secondary.service.extraPorts }}
     {{- include "common.tplvalues.render" (dict "value" .Values.secondary.service.extraPorts "context" $) | nindent 4 }}
     {{- end }}
-  {{- $podLabels := merge .Values.secondary.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.secondary.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: secondary
 {{- end }}
diff --git a/charts/bitnami/mariadb/templates/serviceaccount.yaml b/charts/bitnami/mariadb/templates/serviceaccount.yaml
index eb00a4363..15cd63f15 100644
--- a/charts/bitnami/mariadb/templates/serviceaccount.yaml
+++ b/charts/bitnami/mariadb/templates/serviceaccount.yaml
@@ -11,7 +11,7 @@ metadata:
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if or .Values.serviceAccount.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.serviceAccount.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.serviceAccount.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
diff --git a/charts/bitnami/mariadb/templates/servicemonitor.yaml b/charts/bitnami/mariadb/templates/servicemonitor.yaml
index 3ab4bb68b..604d32b33 100644
--- a/charts/bitnami/mariadb/templates/servicemonitor.yaml
+++ b/charts/bitnami/mariadb/templates/servicemonitor.yaml
@@ -9,7 +9,7 @@ kind: ServiceMonitor
 metadata:
   name: {{ include "common.names.fullname" . }}
   namespace: {{ default .Release.Namespace .Values.metrics.prometheusRule.namespace | quote }}
-  {{- $labels := merge .Values.metrics.serviceMonitor.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
   {{- if .Values.commonAnnotations }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
diff --git a/charts/bitnami/postgresql/Chart.lock b/charts/bitnami/postgresql/Chart.lock
index 089248ded..ac198523d 100644
--- a/charts/bitnami/postgresql/Chart.lock
+++ b/charts/bitnami/postgresql/Chart.lock
@@ -1,6 +1,6 @@
 dependencies:
 - name: common
   repository: oci://registry-1.docker.io/bitnamicharts
-  version: 2.9.0
-digest: sha256:416ad278a896f0e9b51d5305bef5d875c7cca6fbb64b75e1f131b04763e2aff9
-generated: "2023-08-22T14:27:37.862238+02:00"
+  version: 2.10.0
+digest: sha256:023ded170632d04528f30332370f34fc8fb96efb2886a01d934cb3bd6e6d2e09
+generated: "2023-09-05T11:35:37.879743+02:00"
diff --git a/charts/bitnami/postgresql/Chart.yaml b/charts/bitnami/postgresql/Chart.yaml
index 9e86347cf..1e91db1e3 100644
--- a/charts/bitnami/postgresql/Chart.yaml
+++ b/charts/bitnami/postgresql/Chart.yaml
@@ -38,4 +38,4 @@ maintainers:
 name: postgresql
 sources:
 - https://github.com/bitnami/charts/tree/main/bitnami/postgresql
-version: 12.10.0
+version: 12.11.0
diff --git a/charts/bitnami/postgresql/charts/common/Chart.yaml b/charts/bitnami/postgresql/charts/common/Chart.yaml
index 644d2a798..e35c2d0e7 100644
--- a/charts/bitnami/postgresql/charts/common/Chart.yaml
+++ b/charts/bitnami/postgresql/charts/common/Chart.yaml
@@ -2,7 +2,7 @@ annotations:
   category: Infrastructure
   licenses: Apache-2.0
 apiVersion: v2
-appVersion: 2.9.0
+appVersion: 2.9.2
 description: A Library Helm Chart for grouping common logic between bitnami charts.
   This chart is not deployable by itself.
 home: https://bitnami.com
@@ -20,4 +20,4 @@ name: common
 sources:
 - https://github.com/bitnami/charts
 type: library
-version: 2.9.0
+version: 2.10.0
diff --git a/charts/bitnami/postgresql/charts/common/templates/_affinities.tpl b/charts/bitnami/postgresql/charts/common/templates/_affinities.tpl
index b77534bb9..e85b1df45 100644
--- a/charts/bitnami/postgresql/charts/common/templates/_affinities.tpl
+++ b/charts/bitnami/postgresql/charts/common/templates/_affinities.tpl
@@ -60,12 +60,13 @@ Return a topologyKey definition
 
 {{/*
 Return a soft podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}}
+{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
 */}}
 {{- define "common.affinities.pods.soft" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
 preferredDuringSchedulingIgnoredDuringExecution:
   - podAffinityTerm:
       labelSelector:
@@ -78,16 +79,30 @@ preferredDuringSchedulingIgnoredDuringExecution:
           {{- end }}
       topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
     weight: 1
+  {{- range $extraPodAffinityTerms }}
+  - podAffinityTerm:
+      labelSelector:
+        matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 10 }}
+          {{- if not (empty $component) }}
+          {{ printf "app.kubernetes.io/component: %s" $component }}
+          {{- end }}
+          {{- range $key, $value := .extraMatchLabels }}
+          {{ $key }}: {{ $value | quote }}
+          {{- end }}
+      topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+    weight: {{ .weight | default 1 -}}
+  {{- end -}}
 {{- end -}}
 
 {{/*
 Return a hard podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}}
+{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
 */}}
 {{- define "common.affinities.pods.hard" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
 requiredDuringSchedulingIgnoredDuringExecution:
   - labelSelector:
       matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" .context )) | nindent 8 }}
@@ -98,6 +113,17 @@ requiredDuringSchedulingIgnoredDuringExecution:
         {{ $key }}: {{ $value | quote }}
         {{- end }}
     topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- range $extraPodAffinityTerms }}
+  - labelSelector:
+      matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 8 }}
+        {{- if not (empty $component) }}
+        {{ printf "app.kubernetes.io/component: %s" $component }}
+        {{- end }}
+        {{- range $key, $value := .extraMatchLabels }}
+        {{ $key }}: {{ $value | quote }}
+        {{- end }}
+    topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- end -}}
 {{- end -}}
 
 {{/*
diff --git a/charts/bitnami/postgresql/charts/common/templates/_tplvalues.tpl b/charts/bitnami/postgresql/charts/common/templates/_tplvalues.tpl
index dc15f7fdc..a8ed7637e 100644
--- a/charts/bitnami/postgresql/charts/common/templates/_tplvalues.tpl
+++ b/charts/bitnami/postgresql/charts/common/templates/_tplvalues.tpl
@@ -11,17 +11,28 @@ Usage:
 {{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ "scope" $app ) }}
 */}}
 {{- define "common.tplvalues.render" -}}
-{{- if .scope }}
-  {{- if typeIs "string" .value }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" .value  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+{{- $value := typeIs "string" .value | ternary .value (.value | toYaml) }}
+{{- if contains "{{" (toJson .value) }}
+  {{- if .scope }}
+      {{- tpl (cat "{{- with $.RelativeScope -}}" $value "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
   {{- else }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" (.value | toYaml)  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+    {{- tpl $value .context }}
   {{- end }}
 {{- else }}
-  {{- if typeIs "string" .value }}
-    {{- tpl .value .context }}
-  {{- else }}
-    {{- tpl (.value | toYaml) .context }}
-  {{- end }}
+    {{- $value }}
+{{- end }}
 {{- end -}}
+
+{{/*
+Merge a list of values that contains template after rendering them.
+Merge precedence is consistent with http://masterminds.github.io/sprig/dicts.html#merge-mustmerge
+Usage:
+{{ include "common.tplvalues.merge" ( dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $ ) }}
+*/}}
+{{- define "common.tplvalues.merge" -}}
+{{- $dst := dict -}}
+{{- range .values -}}
+{{- $dst = include "common.tplvalues.render" (dict "value" . "context" $.context "scope" $.scope) | fromYaml | merge $dst -}}
+{{- end -}}
+{{ $dst | toYaml }}
 {{- end -}}
diff --git a/charts/bitnami/postgresql/templates/NOTES.txt b/charts/bitnami/postgresql/templates/NOTES.txt
index c996a005b..73c4a34e5 100644
--- a/charts/bitnami/postgresql/templates/NOTES.txt
+++ b/charts/bitnami/postgresql/templates/NOTES.txt
@@ -24,7 +24,7 @@ In order to replicate the container startup scripts execute this command:
 
 {{- else }}
 
-{{- $customUser := include "postgresql.username" . }}
+{{- $customUser := include "postgresql.v1.username" . }}
 {{- $postgresPassword := include "common.secrets.lookup" (dict "secret" (include "common.names.fullname" .) "key" .Values.auth.secretKeys.adminPasswordKey "defaultValue" (ternary .Values.auth.postgresPassword .Values.auth.password  (eq $customUser "postgres")) "context" $) -}}
 {{- $authEnabled := and (not (or .Values.global.postgresql.auth.existingSecret .Values.auth.existingSecret)) (or $postgresPassword .Values.auth.enablePostgresUser (and (not (empty $customUser)) (ne $customUser "postgres"))) }}
 {{- if not $authEnabled }}
@@ -32,13 +32,13 @@ In order to replicate the container startup scripts execute this command:
 WARNING: PostgreSQL has been configured without authentication, this is not recommended for production environments.
 {{- end }}
 
-PostgreSQL can be accessed via port {{ include "postgresql.service.port" . }} on the following DNS names from within your cluster:
+PostgreSQL can be accessed via port {{ include "postgresql.v1.service.port" . }} on the following DNS names from within your cluster:
 
-    {{ include "postgresql.primary.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local - Read/Write connection
+    {{ include "postgresql.v1.primary.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local - Read/Write connection
 
 {{- if eq .Values.architecture "replication" }}
 
-    {{ include "postgresql.readReplica.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local - Read only connection
+    {{ include "postgresql.v1.readReplica.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local - Read only connection
 
 {{- end }}
 
@@ -47,30 +47,30 @@ PostgreSQL can be accessed via port {{ include "postgresql.service.port" . }} on
 
 To get the password for "postgres" run:
 
-    export POSTGRES_ADMIN_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ include "postgresql.secretName" . }} -o jsonpath="{.data.{{include "postgresql.adminPasswordKey" .}}}" | base64 -d)
+    export POSTGRES_ADMIN_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ include "postgresql.v1.secretName" . }} -o jsonpath="{.data.{{include "postgresql.v1.adminPasswordKey" .}}}" | base64 -d)
 {{- end }}
 
 To get the password for "{{ $customUser }}" run:
 
-    export POSTGRES_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ include "postgresql.secretName" . }} -o jsonpath="{.data.{{include "postgresql.userPasswordKey" .}}}" | base64 -d)
+    export POSTGRES_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ include "postgresql.v1.secretName" . }} -o jsonpath="{.data.{{include "postgresql.v1.userPasswordKey" .}}}" | base64 -d)
 {{- else }}
 {{- if .Values.auth.enablePostgresUser }}
 
 To get the password for "{{ default "postgres" $customUser }}" run:
 
-    export POSTGRES_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ include "postgresql.secretName" . }} -o jsonpath="{.data.{{ ternary "password" (include "postgresql.adminPasswordKey" .)  (and (not (empty $customUser)) (ne $customUser "postgres")) }}}" | base64 -d)
+    export POSTGRES_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ include "postgresql.v1.secretName" . }} -o jsonpath="{.data.{{ ternary "password" (include "postgresql.v1.adminPasswordKey" .)  (and (not (empty $customUser)) (ne $customUser "postgres")) }}}" | base64 -d)
 {{- end }}
 {{- end }}
 
 To connect to your database run the following command:
     {{- if $authEnabled }}
 
-    kubectl run {{ include "common.names.fullname" . }}-client --rm --tty -i --restart='Never' --namespace {{ .Release.Namespace }} --image {{ include "postgresql.image" . }} --env="PGPASSWORD=$POSTGRES_PASSWORD" \
-      --command -- psql --host {{ include "postgresql.primary.fullname" . }} -U {{ default "postgres" $customUser }} -d {{- if include "postgresql.database" . }} {{ include "postgresql.database" . }}{{- else }} postgres{{- end }} -p {{ include "postgresql.service.port" . }}
+    kubectl run {{ include "common.names.fullname" . }}-client --rm --tty -i --restart='Never' --namespace {{ .Release.Namespace }} --image {{ include "postgresql.v1.image" . }} --env="PGPASSWORD=$POSTGRES_PASSWORD" \
+      --command -- psql --host {{ include "postgresql.v1.primary.fullname" . }} -U {{ default "postgres" $customUser }} -d {{- if include "postgresql.v1.database" . }} {{ include "postgresql.v1.database" . }}{{- else }} postgres{{- end }} -p {{ include "postgresql.v1.service.port" . }}
     {{- else }}
 
-    kubectl run {{ include "common.names.fullname" . }}-client --rm --tty -i --restart='Never' --namespace {{ .Release.Namespace }} --image {{ include "postgresql.image" . }} \
-      --command -- psql --host {{ include "postgresql.primary.fullname" . }} -d {{- if include "postgresql.database" . }} {{ include "postgresql.database" . }}{{- else }} postgres{{- end }} -p {{ include "postgresql.service.port" . }}
+    kubectl run {{ include "common.names.fullname" . }}-client --rm --tty -i --restart='Never' --namespace {{ .Release.Namespace }} --image {{ include "postgresql.v1.image" . }} \
+      --command -- psql --host {{ include "postgresql.v1.primary.fullname" . }} -d {{- if include "postgresql.v1.database" . }} {{ include "postgresql.v1.database" . }}{{- else }} postgres{{- end }} -p {{ include "postgresql.v1.service.port" . }}
     {{- end }}
 
     > NOTE: If you access the container using bash, make sure that you execute "/opt/bitnami/scripts/postgresql/entrypoint.sh /bin/bash" in order to avoid the error "psql: local user with ID {{ .Values.primary.containerSecurityContext.runAsUser }}} does not exist"
@@ -80,36 +80,36 @@ To connect to your database from outside the cluster execute the following comma
 {{- if contains "NodePort" .Values.primary.service.type }}
 
     export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
-    export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "postgresql.primary.fullname" . }})
+    export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "postgresql.v1.primary.fullname" . }})
     {{- if $authEnabled }}
-    PGPASSWORD="$POSTGRES_PASSWORD" psql --host $NODE_IP --port $NODE_PORT -U {{ default "postgres" $customUser }} -d {{- if include "postgresql.database" . }} {{ include "postgresql.database" . }}{{- else }} postgres{{- end }}
+    PGPASSWORD="$POSTGRES_PASSWORD" psql --host $NODE_IP --port $NODE_PORT -U {{ default "postgres" $customUser }} -d {{- if include "postgresql.v1.database" . }} {{ include "postgresql.v1.database" . }}{{- else }} postgres{{- end }}
     {{- else }}
-    psql --host $NODE_IP --port $NODE_PORT -d {{- if include "postgresql.database" . }} {{ include "postgresql.database" . }}{{- else }} postgres{{- end }}
+    psql --host $NODE_IP --port $NODE_PORT -d {{- if include "postgresql.v1.database" . }} {{ include "postgresql.v1.database" . }}{{- else }} postgres{{- end }}
     {{- end }}
 {{- else if contains "LoadBalancer" .Values.primary.service.type }}
 
   NOTE: It may take a few minutes for the LoadBalancer IP to be available.
-        Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ include "postgresql.primary.fullname" . }}'
+        Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ include "postgresql.v1.primary.fullname" . }}'
 
-    export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "postgresql.primary.fullname" . }} --template "{{ "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}" }}")
+    export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "postgresql.v1.primary.fullname" . }} --template "{{ "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}" }}")
     {{- if $authEnabled }}
-    PGPASSWORD="$POSTGRES_PASSWORD" psql --host $SERVICE_IP --port {{ include "postgresql.service.port" . }} -U {{ default "postgres" $customUser }} -d {{- if include "postgresql.database" . }} {{ include "postgresql.database" . }}{{- else }} postgres{{- end }}
+    PGPASSWORD="$POSTGRES_PASSWORD" psql --host $SERVICE_IP --port {{ include "postgresql.v1.service.port" . }} -U {{ default "postgres" $customUser }} -d {{- if include "postgresql.v1.database" . }} {{ include "postgresql.v1.database" . }}{{- else }} postgres{{- end }}
     {{- else }}
-    psql --host $SERVICE_IP --port {{ include "postgresql.service.port" . }} -d {{- if include "postgresql.database" . }} {{ include "postgresql.database" . }}{{- else }} postgres{{- end }}
+    psql --host $SERVICE_IP --port {{ include "postgresql.v1.service.port" . }} -d {{- if include "postgresql.v1.database" . }} {{ include "postgresql.v1.database" . }}{{- else }} postgres{{- end }}
     {{- end }}
 {{- else if contains "ClusterIP" .Values.primary.service.type }}
 
-    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ include "postgresql.primary.fullname" . }} {{ include "postgresql.service.port" . }}:{{ include "postgresql.service.port" . }} &
+    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ include "postgresql.v1.primary.fullname" . }} {{ include "postgresql.v1.service.port" . }}:{{ include "postgresql.v1.service.port" . }} &
     {{- if $authEnabled }}
-    PGPASSWORD="$POSTGRES_PASSWORD" psql --host 127.0.0.1 -U {{ default "postgres" $customUser }} -d {{- if include "postgresql.database" . }} {{ include "postgresql.database" . }}{{- else }} postgres{{- end }} -p {{ include "postgresql.service.port" . }}
+    PGPASSWORD="$POSTGRES_PASSWORD" psql --host 127.0.0.1 -U {{ default "postgres" $customUser }} -d {{- if include "postgresql.v1.database" . }} {{ include "postgresql.v1.database" . }}{{- else }} postgres{{- end }} -p {{ include "postgresql.v1.service.port" . }}
     {{- else }}
-    psql --host 127.0.0.1 -d {{- if include "postgresql.database" . }} {{ include "postgresql.database" . }}{{- else }} postgres{{- end }} -p {{ include "postgresql.service.port" . }}
+    psql --host 127.0.0.1 -d {{- if include "postgresql.v1.database" . }} {{ include "postgresql.v1.database" . }}{{- else }} postgres{{- end }} -p {{ include "postgresql.v1.service.port" . }}
     {{- end }}
 {{- end }}
 {{- end }}
 
 WARNING: The configured password will be ignored on new installation in case when previous PostgreSQL release was deleted through the helm command. In that case, old PVC will have an old password, and setting it through helm won't take effect. Deleting persistent volumes (PVs) will solve the issue.
 
-{{- include "postgresql.validateValues" . -}}
+{{- include "postgresql.v1.validateValues" . -}}
 {{- include "common.warnings.rollingTag" .Values.image -}}
 {{- include "common.warnings.rollingTag" .Values.volumePermissions.image }}
diff --git a/charts/bitnami/postgresql/templates/_helpers.tpl b/charts/bitnami/postgresql/templates/_helpers.tpl
index 368a0c67d..2c5c7f9f2 100644
--- a/charts/bitnami/postgresql/templates/_helpers.tpl
+++ b/charts/bitnami/postgresql/templates/_helpers.tpl
@@ -9,7 +9,7 @@ SPDX-License-Identifier: APACHE-2.0
 Create a default fully qualified app name for PostgreSQL Primary objects
 We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
 */}}
-{{- define "postgresql.primary.fullname" -}}
+{{- define "postgresql.v1.primary.fullname" -}}
 {{- if eq .Values.architecture "replication" -}}
     {{- printf "%s-%s" (include "common.names.fullname" .) .Values.primary.name | trunc 63 | trimSuffix "-" -}}
 {{- else -}}
@@ -21,7 +21,7 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
 Create a default fully qualified app name for PostgreSQL read-only replicas objects
 We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
 */}}
-{{- define "postgresql.readReplica.fullname" -}}
+{{- define "postgresql.v1.readReplica.fullname" -}}
 {{- printf "%s-%s" (include "common.names.fullname" .) .Values.readReplicas.name | trunc 63 | trimSuffix "-" -}}
 {{- end -}}
 
@@ -29,50 +29,50 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
 Create the default FQDN for PostgreSQL primary headless service
 We truncate at 63 chars because of the DNS naming spec.
 */}}
-{{- define "postgresql.primary.svc.headless" -}}
-{{- printf "%s-hl" (include "postgresql.primary.fullname" .) | trunc 63 | trimSuffix "-" -}}
+{{- define "postgresql.v1.primary.svc.headless" -}}
+{{- printf "%s-hl" (include "postgresql.v1.primary.fullname" .) | trunc 63 | trimSuffix "-" -}}
 {{- end -}}
 
 {{/*
 Create the default FQDN for PostgreSQL read-only replicas headless service
 We truncate at 63 chars because of the DNS naming spec.
 */}}
-{{- define "postgresql.readReplica.svc.headless" -}}
-{{- printf "%s-hl" (include "postgresql.readReplica.fullname" .) | trunc 63 | trimSuffix "-" -}}
+{{- define "postgresql.v1.readReplica.svc.headless" -}}
+{{- printf "%s-hl" (include "postgresql.v1.readReplica.fullname" .) | trunc 63 | trimSuffix "-" -}}
 {{- end -}}
 
 {{/*
 Return the proper PostgreSQL image name
 */}}
-{{- define "postgresql.image" -}}
+{{- define "postgresql.v1.image" -}}
 {{ include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) }}
 {{- end -}}
 
 {{/*
 Return the proper PostgreSQL metrics image name
 */}}
-{{- define "postgresql.metrics.image" -}}
+{{- define "postgresql.v1.metrics.image" -}}
 {{ include "common.images.image" (dict "imageRoot" .Values.metrics.image "global" .Values.global) }}
 {{- end -}}
 
 {{/*
 Return the proper image name (for the init container volume-permissions image)
 */}}
-{{- define "postgresql.volumePermissions.image" -}}
+{{- define "postgresql.v1.volumePermissions.image" -}}
 {{ include "common.images.image" (dict "imageRoot" .Values.volumePermissions.image "global" .Values.global) }}
 {{- end -}}
 
 {{/*
 Return the proper Docker Image Registry Secret Names
 */}}
-{{- define "postgresql.imagePullSecrets" -}}
+{{- define "postgresql.v1.imagePullSecrets" -}}
 {{ include "common.images.pullSecrets" (dict "images" (list .Values.image .Values.metrics.image .Values.volumePermissions.image) "global" .Values.global) }}
 {{- end -}}
 
 {{/*
 Return the name for a custom user to create
 */}}
-{{- define "postgresql.username" -}}
+{{- define "postgresql.v1.username" -}}
 {{- if .Values.global.postgresql.auth.username -}}
     {{- .Values.global.postgresql.auth.username -}}
 {{- else -}}
@@ -83,7 +83,7 @@ Return the name for a custom user to create
 {{/*
 Return the name for a custom database to create
 */}}
-{{- define "postgresql.database" -}}
+{{- define "postgresql.v1.database" -}}
 {{- if .Values.global.postgresql.auth.database -}}
     {{- printf "%s" (tpl .Values.global.postgresql.auth.database $) -}}
 {{- else if .Values.auth.database -}}
@@ -94,7 +94,7 @@ Return the name for a custom database to create
 {{/*
 Get the password secret.
 */}}
-{{- define "postgresql.secretName" -}}
+{{- define "postgresql.v1.secretName" -}}
 {{- if .Values.global.postgresql.auth.existingSecret -}}
     {{- printf "%s" (tpl .Values.global.postgresql.auth.existingSecret $) -}}
 {{- else if .Values.auth.existingSecret -}}
@@ -107,7 +107,7 @@ Get the password secret.
 {{/*
 Get the replication-password key.
 */}}
-{{- define "postgresql.replicationPasswordKey" -}}
+{{- define "postgresql.v1.replicationPasswordKey" -}}
 {{- if or .Values.global.postgresql.auth.existingSecret .Values.auth.existingSecret -}}
     {{- if .Values.global.postgresql.auth.secretKeys.replicationPasswordKey -}}
         {{- printf "%s" (tpl .Values.global.postgresql.auth.secretKeys.replicationPasswordKey $) -}}
@@ -124,7 +124,7 @@ Get the replication-password key.
 {{/*
 Get the admin-password key.
 */}}
-{{- define "postgresql.adminPasswordKey" -}}
+{{- define "postgresql.v1.adminPasswordKey" -}}
 {{- if or .Values.global.postgresql.auth.existingSecret .Values.auth.existingSecret -}}
     {{- if .Values.global.postgresql.auth.secretKeys.adminPasswordKey -}}
         {{- printf "%s" (tpl .Values.global.postgresql.auth.secretKeys.adminPasswordKey $) -}}
@@ -139,10 +139,10 @@ Get the admin-password key.
 {{/*
 Get the user-password key.
 */}}
-{{- define "postgresql.userPasswordKey" -}}
+{{- define "postgresql.v1.userPasswordKey" -}}
 {{- if or .Values.global.postgresql.auth.existingSecret .Values.auth.existingSecret -}}
-    {{- if or (empty (include "postgresql.username" .)) (eq (include "postgresql.username" .) "postgres") -}}
-        {{- printf "%s" (include "postgresql.adminPasswordKey" .) -}}
+    {{- if or (empty (include "postgresql.v1.username" .)) (eq (include "postgresql.v1.username" .) "postgres") -}}
+        {{- printf "%s" (include "postgresql.v1.adminPasswordKey" .) -}}
     {{- else -}}
         {{- if .Values.global.postgresql.auth.secretKeys.userPasswordKey -}}
             {{- printf "%s" (tpl .Values.global.postgresql.auth.secretKeys.userPasswordKey $) -}}
@@ -158,8 +158,8 @@ Get the user-password key.
 {{/*
 Return true if a secret object should be created
 */}}
-{{- define "postgresql.createSecret" -}}
-{{- $customUser := include "postgresql.username" . -}}
+{{- define "postgresql.v1.createSecret" -}}
+{{- $customUser := include "postgresql.v1.username" . -}}
 {{- $postgresPassword := include "common.secrets.lookup" (dict "secret" (include "common.names.fullname" .) "key" .Values.auth.secretKeys.adminPasswordKey "defaultValue" (ternary (coalesce .Values.global.postgresql.auth.postgresPassword .Values.auth.postgresPassword .Values.global.postgresql.auth.password .Values.auth.password) (coalesce .Values.global.postgresql.auth.postgresPassword .Values.auth.postgresPassword) (or (empty $customUser) (eq $customUser "postgres"))) "context" $) -}}
 {{- if and (not (or .Values.global.postgresql.auth.existingSecret .Values.auth.existingSecret)) (or $postgresPassword .Values.auth.enablePostgresUser (and (not (empty $customUser)) (ne $customUser "postgres")) (eq .Values.architecture "replication") (and .Values.ldap.enabled (or .Values.ldap.bind_password .Values.ldap.bindpw))) -}}
     {{- true -}}
@@ -169,7 +169,7 @@ Return true if a secret object should be created
 {{/*
 Return PostgreSQL service port
 */}}
-{{- define "postgresql.service.port" -}}
+{{- define "postgresql.v1.service.port" -}}
 {{- if .Values.global.postgresql.service.ports.postgresql -}}
     {{- .Values.global.postgresql.service.ports.postgresql -}}
 {{- else -}}
@@ -180,7 +180,7 @@ Return PostgreSQL service port
 {{/*
 Return PostgreSQL service port
 */}}
-{{- define "postgresql.readReplica.service.port" -}}
+{{- define "postgresql.v1.readReplica.service.port" -}}
 {{- if .Values.global.postgresql.service.ports.postgresql -}}
     {{- .Values.global.postgresql.service.ports.postgresql -}}
 {{- else -}}
@@ -191,18 +191,18 @@ Return PostgreSQL service port
 {{/*
 Get the PostgreSQL primary configuration ConfigMap name.
 */}}
-{{- define "postgresql.primary.configmapName" -}}
+{{- define "postgresql.v1.primary.configmapName" -}}
 {{- if .Values.primary.existingConfigmap -}}
     {{- printf "%s" (tpl .Values.primary.existingConfigmap $) -}}
 {{- else -}}
-    {{- printf "%s-configuration" (include "postgresql.primary.fullname" .) -}}
+    {{- printf "%s-configuration" (include "postgresql.v1.primary.fullname" .) -}}
 {{- end -}}
 {{- end -}}
 
 {{/*
 Return true if a configmap object should be created for PostgreSQL primary with the configuration
 */}}
-{{- define "postgresql.primary.createConfigmap" -}}
+{{- define "postgresql.v1.primary.createConfigmap" -}}
 {{- if and (or .Values.primary.configuration .Values.primary.pgHbaConfiguration) (not .Values.primary.existingConfigmap) -}}
     {{- true -}}
 {{- else -}}
@@ -212,25 +212,25 @@ Return true if a configmap object should be created for PostgreSQL primary with
 {{/*
 Get the PostgreSQL primary extended configuration ConfigMap name.
 */}}
-{{- define "postgresql.primary.extendedConfigmapName" -}}
+{{- define "postgresql.v1.primary.extendedConfigmapName" -}}
 {{- if .Values.primary.existingExtendedConfigmap -}}
     {{- printf "%s" (tpl .Values.primary.existingExtendedConfigmap $) -}}
 {{- else -}}
-    {{- printf "%s-extended-configuration" (include "postgresql.primary.fullname" .) -}}
+    {{- printf "%s-extended-configuration" (include "postgresql.v1.primary.fullname" .) -}}
 {{- end -}}
 {{- end -}}
 
 {{/*
 Get the PostgreSQL read replica extended configuration ConfigMap name.
 */}}
-{{- define "postgresql.readReplicas.extendedConfigmapName" -}}
-    {{- printf "%s-extended-configuration" (include "postgresql.readReplica.fullname" .) -}}
+{{- define "postgresql.v1.readReplicas.extendedConfigmapName" -}}
+    {{- printf "%s-extended-configuration" (include "postgresql.v1.readReplica.fullname" .) -}}
 {{- end -}}
 
 {{/*
 Return true if a configmap object should be created for PostgreSQL primary with the extended configuration
 */}}
-{{- define "postgresql.primary.createExtendedConfigmap" -}}
+{{- define "postgresql.v1.primary.createExtendedConfigmap" -}}
 {{- if and .Values.primary.extendedConfiguration (not .Values.primary.existingExtendedConfigmap) -}}
     {{- true -}}
 {{- else -}}
@@ -240,7 +240,7 @@ Return true if a configmap object should be created for PostgreSQL primary with
 {{/*
 Return true if a configmap object should be created for PostgreSQL read replica with the extended configuration
 */}}
-{{- define "postgresql.readReplicas.createExtendedConfigmap" -}}
+{{- define "postgresql.v1.readReplicas.createExtendedConfigmap" -}}
 {{- if .Values.readReplicas.extendedConfiguration -}}
     {{- true -}}
 {{- else -}}
@@ -250,7 +250,7 @@ Return true if a configmap object should be created for PostgreSQL read replica
 {{/*
  Create the name of the service account to use
  */}}
-{{- define "postgresql.serviceAccountName" -}}
+{{- define "postgresql.v1.serviceAccountName" -}}
 {{- if .Values.serviceAccount.create -}}
     {{ default (include "common.names.fullname" .) .Values.serviceAccount.name }}
 {{- else -}}
@@ -261,7 +261,7 @@ Return true if a configmap object should be created for PostgreSQL read replica
 {{/*
 Return true if a configmap should be mounted with PostgreSQL configuration
 */}}
-{{- define "postgresql.mountConfigurationCM" -}}
+{{- define "postgresql.v1.mountConfigurationCM" -}}
 {{- if or .Values.primary.configuration .Values.primary.pgHbaConfiguration .Values.primary.existingConfigmap -}}
     {{- true -}}
 {{- end -}}
@@ -270,18 +270,18 @@ Return true if a configmap should be mounted with PostgreSQL configuration
 {{/*
 Get the initialization scripts ConfigMap name.
 */}}
-{{- define "postgresql.initdb.scriptsCM" -}}
+{{- define "postgresql.v1.initdb.scriptsCM" -}}
 {{- if .Values.primary.initdb.scriptsConfigMap -}}
     {{- printf "%s" (tpl .Values.primary.initdb.scriptsConfigMap $) -}}
 {{- else -}}
-    {{- printf "%s-init-scripts" (include "postgresql.primary.fullname" .) -}}
+    {{- printf "%s-init-scripts" (include "postgresql.v1.primary.fullname" .) -}}
 {{- end -}}
 {{- end -}}
 
 {{/*
 Return true if TLS is enabled for LDAP connection
 */}}
-{{- define "postgresql.ldap.tls.enabled" -}}
+{{- define "postgresql.v1.ldap.tls.enabled" -}}
 {{- if and (kindIs "string" .Values.ldap.tls) (not (empty .Values.ldap.tls)) -}}
     {{- true -}}
 {{- else if and (kindIs "map" .Values.ldap.tls) .Values.ldap.tls.enabled -}}
@@ -292,13 +292,13 @@ Return true if TLS is enabled for LDAP connection
 {{/*
 Get the readiness probe command
 */}}
-{{- define "postgresql.readinessProbeCommand" -}}
-{{- $customUser := include "postgresql.username" . -}}
+{{- define "postgresql.v1.readinessProbeCommand" -}}
+{{- $customUser := include "postgresql.v1.username" . -}}
 - |
-{{- if (include "postgresql.database" .) }}
-  exec pg_isready -U {{ default "postgres" $customUser | quote }} -d "dbname={{ include "postgresql.database" . }} {{- if .Values.tls.enabled }} sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
+{{- if (include "postgresql.v1.database" .) }}
+  exec pg_isready -U {{ default "postgres" $customUser | quote }} -d "dbname={{ include "postgresql.v1.database" . }} {{- if .Values.tls.enabled }} sslcert={{ include "postgresql.v1.tlsCert" . }} sslkey={{ include "postgresql.v1.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
 {{- else }}
-  exec pg_isready -U {{ default "postgres" $customUser | quote }} {{- if .Values.tls.enabled }} -d "sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
+  exec pg_isready -U {{ default "postgres" $customUser | quote }} {{- if .Values.tls.enabled }} -d "sslcert={{ include "postgresql.v1.tlsCert" . }} sslkey={{ include "postgresql.v1.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
 {{- end }}
 {{- if contains "bitnami/" .Values.image.repository }}
   [ -f /opt/bitnami/postgresql/tmp/.initialized ] || [ -f /bitnami/postgresql/.initialized ]
@@ -308,10 +308,10 @@ Get the readiness probe command
 {{/*
 Compile all warnings into a single message, and call fail.
 */}}
-{{- define "postgresql.validateValues" -}}
+{{- define "postgresql.v1.validateValues" -}}
 {{- $messages := list -}}
-{{- $messages := append $messages (include "postgresql.validateValues.ldapConfigurationMethod" .) -}}
-{{- $messages := append $messages (include "postgresql.validateValues.psp" .) -}}
+{{- $messages := append $messages (include "postgresql.v1.validateValues.ldapConfigurationMethod" .) -}}
+{{- $messages := append $messages (include "postgresql.v1.validateValues.psp" .) -}}
 {{- $messages := without $messages "" -}}
 {{- $message := join "\n" $messages -}}
 
@@ -323,7 +323,7 @@ Compile all warnings into a single message, and call fail.
 {{/*
 Validate values of Postgresql - If ldap.url is used then you don't need the other settings for ldap
 */}}
-{{- define "postgresql.validateValues.ldapConfigurationMethod" -}}
+{{- define "postgresql.v1.validateValues.ldapConfigurationMethod" -}}
 {{- if and .Values.ldap.enabled (and (not (empty .Values.ldap.url)) (not (empty .Values.ldap.server))) -}}
 postgresql: ldap.url, ldap.server
     You cannot set both `ldap.url` and `ldap.server` at the same time.
@@ -335,7 +335,7 @@ postgresql: ldap.url, ldap.server
 {{/*
 Validate values of Postgresql - If PSP is enabled RBAC should be enabled too
 */}}
-{{- define "postgresql.validateValues.psp" -}}
+{{- define "postgresql.v1.validateValues.psp" -}}
 {{- if and .Values.psp.create (not .Values.rbac.create) -}}
 postgresql: psp.create, rbac.create
     RBAC should be enabled if PSP is enabled in order for PSP to work.
@@ -346,7 +346,7 @@ postgresql: psp.create, rbac.create
 {{/*
 Return the path to the cert file.
 */}}
-{{- define "postgresql.tlsCert" -}}
+{{- define "postgresql.v1.tlsCert" -}}
 {{- if .Values.tls.autoGenerated -}}
     {{- printf "/opt/bitnami/postgresql/certs/tls.crt" -}}
 {{- else -}}
@@ -357,7 +357,7 @@ Return the path to the cert file.
 {{/*
 Return the path to the cert key file.
 */}}
-{{- define "postgresql.tlsCertKey" -}}
+{{- define "postgresql.v1.tlsCertKey" -}}
 {{- if .Values.tls.autoGenerated -}}
     {{- printf "/opt/bitnami/postgresql/certs/tls.key" -}}
 {{- else -}}
@@ -368,7 +368,7 @@ Return the path to the cert key file.
 {{/*
 Return the path to the CA cert file.
 */}}
-{{- define "postgresql.tlsCACert" -}}
+{{- define "postgresql.v1.tlsCACert" -}}
 {{- if .Values.tls.autoGenerated -}}
     {{- printf "/opt/bitnami/postgresql/certs/ca.crt" -}}
 {{- else -}}
@@ -379,7 +379,7 @@ Return the path to the CA cert file.
 {{/*
 Return the path to the CRL file.
 */}}
-{{- define "postgresql.tlsCRL" -}}
+{{- define "postgresql.v1.tlsCRL" -}}
 {{- if .Values.tls.crlFilename -}}
 {{- printf "/opt/bitnami/postgresql/certs/%s" .Values.tls.crlFilename -}}
 {{- end -}}
@@ -388,7 +388,7 @@ Return the path to the CRL file.
 {{/*
 Return true if a TLS credentials secret object should be created
 */}}
-{{- define "postgresql.createTlsSecret" -}}
+{{- define "postgresql.v1.createTlsSecret" -}}
 {{- if and .Values.tls.autoGenerated (not .Values.tls.certificatesSecret) -}}
     {{- true -}}
 {{- end -}}
@@ -397,7 +397,7 @@ Return true if a TLS credentials secret object should be created
 {{/*
 Return the path to the CA cert file.
 */}}
-{{- define "postgresql.tlsSecretName" -}}
+{{- define "postgresql.v1.tlsSecretName" -}}
 {{- if .Values.tls.autoGenerated -}}
     {{- printf "%s-crt" (include "common.names.fullname" .) -}}
 {{- else -}}
diff --git a/charts/bitnami/postgresql/templates/backup/cronjob.yaml b/charts/bitnami/postgresql/templates/backup/cronjob.yaml
index d14bdd664..6fe99ec7a 100644
--- a/charts/bitnami/postgresql/templates/backup/cronjob.yaml
+++ b/charts/bitnami/postgresql/templates/backup/cronjob.yaml
@@ -4,16 +4,16 @@ SPDX-License-Identifier: APACHE-2.0
 */}}
 
 {{- if .Values.backup.enabled }}
-{{- $customUser := include "postgresql.username" . }}
+{{- $customUser := include "postgresql.v1.username" . }}
 apiVersion: batch/v1
 kind: CronJob
 metadata:
-  name: {{ include "postgresql.primary.fullname" . }}-pgdumpall
+  name: {{ include "postgresql.v1.primary.fullname" . }}-pgdumpall
   namespace: {{ .Release.Namespace | quote }}
-  {{- $labels := merge .Values.backup.cronjob.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.backup.cronjob.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: pg_dumpall
-  {{- $annotations := merge .Values.backup.cronjob.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.backup.cronjob.annotations .Values.commonAnnotations ) "context" . ) }}
   {{- if $annotations }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
@@ -39,8 +39,8 @@ spec:
           {{- end }}
         spec:
           containers:
-          - name: {{ include "postgresql.primary.fullname" . }}-pgdumpall
-            image: {{ include "postgresql.image" . }}
+          - name: {{ include "postgresql.v1.primary.fullname" . }}-pgdumpall
+            image: {{ include "postgresql.v1.image" . }}
             env:
               - name: PGUSER
               {{- if .Values.auth.enablePostgresUser }}
@@ -50,16 +50,16 @@ spec:
               {{- end }}
               {{- if .Values.auth.usePasswordFiles }}
               - name:  PGPASSFILE
-                value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.adminPasswordKey" .) }}
+                value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.v1.adminPasswordKey" .) }}
               {{- else }}
               - name: PGPASSWORD
                 valueFrom:
                   secretKeyRef:
-                    name: {{ include "postgresql.secretName" . }}
-                    key: {{ include "postgresql.adminPasswordKey" . }}
+                    name: {{ include "postgresql.v1.secretName" . }}
+                    key: {{ include "postgresql.v1.adminPasswordKey" . }}
               {{- end }}
               - name: PGHOST
-                value: {{ include "postgresql.primary.fullname" . }}
+                value: {{ include "postgresql.v1.primary.fullname" . }}
               - name: PGPORT
                 value: {{ .Values.containerPorts.postgresql | quote }}
               - name: PGDUMP_DIR
@@ -99,6 +99,6 @@ spec:
             {{- else }}
             - name: datadir
               persistentVolumeClaim:
-                claimName: {{ include "postgresql.primary.fullname" . }}-pgdumpall
+                claimName: {{ include "postgresql.v1.primary.fullname" . }}-pgdumpall
             {{- end }}
 {{- end }}
diff --git a/charts/bitnami/postgresql/templates/backup/pvc.yaml b/charts/bitnami/postgresql/templates/backup/pvc.yaml
index 7f86be1b2..6fe9cbf76 100644
--- a/charts/bitnami/postgresql/templates/backup/pvc.yaml
+++ b/charts/bitnami/postgresql/templates/backup/pvc.yaml
@@ -7,15 +7,15 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
-  name: {{ include "postgresql.primary.fullname" . }}-pgdumpall
+  name: {{ include "postgresql.v1.primary.fullname" . }}-pgdumpall
   namespace: {{ .Release.Namespace | quote }}
-  {{- $labels := merge .Values.backup.cronjob.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.backup.cronjob.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: pg_dumpall
   {{- if or .Values.backup.cronjob.annotations .Values.commonAnnotations .Values.backup.cronjob.storage.resourcePolicy }}
   annotations:
     {{- if or .Values.backup.cronjob.annotations .Values.commonAnnotations }}
-    {{- $annotations := merge .Values.backup.cronjob.annotations .Values.commonAnnotations }}
+    {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.backup.cronjob.annotations .Values.commonAnnotations ) "context" . ) }}
     {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
     {{- end }}
     {{- if .Values.backup.cronjob.storage.resourcePolicy }}
diff --git a/charts/bitnami/postgresql/templates/primary/configmap.yaml b/charts/bitnami/postgresql/templates/primary/configmap.yaml
index cc5e9cd87..7bb8b7f31 100644
--- a/charts/bitnami/postgresql/templates/primary/configmap.yaml
+++ b/charts/bitnami/postgresql/templates/primary/configmap.yaml
@@ -3,11 +3,11 @@ Copyright VMware, Inc.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
-{{- if (include "postgresql.primary.createConfigmap" .) }}
+{{- if (include "postgresql.v1.primary.createConfigmap" .) }}
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: {{ printf "%s-configuration" (include "postgresql.primary.fullname" .) }}
+  name: {{ printf "%s-configuration" (include "postgresql.v1.primary.fullname" .) }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: primary
diff --git a/charts/bitnami/postgresql/templates/primary/extended-configmap.yaml b/charts/bitnami/postgresql/templates/primary/extended-configmap.yaml
index 62e07fced..456f8ee55 100644
--- a/charts/bitnami/postgresql/templates/primary/extended-configmap.yaml
+++ b/charts/bitnami/postgresql/templates/primary/extended-configmap.yaml
@@ -3,11 +3,11 @@ Copyright VMware, Inc.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
-{{- if (include "postgresql.primary.createExtendedConfigmap" .) }}
+{{- if (include "postgresql.v1.primary.createExtendedConfigmap" .) }}
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: {{ printf "%s-extended-configuration" (include "postgresql.primary.fullname" .) }}
+  name: {{ printf "%s-extended-configuration" (include "postgresql.v1.primary.fullname" .) }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: primary
diff --git a/charts/bitnami/postgresql/templates/primary/initialization-configmap.yaml b/charts/bitnami/postgresql/templates/primary/initialization-configmap.yaml
index 8a359c663..80d804a0f 100644
--- a/charts/bitnami/postgresql/templates/primary/initialization-configmap.yaml
+++ b/charts/bitnami/postgresql/templates/primary/initialization-configmap.yaml
@@ -7,7 +7,7 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: {{ printf "%s-init-scripts" (include "postgresql.primary.fullname" .) }}
+  name: {{ printf "%s-init-scripts" (include "postgresql.v1.primary.fullname" .) }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if .Values.commonAnnotations }}
diff --git a/charts/bitnami/postgresql/templates/primary/metrics-configmap.yaml b/charts/bitnami/postgresql/templates/primary/metrics-configmap.yaml
index a219674fc..7da2bcd26 100644
--- a/charts/bitnami/postgresql/templates/primary/metrics-configmap.yaml
+++ b/charts/bitnami/postgresql/templates/primary/metrics-configmap.yaml
@@ -7,7 +7,7 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: {{ printf "%s-metrics" (include "postgresql.primary.fullname" .) }}
+  name: {{ printf "%s-metrics" (include "postgresql.v1.primary.fullname" .) }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if .Values.commonAnnotations }}
diff --git a/charts/bitnami/postgresql/templates/primary/metrics-svc.yaml b/charts/bitnami/postgresql/templates/primary/metrics-svc.yaml
index 07f2beb8f..3d94510c7 100644
--- a/charts/bitnami/postgresql/templates/primary/metrics-svc.yaml
+++ b/charts/bitnami/postgresql/templates/primary/metrics-svc.yaml
@@ -7,12 +7,12 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ printf "%s-metrics" (include "postgresql.primary.fullname" .) }}
+  name: {{ printf "%s-metrics" (include "postgresql.v1.primary.fullname" .) }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics
   {{- if or .Values.commonAnnotations .Values.metrics.service.annotations }}
-  {{- $annotations := merge .Values.metrics.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -25,7 +25,7 @@ spec:
     - name: http-metrics
       port: {{ .Values.metrics.service.ports.metrics }}
       targetPort: http-metrics
-  {{- $podLabels := merge .Values.primary.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: primary
 {{- end }}
diff --git a/charts/bitnami/postgresql/templates/primary/networkpolicy.yaml b/charts/bitnami/postgresql/templates/primary/networkpolicy.yaml
index 786c9e234..9da3fb491 100644
--- a/charts/bitnami/postgresql/templates/primary/networkpolicy.yaml
+++ b/charts/bitnami/postgresql/templates/primary/networkpolicy.yaml
@@ -7,7 +7,7 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }}
 kind: NetworkPolicy
 metadata:
-  name: {{ printf "%s-ingress" (include "postgresql.primary.fullname" .) }}
+  name: {{ printf "%s-ingress" (include "postgresql.v1.primary.fullname" .) }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: primary
@@ -15,7 +15,7 @@ metadata:
   annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
   {{- end }}
 spec:
-  {{- $primaryPodLabels := merge .Values.primary.podLabels .Values.commonLabels }}
+  {{- $primaryPodLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.podLabels .Values.commonLabels ) "context" . ) }}
   podSelector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $primaryPodLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: primary
@@ -48,7 +48,7 @@ spec:
     {{- end }}
     {{- if and .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled (eq .Values.architecture "replication") }}
     - from:
-        {{- $readPodLabels := merge .Values.readReplicas.podLabels .Values.commonLabels }}
+        {{- $readPodLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.readReplicas.podLabels .Values.commonLabels ) "context" . ) }}
         - podSelector:
             matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $readPodLabels "context" $ ) | nindent 14 }}
               app.kubernetes.io/component: read
diff --git a/charts/bitnami/postgresql/templates/primary/servicemonitor.yaml b/charts/bitnami/postgresql/templates/primary/servicemonitor.yaml
index b2c937d32..05d54f3b3 100644
--- a/charts/bitnami/postgresql/templates/primary/servicemonitor.yaml
+++ b/charts/bitnami/postgresql/templates/primary/servicemonitor.yaml
@@ -7,9 +7,9 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
-  name: {{ include "postgresql.primary.fullname" . }}
+  name: {{ include "postgresql.v1.primary.fullname" . }}
   namespace: {{ default .Release.Namespace .Values.metrics.serviceMonitor.namespace | quote }}
-  {{- $labels := merge .Values.metrics.serviceMonitor.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics
   {{- if .Values.commonAnnotations }}
@@ -20,7 +20,7 @@ spec:
   jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel }}
   {{- end }}
   selector:
-    {{- $svcLabels := merge .Values.metrics.serviceMonitor.selector .Values.commonLabels }}
+    {{- $svcLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.selector .Values.commonLabels ) "context" . ) }}
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $svcLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: metrics
   endpoints:
diff --git a/charts/bitnami/postgresql/templates/primary/statefulset.yaml b/charts/bitnami/postgresql/templates/primary/statefulset.yaml
index 17bc03483..8f8d56dde 100644
--- a/charts/bitnami/postgresql/templates/primary/statefulset.yaml
+++ b/charts/bitnami/postgresql/templates/primary/statefulset.yaml
@@ -3,40 +3,40 @@ Copyright VMware, Inc.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
-{{- $customUser := include "postgresql.username" . }}
+{{- $customUser := include "postgresql.v1.username" . }}
 apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }}
 kind: StatefulSet
 metadata:
-  name: {{ include "postgresql.primary.fullname" . }}
+  name: {{ include "postgresql.v1.primary.fullname" . }}
   namespace: {{ .Release.Namespace | quote }}
-  {{- $labels := merge .Values.primary.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: primary
   {{- if or .Values.commonAnnotations .Values.primary.annotations }}
-  {{- $annotations := merge .Values.primary.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
   replicas: 1
-  serviceName: {{ include "postgresql.primary.svc.headless" . }}
+  serviceName: {{ include "postgresql.v1.primary.svc.headless" . }}
   {{- if .Values.primary.updateStrategy }}
   updateStrategy: {{- toYaml .Values.primary.updateStrategy | nindent 4 }}
   {{- end }}
-  {{- $podLabels := merge .Values.primary.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: primary
   template:
     metadata:
-      name: {{ include "postgresql.primary.fullname" . }}
+      name: {{ include "postgresql.v1.primary.fullname" . }}
       labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }}
         app.kubernetes.io/component: primary
-      {{- if or (include "postgresql.primary.createConfigmap" .) (include "postgresql.primary.createExtendedConfigmap" .) .Values.primary.podAnnotations }}
+      {{- if or (include "postgresql.v1.primary.createConfigmap" .) (include "postgresql.v1.primary.createExtendedConfigmap" .) .Values.primary.podAnnotations }}
       annotations:
-        {{- if (include "postgresql.primary.createConfigmap" .) }}
+        {{- if (include "postgresql.v1.primary.createConfigmap" .) }}
         checksum/configuration: {{ pick (include (print $.Template.BasePath "/primary/configmap.yaml") . | fromYaml) "data" | toYaml | sha256sum }}
         {{- end }}
-        {{- if (include "postgresql.primary.createExtendedConfigmap" .) }}
+        {{- if (include "postgresql.v1.primary.createExtendedConfigmap" .) }}
         checksum/extended-configuration: {{ pick (include (print $.Template.BasePath "/primary/extended-configmap.yaml") . | fromYaml) "data" | toYaml | sha256sum }}
         {{- end }}
         {{- if .Values.primary.podAnnotations }}
@@ -47,8 +47,8 @@ spec:
       {{- if .Values.primary.extraPodSpec }}
       {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraPodSpec "context" $) | nindent 6 }}
       {{- end }}
-      serviceAccountName: {{ include "postgresql.serviceAccountName" . }}
-      {{- include "postgresql.imagePullSecrets" . | nindent 6 }}
+      serviceAccountName: {{ include "postgresql.v1.serviceAccountName" . }}
+      {{- include "postgresql.v1.imagePullSecrets" . | nindent 6 }}
       {{- if .Values.primary.hostAliases }}
       hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.primary.hostAliases "context" $) | nindent 8 }}
       {{- end }}
@@ -87,7 +87,7 @@ spec:
       initContainers:
         {{- if and .Values.tls.enabled (not .Values.volumePermissions.enabled) }}
         - name: copy-certs
-          image: {{ include "postgresql.volumePermissions.image" . }}
+          image: {{ include "postgresql.v1.volumePermissions.image" . }}
           imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}
           {{- if .Values.primary.resources }}
           resources: {{- toYaml .Values.primary.resources | nindent 12 }}
@@ -101,7 +101,7 @@ spec:
             - -ec
             - |
               cp /tmp/certs/* /opt/bitnami/postgresql/certs/
-              chmod 600 {{ include "postgresql.tlsCertKey" . }}
+              chmod 600 {{ include "postgresql.v1.tlsCertKey" . }}
           volumeMounts:
             - name: raw-certificates
               mountPath: /tmp/certs
@@ -109,7 +109,7 @@ spec:
               mountPath: /opt/bitnami/postgresql/certs
         {{- else if and .Values.volumePermissions.enabled (or .Values.primary.persistence.enabled .Values.shmVolume.enabled) }}
         - name: init-chmod-data
-          image: {{ include "postgresql.volumePermissions.image" . }}
+          image: {{ include "postgresql.v1.volumePermissions.image" . }}
           imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}
           {{- if .Values.volumePermissions.resources }}
           resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}
@@ -124,9 +124,9 @@ spec:
               {{- else }}
               chown {{ .Values.primary.containerSecurityContext.runAsUser }}:{{ .Values.primary.podSecurityContext.fsGroup }} {{ .Values.primary.persistence.mountPath }}
               {{- end }}
-              mkdir -p {{ .Values.primary.persistence.mountPath }}/data {{- if (include "postgresql.mountConfigurationCM" .) }} {{ .Values.primary.persistence.mountPath }}/conf {{- end }}
-              chmod 700 {{ .Values.primary.persistence.mountPath }}/data {{- if (include "postgresql.mountConfigurationCM" .) }} {{ .Values.primary.persistence.mountPath }}/conf {{- end }}
-              find {{ .Values.primary.persistence.mountPath }} -mindepth 1 -maxdepth 1 {{- if not (include "postgresql.mountConfigurationCM" .) }} -not -name "conf" {{- end }} -not -name ".snapshot" -not -name "lost+found" | \
+              mkdir -p {{ .Values.primary.persistence.mountPath }}/data {{- if (include "postgresql.v1.mountConfigurationCM" .) }} {{ .Values.primary.persistence.mountPath }}/conf {{- end }}
+              chmod 700 {{ .Values.primary.persistence.mountPath }}/data {{- if (include "postgresql.v1.mountConfigurationCM" .) }} {{ .Values.primary.persistence.mountPath }}/conf {{- end }}
+              find {{ .Values.primary.persistence.mountPath }} -mindepth 1 -maxdepth 1 {{- if not (include "postgresql.v1.mountConfigurationCM" .) }} -not -name "conf" {{- end }} -not -name ".snapshot" -not -name "lost+found" | \
               {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }}
                 xargs -r chown -R `id -u`:`id -G | cut -d " " -f2`
               {{- else }}
@@ -143,7 +143,7 @@ spec:
               {{- else }}
               chown -R {{ .Values.primary.containerSecurityContext.runAsUser }}:{{ .Values.primary.podSecurityContext.fsGroup }} /opt/bitnami/postgresql/certs/
               {{- end }}
-              chmod 600 {{ include "postgresql.tlsCertKey" . }}
+              chmod 600 {{ include "postgresql.v1.tlsCertKey" . }}
               {{- end }}
           {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }}
           securityContext: {{- omit .Values.volumePermissions.containerSecurityContext "runAsUser" | toYaml | nindent 12 }}
@@ -175,7 +175,7 @@ spec:
       {{- end }}
       containers:
         - name: postgresql
-          image: {{ include "postgresql.image" . }}
+          image: {{ include "postgresql.v1.image" . }}
           imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
           {{- if .Values.primary.containerSecurityContext.enabled }}
           securityContext: {{- omit .Values.primary.containerSecurityContext "enabled" | toYaml | nindent 12 }}
@@ -206,13 +206,13 @@ spec:
             {{- if .Values.auth.enablePostgresUser }}
             {{- if .Values.auth.usePasswordFiles }}
             - name: POSTGRES_PASSWORD_FILE
-              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.adminPasswordKey" .) }}
+              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.v1.adminPasswordKey" .) }}
             {{- else }}
             - name: POSTGRES_PASSWORD
               valueFrom:
                 secretKeyRef:
-                  name: {{ include "postgresql.secretName" . }}
-                  key: {{ include "postgresql.adminPasswordKey" . }}
+                  name: {{ include "postgresql.v1.secretName" . }}
+                  key: {{ include "postgresql.v1.adminPasswordKey" . }}
             {{- end }}
             {{- else }}
             - name: ALLOW_EMPTY_PASSWORD
@@ -223,30 +223,30 @@ spec:
               value: {{ $customUser | quote }}
             {{- if .Values.auth.usePasswordFiles }}
             - name: POSTGRES_PASSWORD_FILE
-              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.userPasswordKey" .) }}
+              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.v1.userPasswordKey" .) }}
             {{- else }}
             - name: POSTGRES_PASSWORD
               valueFrom:
                 secretKeyRef:
-                  name: {{ include "postgresql.secretName" . }}
-                  key: {{ include "postgresql.userPasswordKey" . }}
+                  name: {{ include "postgresql.v1.secretName" . }}
+                  key: {{ include "postgresql.v1.userPasswordKey" . }}
             {{- end }}
             {{- if .Values.auth.enablePostgresUser }}
             {{- if .Values.auth.usePasswordFiles }}
             - name: POSTGRES_POSTGRES_PASSWORD_FILE
-              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.adminPasswordKey" .) }}
+              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.v1.adminPasswordKey" .) }}
             {{- else }}
             - name: POSTGRES_POSTGRES_PASSWORD
               valueFrom:
                 secretKeyRef:
-                  name: {{ include "postgresql.secretName" . }}
-                  key: {{ include "postgresql.adminPasswordKey" . }}
+                  name: {{ include "postgresql.v1.secretName" . }}
+                  key: {{ include "postgresql.v1.adminPasswordKey" . }}
             {{- end }}
             {{- end }}
             {{- end }}
-            {{- if (include "postgresql.database" .) }}
+            {{- if (include "postgresql.v1.database" .) }}
             - name: POSTGRES_DATABASE
-              value: {{ (include "postgresql.database" .) | quote }}
+              value: {{ (include "postgresql.v1.database" .) | quote }}
             {{- end }}
             # Replication
             {{- if or (eq .Values.architecture "replication") .Values.primary.standby.enabled }}
@@ -256,13 +256,13 @@ spec:
               value: {{ .Values.auth.replicationUsername | quote }}
             {{- if .Values.auth.usePasswordFiles }}
             - name: POSTGRES_REPLICATION_PASSWORD_FILE
-              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.replicationPasswordKey" .) }}
+              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.v1.replicationPasswordKey" .) }}
             {{- else }}
             - name: POSTGRES_REPLICATION_PASSWORD
               valueFrom:
                 secretKeyRef:
-                  name: {{ include "postgresql.secretName" . }}
-                  key: {{ include "postgresql.replicationPasswordKey" . }}
+                  name: {{ include "postgresql.v1.secretName" . }}
+                  key: {{ include "postgresql.v1.replicationPasswordKey" . }}
             {{- end }}
             {{- if ne .Values.replication.synchronousCommit "off" }}
             - name: POSTGRES_SYNCHRONOUS_COMMIT_MODE
@@ -311,7 +311,7 @@ spec:
               value: {{ .Values.ldap.port | quote }}
             - name: POSTGRESQL_LDAP_SCHEME
               value: {{ .Values.ldap.scheme }}
-            {{- if (include "postgresql.ldap.tls.enabled" .) }}
+            {{- if (include "postgresql.v1.ldap.tls.enabled" .) }}
             - name: POSTGRESQL_LDAP_TLS
               value: "1"
             {{- end }}
@@ -327,7 +327,7 @@ spec:
             - name: POSTGRESQL_LDAP_BIND_PASSWORD
               valueFrom:
                 secretKeyRef:
-                  name: {{ include "postgresql.secretName" . }}
+                  name: {{ include "postgresql.v1.secretName" . }}
                   key: ldap-password
             {{- end }}
             - name: POSTGRESQL_LDAP_SEARCH_ATTR
@@ -343,16 +343,16 @@ spec:
             - name: POSTGRESQL_TLS_PREFER_SERVER_CIPHERS
               value: {{ ternary "yes" "no" .Values.tls.preferServerCiphers | quote }}
             - name: POSTGRESQL_TLS_CERT_FILE
-              value: {{ include "postgresql.tlsCert" . }}
+              value: {{ include "postgresql.v1.tlsCert" . }}
             - name: POSTGRESQL_TLS_KEY_FILE
-              value: {{ include "postgresql.tlsCertKey" . }}
+              value: {{ include "postgresql.v1.tlsCertKey" . }}
             {{- if .Values.tls.certCAFilename }}
             - name: POSTGRESQL_TLS_CA_FILE
-              value: {{ include "postgresql.tlsCACert" . }}
+              value: {{ include "postgresql.v1.tlsCACert" . }}
             {{- end }}
             {{- if .Values.tls.crlFilename }}
             - name: POSTGRESQL_TLS_CRL_FILE
-              value: {{ include "postgresql.tlsCRL" . }}
+              value: {{ include "postgresql.v1.tlsCRL" . }}
             {{- end }}
             {{- end }}
             # Audit
@@ -407,10 +407,10 @@ spec:
               command:
                 - /bin/sh
                 - -c
-                {{- if (include "postgresql.database" .) }}
-                - exec pg_isready -U {{ default "postgres" $customUser | quote }} -d "dbname={{ include "postgresql.database" . }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
+                {{- if (include "postgresql.v1.database" .) }}
+                - exec pg_isready -U {{ default "postgres" $customUser | quote }} -d "dbname={{ include "postgresql.v1.database" . }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} sslcert={{ include "postgresql.v1.tlsCert" . }} sslkey={{ include "postgresql.v1.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
                 {{- else }}
-                - exec pg_isready -U {{ default "postgres" $customUser | quote }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} -d "sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
+                - exec pg_isready -U {{ default "postgres" $customUser | quote }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} -d "sslcert={{ include "postgresql.v1.tlsCert" . }} sslkey={{ include "postgresql.v1.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
                 {{- end }}
           {{- end }}
           {{- if .Values.primary.customLivenessProbe }}
@@ -421,10 +421,10 @@ spec:
               command:
                 - /bin/sh
                 - -c
-                {{- if (include "postgresql.database" .) }}
-                - exec pg_isready -U {{ default "postgres" $customUser | quote }} -d "dbname={{ include "postgresql.database" . }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
+                {{- if (include "postgresql.v1.database" .) }}
+                - exec pg_isready -U {{ default "postgres" $customUser | quote }} -d "dbname={{ include "postgresql.v1.database" . }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} sslcert={{ include "postgresql.v1.tlsCert" . }} sslkey={{ include "postgresql.v1.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
                 {{- else }}
-                - exec pg_isready -U {{ default "postgres" $customUser | quote }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} -d "sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
+                - exec pg_isready -U {{ default "postgres" $customUser | quote }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} -d "sslcert={{ include "postgresql.v1.tlsCert" . }} sslkey={{ include "postgresql.v1.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
                 {{- end }}
           {{- end }}
           {{- if .Values.primary.customReadinessProbe }}
@@ -436,7 +436,7 @@ spec:
                 - /bin/sh
                 - -c
                 - -e
-                {{- include "postgresql.readinessProbeCommand" . | nindent 16 }}
+                {{- include "postgresql.v1.readinessProbeCommand" . | nindent 16 }}
           {{- end }}
           {{- end }}
           {{- if .Values.primary.resources }}
@@ -487,7 +487,7 @@ spec:
             {{- end }}
         {{- if .Values.metrics.enabled }}
         - name: metrics
-          image: {{ include "postgresql.metrics.image" . }}
+          image: {{ include "postgresql.v1.metrics.image" . }}
           imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}
           {{- if .Values.metrics.containerSecurityContext.enabled }}
           securityContext: {{- omit .Values.metrics.containerSecurityContext "enabled" | toYaml | nindent 12 }}
@@ -499,18 +499,18 @@ spec:
           args: ["--extend.query-path", "/conf/custom-metrics.yaml"]
           {{- end }}
           env:
-            {{- $database := required "In order to enable metrics you need to specify a database (.Values.auth.database or .Values.global.postgresql.auth.database)" (include "postgresql.database" .) }}
+            {{- $database := required "In order to enable metrics you need to specify a database (.Values.auth.database or .Values.global.postgresql.auth.database)" (include "postgresql.v1.database" .) }}
             - name: DATA_SOURCE_URI
-              value: {{ printf "127.0.0.1:%d/%s?sslmode=disable" (int (include "postgresql.service.port" .)) $database }}
+              value: {{ printf "127.0.0.1:%d/%s?sslmode=disable" (int (include "postgresql.v1.service.port" .)) $database }}
             {{- if .Values.auth.usePasswordFiles }}
             - name: DATA_SOURCE_PASS_FILE
-              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.userPasswordKey" .) }}
+              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.v1.userPasswordKey" .) }}
             {{- else }}
             - name: DATA_SOURCE_PASS
               valueFrom:
                 secretKeyRef:
-                  name: {{ include "postgresql.secretName" . }}
-                  key: {{ include "postgresql.userPasswordKey" . }}
+                  name: {{ include "postgresql.v1.secretName" . }}
+                  key: {{ include "postgresql.v1.userPasswordKey" . }}
             {{- end }}
             - name: DATA_SOURCE_USER
               value: {{ default "postgres" $customUser | quote }}
@@ -566,22 +566,22 @@ spec:
         {{- if or .Values.primary.configuration .Values.primary.pgHbaConfiguration .Values.primary.existingConfigmap }}
         - name: postgresql-config
           configMap:
-            name: {{ include "postgresql.primary.configmapName" . }}
+            name: {{ include "postgresql.v1.primary.configmapName" . }}
         {{- end }}
         {{- if or .Values.primary.extendedConfiguration .Values.primary.existingExtendedConfigmap }}
         - name: postgresql-extended-config
           configMap:
-            name: {{ include "postgresql.primary.extendedConfigmapName" . }}
+            name: {{ include "postgresql.v1.primary.extendedConfigmapName" . }}
         {{- end }}
         {{- if .Values.auth.usePasswordFiles }}
         - name: postgresql-password
           secret:
-            secretName: {{ include "postgresql.secretName" . }}
+            secretName: {{ include "postgresql.v1.secretName" . }}
         {{- end }}
         {{- if or .Values.primary.initdb.scriptsConfigMap .Values.primary.initdb.scripts }}
         - name: custom-init-scripts
           configMap:
-            name: {{ include "postgresql.initdb.scriptsCM" . }}
+            name: {{ include "postgresql.v1.initdb.scriptsCM" . }}
         {{- end }}
         {{- if .Values.primary.initdb.scriptsSecret }}
         - name: custom-init-scripts-secret
@@ -591,7 +591,7 @@ spec:
         {{- if  .Values.tls.enabled }}
         - name: raw-certificates
           secret:
-            secretName: {{ include "postgresql.tlsSecretName" . }}
+            secretName: {{ include "postgresql.v1.tlsSecretName" . }}
         - name: postgresql-certificates
           emptyDir: {}
         {{- end }}
@@ -601,7 +601,7 @@ spec:
         {{- if and .Values.metrics.enabled .Values.metrics.customMetrics }}
         - name: custom-metrics
           configMap:
-            name: {{ printf "%s-metrics" (include "postgresql.primary.fullname" .) }}
+            name: {{ printf "%s-metrics" (include "postgresql.v1.primary.fullname" .) }}
         {{- end }}
         {{- if .Values.shmVolume.enabled }}
         - name: dshm
diff --git a/charts/bitnami/postgresql/templates/primary/svc-headless.yaml b/charts/bitnami/postgresql/templates/primary/svc-headless.yaml
index 58fc59089..b18565aea 100644
--- a/charts/bitnami/postgresql/templates/primary/svc-headless.yaml
+++ b/charts/bitnami/postgresql/templates/primary/svc-headless.yaml
@@ -6,13 +6,13 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ include "postgresql.primary.svc.headless" . }}
+  name: {{ include "postgresql.v1.primary.svc.headless" . }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: primary
   annotations:
     {{- if or .Values.primary.service.headless.annotations .Values.commonAnnotations }}
-    {{- $annotations := merge .Values.primary.service.headless.annotations .Values.commonAnnotations }}
+    {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.service.headless.annotations .Values.commonAnnotations ) "context" . ) }}
     {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
     {{- end }}
     # Use this annotation in addition to the actual publishNotReadyAddresses
@@ -29,8 +29,8 @@ spec:
   publishNotReadyAddresses: true
   ports:
     - name: tcp-postgresql
-      port: {{ template "postgresql.service.port" . }}
+      port: {{ template "postgresql.v1.service.port" . }}
       targetPort: tcp-postgresql
-  {{- $podLabels := merge .Values.primary.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: primary
diff --git a/charts/bitnami/postgresql/templates/primary/svc.yaml b/charts/bitnami/postgresql/templates/primary/svc.yaml
index 8fe53f9c7..90f7e4690 100644
--- a/charts/bitnami/postgresql/templates/primary/svc.yaml
+++ b/charts/bitnami/postgresql/templates/primary/svc.yaml
@@ -6,12 +6,12 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ include "postgresql.primary.fullname" . }}
+  name: {{ include "postgresql.v1.primary.fullname" . }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: primary
   {{- if or .Values.commonAnnotations .Values.primary.service.annotations }}
-  {{- $annotations := merge .Values.primary.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -36,7 +36,7 @@ spec:
   {{- end }}
   ports:
     - name: tcp-postgresql
-      port: {{ template "postgresql.service.port" . }}
+      port: {{ template "postgresql.v1.service.port" . }}
       targetPort: tcp-postgresql
       {{- if and (or (eq .Values.primary.service.type "NodePort") (eq .Values.primary.service.type "LoadBalancer")) (not (empty .Values.primary.service.nodePorts.postgresql)) }}
       nodePort: {{ .Values.primary.service.nodePorts.postgresql }}
@@ -46,6 +46,6 @@ spec:
     {{- if .Values.primary.service.extraPorts }}
     {{- include "common.tplvalues.render" (dict "value" .Values.primary.service.extraPorts "context" $) | nindent 4 }}
     {{- end }}
-  {{- $podLabels := merge .Values.primary.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: primary
diff --git a/charts/bitnami/postgresql/templates/prometheusrule.yaml b/charts/bitnami/postgresql/templates/prometheusrule.yaml
index 7c75103d7..6cdb08732 100644
--- a/charts/bitnami/postgresql/templates/prometheusrule.yaml
+++ b/charts/bitnami/postgresql/templates/prometheusrule.yaml
@@ -9,7 +9,7 @@ kind: PrometheusRule
 metadata:
   name: {{ include "common.names.fullname" . }}
   namespace: {{ default .Release.Namespace .Values.metrics.prometheusRule.namespace | quote }}
-  {{- $labels := merge .Values.metrics.prometheusRule.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.prometheusRule.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics
   {{- if .Values.commonAnnotations }}
diff --git a/charts/bitnami/postgresql/templates/read/extended-configmap.yaml b/charts/bitnami/postgresql/templates/read/extended-configmap.yaml
index ef188d7ce..efa87bb13 100644
--- a/charts/bitnami/postgresql/templates/read/extended-configmap.yaml
+++ b/charts/bitnami/postgresql/templates/read/extended-configmap.yaml
@@ -3,11 +3,11 @@ Copyright VMware, Inc.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
-{{- if (include "postgresql.readReplicas.createExtendedConfigmap" .) }}
+{{- if (include "postgresql.v1.readReplicas.createExtendedConfigmap" .) }}
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: {{ printf "%s-extended-configuration" (include "postgresql.readReplica.fullname" .) }}
+  name: {{ printf "%s-extended-configuration" (include "postgresql.v1.readReplica.fullname" .) }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: read
diff --git a/charts/bitnami/postgresql/templates/read/metrics-configmap.yaml b/charts/bitnami/postgresql/templates/read/metrics-configmap.yaml
index 911547502..a1e06bfc6 100644
--- a/charts/bitnami/postgresql/templates/read/metrics-configmap.yaml
+++ b/charts/bitnami/postgresql/templates/read/metrics-configmap.yaml
@@ -7,7 +7,7 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: {{ printf "%s-metrics" (include "postgresql.readReplica.fullname" .) }}
+  name: {{ printf "%s-metrics" (include "postgresql.v1.readReplica.fullname" .) }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if .Values.commonAnnotations }}
diff --git a/charts/bitnami/postgresql/templates/read/metrics-svc.yaml b/charts/bitnami/postgresql/templates/read/metrics-svc.yaml
index 76a0ea901..e9f13e067 100644
--- a/charts/bitnami/postgresql/templates/read/metrics-svc.yaml
+++ b/charts/bitnami/postgresql/templates/read/metrics-svc.yaml
@@ -7,12 +7,12 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ printf "%s-metrics" (include "postgresql.readReplica.fullname" .) }}
+  name: {{ printf "%s-metrics" (include "postgresql.v1.readReplica.fullname" .) }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics-read
   {{- if or .Values.commonAnnotations .Values.metrics.service.annotations }}
-  {{- $annotations := merge .Values.metrics.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -25,7 +25,7 @@ spec:
     - name: http-metrics
       port: {{ .Values.metrics.service.ports.metrics }}
       targetPort: http-metrics
-  {{- $podLabels := merge .Values.readReplicas.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.readReplicas.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: read
 {{- end }}
diff --git a/charts/bitnami/postgresql/templates/read/networkpolicy.yaml b/charts/bitnami/postgresql/templates/read/networkpolicy.yaml
index e9d02ee47..79d3a5aa8 100644
--- a/charts/bitnami/postgresql/templates/read/networkpolicy.yaml
+++ b/charts/bitnami/postgresql/templates/read/networkpolicy.yaml
@@ -7,7 +7,7 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }}
 kind: NetworkPolicy
 metadata:
-  name: {{ printf "%s-ingress" (include "postgresql.readReplica.fullname" .) }}
+  name: {{ printf "%s-ingress" (include "postgresql.v1.readReplica.fullname" .) }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: read
@@ -15,7 +15,7 @@ metadata:
   annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
   {{- end }}
 spec:
-  {{- $podLabels := merge .Values.readReplicas.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.readReplicas.podLabels .Values.commonLabels ) "context" . ) }}
   podSelector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: read
diff --git a/charts/bitnami/postgresql/templates/read/servicemonitor.yaml b/charts/bitnami/postgresql/templates/read/servicemonitor.yaml
index 7be04f6e0..845734b1f 100644
--- a/charts/bitnami/postgresql/templates/read/servicemonitor.yaml
+++ b/charts/bitnami/postgresql/templates/read/servicemonitor.yaml
@@ -7,9 +7,9 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
-  name: {{ include "postgresql.readReplica.fullname" . }}
+  name: {{ include "postgresql.v1.readReplica.fullname" . }}
   namespace: {{ default .Release.Namespace .Values.metrics.serviceMonitor.namespace | quote }}
-  {{- $labels := merge .Values.metrics.serviceMonitor.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics-read
   {{- if .Values.commonAnnotations }}
@@ -20,7 +20,7 @@ spec:
   jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel }}
   {{- end }}
   selector:
-    {{- $svcLabels := merge .Values.metrics.serviceMonitor.selector .Values.commonLabels }}
+    {{- $svcLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.selector .Values.commonLabels ) "context" . ) }}
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $svcLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: metrics-read
   endpoints:
diff --git a/charts/bitnami/postgresql/templates/read/statefulset.yaml b/charts/bitnami/postgresql/templates/read/statefulset.yaml
index fabca9d0a..826870065 100644
--- a/charts/bitnami/postgresql/templates/read/statefulset.yaml
+++ b/charts/bitnami/postgresql/templates/read/statefulset.yaml
@@ -4,37 +4,37 @@ SPDX-License-Identifier: APACHE-2.0
 */}}
 
 {{- if eq .Values.architecture "replication" }}
-{{- $customUser := include "postgresql.username" . }}
+{{- $customUser := include "postgresql.v1.username" . }}
 apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }}
 kind: StatefulSet
 metadata:
-  name: {{ include "postgresql.readReplica.fullname" . }}
+  name: {{ include "postgresql.v1.readReplica.fullname" . }}
   namespace: {{ .Release.Namespace | quote }}
-  {{- $labels := merge .Values.readReplicas.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.readReplicas.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: read
   {{- if or .Values.commonAnnotations .Values.readReplicas.annotations }}
-  {{- $annotations := merge .Values.readReplicas.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.readReplicas.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
   replicas: {{ .Values.readReplicas.replicaCount }}
-  serviceName: {{ include "postgresql.readReplica.svc.headless" . }}
+  serviceName: {{ include "postgresql.v1.readReplica.svc.headless" . }}
   {{- if .Values.readReplicas.updateStrategy }}
   updateStrategy: {{- toYaml .Values.readReplicas.updateStrategy | nindent 4 }}
   {{- end }}
-  {{- $podLabels := merge .Values.readReplicas.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.readReplicas.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: read
   template:
     metadata:
-      name: {{ include "postgresql.readReplica.fullname" . }}
+      name: {{ include "postgresql.v1.readReplica.fullname" . }}
       labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }}
         app.kubernetes.io/component: read
-      {{- if or (include "postgresql.readReplicas.createExtendedConfigmap" .) .Values.readReplicas.podAnnotations }}
+      {{- if or (include "postgresql.v1.readReplicas.createExtendedConfigmap" .) .Values.readReplicas.podAnnotations }}
       annotations:
-        {{- if (include "postgresql.readReplicas.createExtendedConfigmap" .) }}
+        {{- if (include "postgresql.v1.readReplicas.createExtendedConfigmap" .) }}
         checksum/extended-configuration: {{ pick (include (print $.Template.BasePath "/primary/extended-configmap.yaml") . | fromYaml) "data" | toYaml | sha256sum }}
         {{- end }}
         {{- if .Values.readReplicas.podAnnotations }}
@@ -45,8 +45,8 @@ spec:
       {{- if .Values.readReplicas.extraPodSpec }}
       {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.extraPodSpec "context" $) | nindent 6 }}
       {{- end }}
-      serviceAccountName: {{ include "postgresql.serviceAccountName" . }}
-      {{- include "postgresql.imagePullSecrets" . | nindent 6 }}
+      serviceAccountName: {{ include "postgresql.v1.serviceAccountName" . }}
+      {{- include "postgresql.v1.imagePullSecrets" . | nindent 6 }}
       {{- if .Values.readReplicas.hostAliases }}
       hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.hostAliases "context" $) | nindent 8 }}
       {{- end }}
@@ -85,7 +85,7 @@ spec:
       initContainers:
         {{- if and .Values.tls.enabled (not .Values.volumePermissions.enabled) }}
         - name: copy-certs
-          image: {{ include "postgresql.volumePermissions.image" . }}
+          image: {{ include "postgresql.v1.volumePermissions.image" . }}
           imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}
           {{- if .Values.readReplicas.resources }}
           resources: {{- toYaml .Values.readReplicas.resources | nindent 12 }}
@@ -99,7 +99,7 @@ spec:
             - -ec
             - |
               cp /tmp/certs/* /opt/bitnami/postgresql/certs/
-              chmod 600 {{ include "postgresql.tlsCertKey" . }}
+              chmod 600 {{ include "postgresql.v1.tlsCertKey" . }}
           volumeMounts:
             - name: raw-certificates
               mountPath: /tmp/certs
@@ -107,7 +107,7 @@ spec:
               mountPath: /opt/bitnami/postgresql/certs
         {{- else if and .Values.volumePermissions.enabled (or .Values.readReplicas.persistence.enabled .Values.shmVolume.enabled) }}
         - name: init-chmod-data
-          image: {{ include "postgresql.volumePermissions.image" . }}
+          image: {{ include "postgresql.v1.volumePermissions.image" . }}
           imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}
           {{- if .Values.readReplicas.resources }}
           resources: {{- toYaml .Values.readReplicas.resources | nindent 12 }}
@@ -122,9 +122,9 @@ spec:
               {{- else }}
               chown {{ .Values.readReplicas.containerSecurityContext.runAsUser }}:{{ .Values.readReplicas.podSecurityContext.fsGroup }} {{ .Values.readReplicas.persistence.mountPath }}
               {{- end }}
-              mkdir -p {{ .Values.readReplicas.persistence.mountPath }}/data {{- if (include "postgresql.mountConfigurationCM" .) }} {{ .Values.readReplicas.persistence.mountPath }}/conf {{- end }}
-              chmod 700 {{ .Values.readReplicas.persistence.mountPath }}/data {{- if (include "postgresql.mountConfigurationCM" .) }} {{ .Values.readReplicas.persistence.mountPath }}/conf {{- end }}
-              find {{ .Values.readReplicas.persistence.mountPath }} -mindepth 1 -maxdepth 1 {{- if not (include "postgresql.mountConfigurationCM" .) }} -not -name "conf" {{- end }} -not -name ".snapshot" -not -name "lost+found" | \
+              mkdir -p {{ .Values.readReplicas.persistence.mountPath }}/data {{- if (include "postgresql.v1.mountConfigurationCM" .) }} {{ .Values.readReplicas.persistence.mountPath }}/conf {{- end }}
+              chmod 700 {{ .Values.readReplicas.persistence.mountPath }}/data {{- if (include "postgresql.v1.mountConfigurationCM" .) }} {{ .Values.readReplicas.persistence.mountPath }}/conf {{- end }}
+              find {{ .Values.readReplicas.persistence.mountPath }} -mindepth 1 -maxdepth 1 {{- if not (include "postgresql.v1.mountConfigurationCM" .) }} -not -name "conf" {{- end }} -not -name ".snapshot" -not -name "lost+found" | \
               {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }}
                 xargs -r chown -R `id -u`:`id -G | cut -d " " -f2`
               {{- else }}
@@ -141,7 +141,7 @@ spec:
               {{- else }}
               chown -R {{ .Values.readReplicas.containerSecurityContext.runAsUser }}:{{ .Values.readReplicas.podSecurityContext.fsGroup }} /opt/bitnami/postgresql/certs/
               {{- end }}
-              chmod 600 {{ include "postgresql.tlsCertKey" . }}
+              chmod 600 {{ include "postgresql.v1.tlsCertKey" . }}
               {{- end }}
           {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }}
           securityContext: {{- omit .Values.volumePermissions.containerSecurityContext "runAsUser" | toYaml | nindent 12 }}
@@ -173,7 +173,7 @@ spec:
       {{- end }}
       containers:
         - name: postgresql
-          image: {{ include "postgresql.image" . }}
+          image: {{ include "postgresql.v1.image" . }}
           imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
           {{- if .Values.readReplicas.containerSecurityContext.enabled }}
           securityContext: {{- omit .Values.readReplicas.containerSecurityContext "enabled" | toYaml | nindent 12 }}
@@ -204,13 +204,13 @@ spec:
             {{- if .Values.auth.enablePostgresUser }}
             {{- if .Values.auth.usePasswordFiles }}
             - name: POSTGRES_PASSWORD_FILE
-              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.adminPasswordKey" .) }}
+              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.v1.adminPasswordKey" .) }}
             {{- else }}
             - name: POSTGRES_PASSWORD
               valueFrom:
                 secretKeyRef:
-                  name: {{ include "postgresql.secretName" . }}
-                  key: {{ include "postgresql.adminPasswordKey" . }}
+                  name: {{ include "postgresql.v1.secretName" . }}
+                  key: {{ include "postgresql.v1.adminPasswordKey" . }}
             {{- end }}
             {{- else }}
             - name: ALLOW_EMPTY_PASSWORD
@@ -221,24 +221,24 @@ spec:
               value: {{ $customUser | quote }}
             {{- if .Values.auth.usePasswordFiles }}
             - name: POSTGRES_PASSWORD_FILE
-              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.userPasswordKey" .) }}
+              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.v1.userPasswordKey" .) }}
             {{- else }}
             - name: POSTGRES_PASSWORD
               valueFrom:
                 secretKeyRef:
-                  name: {{ include "postgresql.secretName" . }}
-                  key: {{ include "postgresql.userPasswordKey" . }}
+                  name: {{ include "postgresql.v1.secretName" . }}
+                  key: {{ include "postgresql.v1.userPasswordKey" . }}
             {{- end }}
             {{- if .Values.auth.enablePostgresUser }}
             {{- if .Values.auth.usePasswordFiles }}
             - name: POSTGRES_POSTGRES_PASSWORD_FILE
-              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.adminPasswordKey" .) }}
+              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.v1.adminPasswordKey" .) }}
             {{- else }}
             - name: POSTGRES_POSTGRES_PASSWORD
               valueFrom:
                 secretKeyRef:
-                  name: {{ include "postgresql.secretName" . }}
-                  key: {{ include "postgresql.adminPasswordKey" . }}
+                  name: {{ include "postgresql.v1.secretName" . }}
+                  key: {{ include "postgresql.v1.adminPasswordKey" . }}
             {{- end }}
             {{- end }}
             {{- end }}
@@ -249,20 +249,20 @@ spec:
               value: {{ .Values.auth.replicationUsername | quote }}
             {{- if .Values.auth.usePasswordFiles }}
             - name: POSTGRES_REPLICATION_PASSWORD_FILE
-              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.replicationPasswordKey" .) }}
+              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.v1.replicationPasswordKey" .) }}
             {{- else }}
             - name: POSTGRES_REPLICATION_PASSWORD
               valueFrom:
                 secretKeyRef:
-                  name: {{ include "postgresql.secretName" . }}
-                  key: {{ include "postgresql.replicationPasswordKey" . }}
+                  name: {{ include "postgresql.v1.secretName" . }}
+                  key: {{ include "postgresql.v1.replicationPasswordKey" . }}
             {{- end }}
             - name: POSTGRES_CLUSTER_APP_NAME
               value: {{ .Values.replication.applicationName }}
             - name: POSTGRES_MASTER_HOST
-              value: {{ include "postgresql.primary.fullname" . }}
+              value: {{ include "postgresql.v1.primary.fullname" . }}
             - name: POSTGRES_MASTER_PORT_NUMBER
-              value: {{ include "postgresql.service.port" . | quote }}
+              value: {{ include "postgresql.v1.service.port" . | quote }}
             # TLS
             - name: POSTGRESQL_ENABLE_TLS
               value: {{ ternary "yes" "no" .Values.tls.enabled | quote }}
@@ -270,16 +270,16 @@ spec:
             - name: POSTGRESQL_TLS_PREFER_SERVER_CIPHERS
               value: {{ ternary "yes" "no" .Values.tls.preferServerCiphers | quote }}
             - name: POSTGRESQL_TLS_CERT_FILE
-              value: {{ include "postgresql.tlsCert" . }}
+              value: {{ include "postgresql.v1.tlsCert" . }}
             - name: POSTGRESQL_TLS_KEY_FILE
-              value: {{ include "postgresql.tlsCertKey" . }}
+              value: {{ include "postgresql.v1.tlsCertKey" . }}
             {{- if .Values.tls.certCAFilename }}
             - name: POSTGRESQL_TLS_CA_FILE
-              value: {{ include "postgresql.tlsCACert" . }}
+              value: {{ include "postgresql.v1.tlsCACert" . }}
             {{- end }}
             {{- if .Values.tls.crlFilename }}
             - name: POSTGRESQL_TLS_CRL_FILE
-              value: {{ include "postgresql.tlsCRL" . }}
+              value: {{ include "postgresql.v1.tlsCRL" . }}
             {{- end }}
             {{- end }}
             # Audit
@@ -334,10 +334,10 @@ spec:
               command:
                 - /bin/sh
                 - -c
-                {{- if (include "postgresql.database" .) }}
-                - exec pg_isready -U {{ default "postgres" $customUser| quote }} -d "dbname={{ include "postgresql.database" . }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
+                {{- if (include "postgresql.v1.database" .) }}
+                - exec pg_isready -U {{ default "postgres" $customUser| quote }} -d "dbname={{ include "postgresql.v1.database" . }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} sslcert={{ include "postgresql.v1.tlsCert" . }} sslkey={{ include "postgresql.v1.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
                 {{- else }}
-                - exec pg_isready -U {{ default "postgres" $customUser | quote }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} -d "sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
+                - exec pg_isready -U {{ default "postgres" $customUser | quote }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} -d "sslcert={{ include "postgresql.v1.tlsCert" . }} sslkey={{ include "postgresql.v1.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
                 {{- end }}
           {{- end }}
           {{- if .Values.readReplicas.customLivenessProbe }}
@@ -348,10 +348,10 @@ spec:
               command:
                 - /bin/sh
                 - -c
-                {{- if (include "postgresql.database" .) }}
-                - exec pg_isready -U {{ default "postgres" $customUser | quote }} -d "dbname={{ include "postgresql.database" . }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
+                {{- if (include "postgresql.v1.database" .) }}
+                - exec pg_isready -U {{ default "postgres" $customUser | quote }} -d "dbname={{ include "postgresql.v1.database" . }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} sslcert={{ include "postgresql.v1.tlsCert" . }} sslkey={{ include "postgresql.v1.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
                 {{- else }}
-                - exec pg_isready -U {{default "postgres" $customUser | quote }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} -d "sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
+                - exec pg_isready -U {{default "postgres" $customUser | quote }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} -d "sslcert={{ include "postgresql.v1.tlsCert" . }} sslkey={{ include "postgresql.v1.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }}
                 {{- end }}
           {{- end }}
           {{- if .Values.readReplicas.customReadinessProbe }}
@@ -363,7 +363,7 @@ spec:
                 - /bin/sh
                 - -c
                 - -e
-                {{- include "postgresql.readinessProbeCommand" . | nindent 16 }}
+                {{- include "postgresql.v1.readinessProbeCommand" . | nindent 16 }}
           {{- end }}
           {{- end }}
           {{- if .Values.readReplicas.resources }}
@@ -402,7 +402,7 @@ spec:
             {{- end }}
         {{- if .Values.metrics.enabled }}
         - name: metrics
-          image: {{ include "postgresql.metrics.image" . }}
+          image: {{ include "postgresql.v1.metrics.image" . }}
           imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}
           {{- if .Values.metrics.containerSecurityContext.enabled }}
           securityContext: {{- omit .Values.metrics.containerSecurityContext "enabled" | toYaml | nindent 12 }}
@@ -414,18 +414,18 @@ spec:
           args: [ "--extend.query-path", "/conf/custom-metrics.yaml" ]
           {{- end }}
           env:
-          {{- $database := required "In order to enable metrics you need to specify a database (.Values.auth.database or .Values.global.postgresql.auth.database)" (include "postgresql.database" .) }}
+          {{- $database := required "In order to enable metrics you need to specify a database (.Values.auth.database or .Values.global.postgresql.auth.database)" (include "postgresql.v1.database" .) }}
             - name: DATA_SOURCE_URI
-              value: {{ printf "127.0.0.1:%d/%s?sslmode=disable" (int (include "postgresql.service.port" .)) $database }}
+              value: {{ printf "127.0.0.1:%d/%s?sslmode=disable" (int (include "postgresql.v1.service.port" .)) $database }}
             {{- if .Values.auth.usePasswordFiles }}
             - name: DATA_SOURCE_PASS_FILE
-              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.userPasswordKey" .) }}
+              value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (include "postgresql.v1.userPasswordKey" .) }}
             {{- else }}
             - name: DATA_SOURCE_PASS
               valueFrom:
                 secretKeyRef:
-                  name: {{ include "postgresql.secretName" . }}
-                  key: {{ include "postgresql.userPasswordKey" . }}
+                  name: {{ include "postgresql.v1.secretName" . }}
+                  key: {{ include "postgresql.v1.userPasswordKey" . }}
             {{- end }}
             - name: DATA_SOURCE_USER
               value: {{ default "postgres" $customUser | quote }}
@@ -481,24 +481,24 @@ spec:
         {{- if .Values.readReplicas.extendedConfiguration }}
         - name: postgresql-extended-config
           configMap:
-            name: {{ include "postgresql.readReplicas.extendedConfigmapName" . }}
+            name: {{ include "postgresql.v1.readReplicas.extendedConfigmapName" . }}
         {{- end }}
         {{- if .Values.auth.usePasswordFiles }}
         - name: postgresql-password
           secret:
-            secretName: {{ include "postgresql.secretName" . }}
+            secretName: {{ include "postgresql.v1.secretName" . }}
         {{- end }}
         {{- if .Values.tls.enabled }}
         - name: raw-certificates
           secret:
-            secretName: {{ include "postgresql.tlsSecretName" . }}
+            secretName: {{ include "postgresql.v1.tlsSecretName" . }}
         - name: postgresql-certificates
           emptyDir: {}
         {{- end }}
         {{- if and .Values.metrics.enabled .Values.metrics.customMetrics }}
         - name: custom-metrics
           configMap:
-            name: {{ printf "%s-metrics" (include "postgresql.readReplica.fullname" .) }}
+            name: {{ printf "%s-metrics" (include "postgresql.v1.readReplica.fullname" .) }}
         {{- end }}
         {{- if .Values.shmVolume.enabled }}
         - name: dshm
diff --git a/charts/bitnami/postgresql/templates/read/svc-headless.yaml b/charts/bitnami/postgresql/templates/read/svc-headless.yaml
index 26d43e753..249af5f4a 100644
--- a/charts/bitnami/postgresql/templates/read/svc-headless.yaml
+++ b/charts/bitnami/postgresql/templates/read/svc-headless.yaml
@@ -7,13 +7,13 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ include "postgresql.readReplica.svc.headless" . }}
+  name: {{ include "postgresql.v1.readReplica.svc.headless" . }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: read
   annotations:
     {{- if or .Values.readReplicas.service.headless.annotations .Values.commonAnnotations }}
-    {{- $annotations := merge .Values.readReplicas.service.headless.annotations .Values.commonAnnotations }}
+    {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.readReplicas.service.headless.annotations .Values.commonAnnotations ) "context" . ) }}
     {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
     {{- end }}
     # Use this annotation in addition to the actual publishNotReadyAddresses
@@ -30,9 +30,9 @@ spec:
   publishNotReadyAddresses: true
   ports:
     - name: tcp-postgresql
-      port: {{ include "postgresql.readReplica.service.port" . }}
+      port: {{ include "postgresql.v1.readReplica.service.port" . }}
       targetPort: tcp-postgresql
-  {{- $podLabels := merge .Values.readReplicas.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.readReplicas.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: read
 {{- end }}
diff --git a/charts/bitnami/postgresql/templates/read/svc.yaml b/charts/bitnami/postgresql/templates/read/svc.yaml
index 9a0ce8ad4..d92c52340 100644
--- a/charts/bitnami/postgresql/templates/read/svc.yaml
+++ b/charts/bitnami/postgresql/templates/read/svc.yaml
@@ -7,12 +7,12 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ include "postgresql.readReplica.fullname" . }}
+  name: {{ include "postgresql.v1.readReplica.fullname" . }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: read
   {{- if or .Values.commonAnnotations .Values.readReplicas.service.annotations }}
-  {{- $annotations := merge .Values.readReplicas.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.readReplicas.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -37,7 +37,7 @@ spec:
   {{- end }}
   ports:
     - name: tcp-postgresql
-      port: {{ include "postgresql.readReplica.service.port" . }}
+      port: {{ include "postgresql.v1.readReplica.service.port" . }}
       targetPort: tcp-postgresql
       {{- if and (or (eq .Values.readReplicas.service.type "NodePort") (eq .Values.readReplicas.service.type "LoadBalancer")) (not (empty .Values.readReplicas.service.nodePorts.postgresql)) }}
       nodePort: {{ .Values.readReplicas.service.nodePorts.postgresql }}
@@ -47,7 +47,7 @@ spec:
     {{- if .Values.readReplicas.service.extraPorts }}
     {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.service.extraPorts "context" $) | nindent 4 }}
     {{- end }}
-  {{- $podLabels := merge .Values.readReplicas.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.readReplicas.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: read
 {{- end }}
diff --git a/charts/bitnami/postgresql/templates/rolebinding.yaml b/charts/bitnami/postgresql/templates/rolebinding.yaml
index c22deae0d..04323a0c4 100644
--- a/charts/bitnami/postgresql/templates/rolebinding.yaml
+++ b/charts/bitnami/postgresql/templates/rolebinding.yaml
@@ -19,6 +19,6 @@ roleRef:
   apiGroup: rbac.authorization.k8s.io
 subjects:
   - kind: ServiceAccount
-    name: {{ include "postgresql.serviceAccountName" . }}
+    name: {{ include "postgresql.v1.serviceAccountName" . }}
     namespace: {{ .Release.Namespace | quote }}
 {{- end }}
diff --git a/charts/bitnami/postgresql/templates/secrets.yaml b/charts/bitnami/postgresql/templates/secrets.yaml
index 589c06deb..6d7f59aa3 100644
--- a/charts/bitnami/postgresql/templates/secrets.yaml
+++ b/charts/bitnami/postgresql/templates/secrets.yaml
@@ -3,16 +3,16 @@ Copyright VMware, Inc.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
-{{- $host := include "postgresql.primary.fullname" . }}
-{{- $port := include "postgresql.service.port" . }}
-{{- $customUser := include "postgresql.username" . }}
-{{- $postgresPassword := include "common.secrets.lookup" (dict "secret" (include "postgresql.secretName" .) "key" .Values.auth.secretKeys.adminPasswordKey "defaultValue" (ternary (coalesce .Values.global.postgresql.auth.password .Values.auth.password .Values.global.postgresql.auth.postgresPassword .Values.auth.postgresPassword) (coalesce .Values.global.postgresql.auth.postgresPassword .Values.auth.postgresPassword) (or (empty $customUser) (eq $customUser "postgres"))) "context" $) | trimAll "\"" | b64dec }}
+{{- $host := include "postgresql.v1.primary.fullname" . }}
+{{- $port := include "postgresql.v1.service.port" . }}
+{{- $customUser := include "postgresql.v1.username" . }}
+{{- $postgresPassword := include "common.secrets.lookup" (dict "secret" (include "postgresql.v1.secretName" .) "key" .Values.auth.secretKeys.adminPasswordKey "defaultValue" (ternary (coalesce .Values.global.postgresql.auth.password .Values.auth.password .Values.global.postgresql.auth.postgresPassword .Values.auth.postgresPassword) (coalesce .Values.global.postgresql.auth.postgresPassword .Values.auth.postgresPassword) (or (empty $customUser) (eq $customUser "postgres"))) "context" $) | trimAll "\"" | b64dec }}
 {{- if and (not $postgresPassword) .Values.auth.enablePostgresUser }}
 {{- $postgresPassword = randAlphaNum 10 }}
 {{- end }}
 {{- $replicationPassword := "" }}
 {{- if eq .Values.architecture "replication" }}
-{{- $replicationPassword = include "common.secrets.passwords.manage" (dict "secret" (include "postgresql.secretName" .) "key" .Values.auth.secretKeys.replicationPasswordKey "providedValues" (list "auth.replicationPassword") "context" $) | trimAll "\"" | b64dec }}
+{{- $replicationPassword = include "common.secrets.passwords.manage" (dict "secret" (include "postgresql.v1.secretName" .) "key" .Values.auth.secretKeys.replicationPasswordKey "providedValues" (list "auth.replicationPassword") "context" $) | trimAll "\"" | b64dec }}
 {{- end }}
 {{- $ldapPassword := "" }}
 {{- if and .Values.ldap.enabled (or .Values.ldap.bind_password .Values.ldap.bindpw) }}
@@ -20,10 +20,10 @@ SPDX-License-Identifier: APACHE-2.0
 {{- end }}
 {{- $password := "" }}
 {{- if and (not (empty $customUser)) (ne $customUser "postgres") }}
-{{- $password = include "common.secrets.passwords.manage" (dict "secret" (include "postgresql.secretName" .) "key" .Values.auth.secretKeys.userPasswordKey "providedValues" (list "global.postgresql.auth.password" "auth.password") "context" $) | trimAll "\"" | b64dec }}
+{{- $password = include "common.secrets.passwords.manage" (dict "secret" (include "postgresql.v1.secretName" .) "key" .Values.auth.secretKeys.userPasswordKey "providedValues" (list "global.postgresql.auth.password" "auth.password") "context" $) | trimAll "\"" | b64dec }}
 {{- end }}
-{{- $database := include "postgresql.database" . }}
-{{- if (include "postgresql.createSecret" .) }}
+{{- $database := include "postgresql.v1.database" . }}
+{{- if (include "postgresql.v1.createSecret" .) }}
 apiVersion: v1
 kind: Secret
 metadata:
diff --git a/charts/bitnami/postgresql/templates/serviceaccount.yaml b/charts/bitnami/postgresql/templates/serviceaccount.yaml
index 245e66a91..8886bffc0 100644
--- a/charts/bitnami/postgresql/templates/serviceaccount.yaml
+++ b/charts/bitnami/postgresql/templates/serviceaccount.yaml
@@ -7,11 +7,11 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: v1
 kind: ServiceAccount
 metadata:
-  name: {{ include "postgresql.serviceAccountName" . }}
+  name: {{ include "postgresql.v1.serviceAccountName" . }}
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if or .Values.serviceAccount.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.serviceAccount.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.serviceAccount.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
diff --git a/charts/bitnami/postgresql/templates/tls-secrets.yaml b/charts/bitnami/postgresql/templates/tls-secrets.yaml
index 3374206e8..7e44a437c 100644
--- a/charts/bitnami/postgresql/templates/tls-secrets.yaml
+++ b/charts/bitnami/postgresql/templates/tls-secrets.yaml
@@ -3,14 +3,14 @@ Copyright VMware, Inc.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
-{{- if (include "postgresql.createTlsSecret" . ) }}
+{{- if (include "postgresql.v1.createTlsSecret" . ) }}
 {{- $secretName := printf "%s-crt" (include "common.names.fullname" .) }}
 {{- $ca := genCA "postgresql-ca" 365 }}
 {{- $fullname := include "common.names.fullname" . }}
 {{- $releaseNamespace := .Release.Namespace }}
 {{- $clusterDomain := .Values.clusterDomain }}
-{{- $primaryHeadlessServiceName := include "postgresql.primary.svc.headless" . }}
-{{- $readHeadlessServiceName := include "postgresql.readReplica.svc.headless" . }}
+{{- $primaryHeadlessServiceName := include "postgresql.v1.primary.svc.headless" . }}
+{{- $readHeadlessServiceName := include "postgresql.v1.readReplica.svc.headless" . }}
 {{- $altNames := list (printf "*.%s.%s.svc.%s" $fullname $releaseNamespace $clusterDomain) (printf "%s.%s.svc.%s" $fullname $releaseNamespace $clusterDomain) (printf "*.%s.%s.svc.%s" $primaryHeadlessServiceName $releaseNamespace $clusterDomain) (printf "%s.%s.svc.%s" $primaryHeadlessServiceName $releaseNamespace $clusterDomain) (printf "*.%s.%s.svc.%s" $readHeadlessServiceName $releaseNamespace $clusterDomain) (printf "%s.%s.svc.%s" $readHeadlessServiceName $releaseNamespace $clusterDomain) $fullname }}
 {{- $cert := genSignedCert $fullname nil $altNames 365 $ca }}
 apiVersion: v1
diff --git a/charts/bitnami/spark/Chart.lock b/charts/bitnami/spark/Chart.lock
index 256da0291..8b2df585d 100644
--- a/charts/bitnami/spark/Chart.lock
+++ b/charts/bitnami/spark/Chart.lock
@@ -1,6 +1,6 @@
 dependencies:
 - name: common
   repository: oci://registry-1.docker.io/bitnamicharts
-  version: 2.9.0
-digest: sha256:416ad278a896f0e9b51d5305bef5d875c7cca6fbb64b75e1f131b04763e2aff9
-generated: "2023-08-22T15:11:41.684754939Z"
+  version: 2.10.0
+digest: sha256:023ded170632d04528f30332370f34fc8fb96efb2886a01d934cb3bd6e6d2e09
+generated: "2023-09-05T11:36:18.65087+02:00"
diff --git a/charts/bitnami/spark/Chart.yaml b/charts/bitnami/spark/Chart.yaml
index 05edcde0a..3e79779d5 100644
--- a/charts/bitnami/spark/Chart.yaml
+++ b/charts/bitnami/spark/Chart.yaml
@@ -30,4 +30,4 @@ maintainers:
 name: spark
 sources:
 - https://github.com/bitnami/charts/tree/main/bitnami/spark
-version: 7.2.0
+version: 7.2.1
diff --git a/charts/bitnami/spark/charts/common/Chart.yaml b/charts/bitnami/spark/charts/common/Chart.yaml
index 644d2a798..e35c2d0e7 100644
--- a/charts/bitnami/spark/charts/common/Chart.yaml
+++ b/charts/bitnami/spark/charts/common/Chart.yaml
@@ -2,7 +2,7 @@ annotations:
   category: Infrastructure
   licenses: Apache-2.0
 apiVersion: v2
-appVersion: 2.9.0
+appVersion: 2.9.2
 description: A Library Helm Chart for grouping common logic between bitnami charts.
   This chart is not deployable by itself.
 home: https://bitnami.com
@@ -20,4 +20,4 @@ name: common
 sources:
 - https://github.com/bitnami/charts
 type: library
-version: 2.9.0
+version: 2.10.0
diff --git a/charts/bitnami/spark/charts/common/templates/_affinities.tpl b/charts/bitnami/spark/charts/common/templates/_affinities.tpl
index b77534bb9..e85b1df45 100644
--- a/charts/bitnami/spark/charts/common/templates/_affinities.tpl
+++ b/charts/bitnami/spark/charts/common/templates/_affinities.tpl
@@ -60,12 +60,13 @@ Return a topologyKey definition
 
 {{/*
 Return a soft podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}}
+{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
 */}}
 {{- define "common.affinities.pods.soft" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
 preferredDuringSchedulingIgnoredDuringExecution:
   - podAffinityTerm:
       labelSelector:
@@ -78,16 +79,30 @@ preferredDuringSchedulingIgnoredDuringExecution:
           {{- end }}
       topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
     weight: 1
+  {{- range $extraPodAffinityTerms }}
+  - podAffinityTerm:
+      labelSelector:
+        matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 10 }}
+          {{- if not (empty $component) }}
+          {{ printf "app.kubernetes.io/component: %s" $component }}
+          {{- end }}
+          {{- range $key, $value := .extraMatchLabels }}
+          {{ $key }}: {{ $value | quote }}
+          {{- end }}
+      topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+    weight: {{ .weight | default 1 -}}
+  {{- end -}}
 {{- end -}}
 
 {{/*
 Return a hard podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}}
+{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
 */}}
 {{- define "common.affinities.pods.hard" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
 requiredDuringSchedulingIgnoredDuringExecution:
   - labelSelector:
       matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" .context )) | nindent 8 }}
@@ -98,6 +113,17 @@ requiredDuringSchedulingIgnoredDuringExecution:
         {{ $key }}: {{ $value | quote }}
         {{- end }}
     topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- range $extraPodAffinityTerms }}
+  - labelSelector:
+      matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 8 }}
+        {{- if not (empty $component) }}
+        {{ printf "app.kubernetes.io/component: %s" $component }}
+        {{- end }}
+        {{- range $key, $value := .extraMatchLabels }}
+        {{ $key }}: {{ $value | quote }}
+        {{- end }}
+    topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- end -}}
 {{- end -}}
 
 {{/*
diff --git a/charts/bitnami/spark/charts/common/templates/_tplvalues.tpl b/charts/bitnami/spark/charts/common/templates/_tplvalues.tpl
index dc15f7fdc..a8ed7637e 100644
--- a/charts/bitnami/spark/charts/common/templates/_tplvalues.tpl
+++ b/charts/bitnami/spark/charts/common/templates/_tplvalues.tpl
@@ -11,17 +11,28 @@ Usage:
 {{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ "scope" $app ) }}
 */}}
 {{- define "common.tplvalues.render" -}}
-{{- if .scope }}
-  {{- if typeIs "string" .value }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" .value  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+{{- $value := typeIs "string" .value | ternary .value (.value | toYaml) }}
+{{- if contains "{{" (toJson .value) }}
+  {{- if .scope }}
+      {{- tpl (cat "{{- with $.RelativeScope -}}" $value "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
   {{- else }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" (.value | toYaml)  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+    {{- tpl $value .context }}
   {{- end }}
 {{- else }}
-  {{- if typeIs "string" .value }}
-    {{- tpl .value .context }}
-  {{- else }}
-    {{- tpl (.value | toYaml) .context }}
-  {{- end }}
+    {{- $value }}
+{{- end }}
 {{- end -}}
+
+{{/*
+Merge a list of values that contains template after rendering them.
+Merge precedence is consistent with http://masterminds.github.io/sprig/dicts.html#merge-mustmerge
+Usage:
+{{ include "common.tplvalues.merge" ( dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $ ) }}
+*/}}
+{{- define "common.tplvalues.merge" -}}
+{{- $dst := dict -}}
+{{- range .values -}}
+{{- $dst = include "common.tplvalues.render" (dict "value" . "context" $.context "scope" $.scope) | fromYaml | merge $dst -}}
+{{- end -}}
+{{ $dst | toYaml }}
 {{- end -}}
diff --git a/charts/bitnami/spark/templates/headless-svc.yaml b/charts/bitnami/spark/templates/headless-svc.yaml
index 92e9ed791..a75f6f8bb 100644
--- a/charts/bitnami/spark/templates/headless-svc.yaml
+++ b/charts/bitnami/spark/templates/headless-svc.yaml
@@ -10,7 +10,7 @@ metadata:
   namespace: {{ include "common.names.namespace" . | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if or .Values.service.headless.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.service.headless.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.service.headless.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
diff --git a/charts/bitnami/spark/templates/ingress.yaml b/charts/bitnami/spark/templates/ingress.yaml
index e39630cc5..327576046 100644
--- a/charts/bitnami/spark/templates/ingress.yaml
+++ b/charts/bitnami/spark/templates/ingress.yaml
@@ -12,7 +12,7 @@ metadata:
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: ingress
   {{- if or .Values.ingress.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.ingress.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.ingress.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
diff --git a/charts/bitnami/spark/templates/serviceaccount.yaml b/charts/bitnami/spark/templates/serviceaccount.yaml
index b7ce9be64..46f64f550 100644
--- a/charts/bitnami/spark/templates/serviceaccount.yaml
+++ b/charts/bitnami/spark/templates/serviceaccount.yaml
@@ -11,7 +11,7 @@ metadata:
   namespace: {{ include "common.names.namespace" . | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if or .Values.serviceAccount.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.serviceAccount.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.serviceAccount.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
diff --git a/charts/bitnami/spark/templates/statefulset-master.yaml b/charts/bitnami/spark/templates/statefulset-master.yaml
index 1f8bc01d3..f3630d25f 100644
--- a/charts/bitnami/spark/templates/statefulset-master.yaml
+++ b/charts/bitnami/spark/templates/statefulset-master.yaml
@@ -19,7 +19,7 @@ spec:
   {{- if .Values.master.updateStrategy }}
   updateStrategy: {{- toYaml .Values.master.updateStrategy | nindent 4 }}
   {{- end }}
-  {{- $podLabels := merge .Values.master.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.master.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: master
diff --git a/charts/bitnami/spark/templates/statefulset-worker.yaml b/charts/bitnami/spark/templates/statefulset-worker.yaml
index 22584a91d..c43b25dd5 100644
--- a/charts/bitnami/spark/templates/statefulset-worker.yaml
+++ b/charts/bitnami/spark/templates/statefulset-worker.yaml
@@ -20,7 +20,7 @@ spec:
   {{- if .Values.worker.updateStrategy }}
   updateStrategy: {{- toYaml .Values.worker.updateStrategy | nindent 4 }}
   {{- end }}
-  {{- $podLabels := merge .Values.worker.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.worker.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
       app.kubernetes.io/component: worker
diff --git a/charts/bitnami/spark/templates/svc-master.yaml b/charts/bitnami/spark/templates/svc-master.yaml
index e5a2eeb62..49ee20904 100644
--- a/charts/bitnami/spark/templates/svc-master.yaml
+++ b/charts/bitnami/spark/templates/svc-master.yaml
@@ -11,7 +11,7 @@ metadata:
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: master
   {{- if or .Values.commonAnnotations .Values.service.annotations }}
-  {{- $annotations := merge .Values.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -67,6 +67,6 @@ spec:
     {{- if .Values.service.extraPorts }}
     {{- include "common.tplvalues.render" (dict "value" .Values.service.extraPorts "context" $) | nindent 4 }}
     {{- end }}
-  {{- $podLabels := merge .Values.master.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.master.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: master
diff --git a/charts/bitnami/tomcat/Chart.lock b/charts/bitnami/tomcat/Chart.lock
index a6968b851..e77396cd2 100644
--- a/charts/bitnami/tomcat/Chart.lock
+++ b/charts/bitnami/tomcat/Chart.lock
@@ -1,6 +1,6 @@
 dependencies:
 - name: common
   repository: oci://registry-1.docker.io/bitnamicharts
-  version: 2.9.0
-digest: sha256:416ad278a896f0e9b51d5305bef5d875c7cca6fbb64b75e1f131b04763e2aff9
-generated: "2023-08-22T14:34:01.719209+02:00"
+  version: 2.10.0
+digest: sha256:023ded170632d04528f30332370f34fc8fb96efb2886a01d934cb3bd6e6d2e09
+generated: "2023-09-05T11:36:42.059722+02:00"
diff --git a/charts/bitnami/tomcat/Chart.yaml b/charts/bitnami/tomcat/Chart.yaml
index 7c46bff95..05001319f 100644
--- a/charts/bitnami/tomcat/Chart.yaml
+++ b/charts/bitnami/tomcat/Chart.yaml
@@ -38,4 +38,4 @@ maintainers:
 name: tomcat
 sources:
 - https://github.com/bitnami/charts/tree/main/bitnami/tomcat
-version: 10.10.2
+version: 10.10.3
diff --git a/charts/bitnami/tomcat/charts/common/Chart.yaml b/charts/bitnami/tomcat/charts/common/Chart.yaml
index 644d2a798..e35c2d0e7 100644
--- a/charts/bitnami/tomcat/charts/common/Chart.yaml
+++ b/charts/bitnami/tomcat/charts/common/Chart.yaml
@@ -2,7 +2,7 @@ annotations:
   category: Infrastructure
   licenses: Apache-2.0
 apiVersion: v2
-appVersion: 2.9.0
+appVersion: 2.9.2
 description: A Library Helm Chart for grouping common logic between bitnami charts.
   This chart is not deployable by itself.
 home: https://bitnami.com
@@ -20,4 +20,4 @@ name: common
 sources:
 - https://github.com/bitnami/charts
 type: library
-version: 2.9.0
+version: 2.10.0
diff --git a/charts/bitnami/tomcat/charts/common/templates/_affinities.tpl b/charts/bitnami/tomcat/charts/common/templates/_affinities.tpl
index b77534bb9..e85b1df45 100644
--- a/charts/bitnami/tomcat/charts/common/templates/_affinities.tpl
+++ b/charts/bitnami/tomcat/charts/common/templates/_affinities.tpl
@@ -60,12 +60,13 @@ Return a topologyKey definition
 
 {{/*
 Return a soft podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}}
+{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
 */}}
 {{- define "common.affinities.pods.soft" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
 preferredDuringSchedulingIgnoredDuringExecution:
   - podAffinityTerm:
       labelSelector:
@@ -78,16 +79,30 @@ preferredDuringSchedulingIgnoredDuringExecution:
           {{- end }}
       topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
     weight: 1
+  {{- range $extraPodAffinityTerms }}
+  - podAffinityTerm:
+      labelSelector:
+        matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 10 }}
+          {{- if not (empty $component) }}
+          {{ printf "app.kubernetes.io/component: %s" $component }}
+          {{- end }}
+          {{- range $key, $value := .extraMatchLabels }}
+          {{ $key }}: {{ $value | quote }}
+          {{- end }}
+      topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+    weight: {{ .weight | default 1 -}}
+  {{- end -}}
 {{- end -}}
 
 {{/*
 Return a hard podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}}
+{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
 */}}
 {{- define "common.affinities.pods.hard" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
 requiredDuringSchedulingIgnoredDuringExecution:
   - labelSelector:
       matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" .context )) | nindent 8 }}
@@ -98,6 +113,17 @@ requiredDuringSchedulingIgnoredDuringExecution:
         {{ $key }}: {{ $value | quote }}
         {{- end }}
     topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- range $extraPodAffinityTerms }}
+  - labelSelector:
+      matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 8 }}
+        {{- if not (empty $component) }}
+        {{ printf "app.kubernetes.io/component: %s" $component }}
+        {{- end }}
+        {{- range $key, $value := .extraMatchLabels }}
+        {{ $key }}: {{ $value | quote }}
+        {{- end }}
+    topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- end -}}
 {{- end -}}
 
 {{/*
diff --git a/charts/bitnami/tomcat/charts/common/templates/_tplvalues.tpl b/charts/bitnami/tomcat/charts/common/templates/_tplvalues.tpl
index dc15f7fdc..a8ed7637e 100644
--- a/charts/bitnami/tomcat/charts/common/templates/_tplvalues.tpl
+++ b/charts/bitnami/tomcat/charts/common/templates/_tplvalues.tpl
@@ -11,17 +11,28 @@ Usage:
 {{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ "scope" $app ) }}
 */}}
 {{- define "common.tplvalues.render" -}}
-{{- if .scope }}
-  {{- if typeIs "string" .value }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" .value  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+{{- $value := typeIs "string" .value | ternary .value (.value | toYaml) }}
+{{- if contains "{{" (toJson .value) }}
+  {{- if .scope }}
+      {{- tpl (cat "{{- with $.RelativeScope -}}" $value "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
   {{- else }}
-    {{- tpl (cat "{{- with $.RelativeScope -}}" (.value | toYaml)  "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+    {{- tpl $value .context }}
   {{- end }}
 {{- else }}
-  {{- if typeIs "string" .value }}
-    {{- tpl .value .context }}
-  {{- else }}
-    {{- tpl (.value | toYaml) .context }}
-  {{- end }}
+    {{- $value }}
+{{- end }}
 {{- end -}}
+
+{{/*
+Merge a list of values that contains template after rendering them.
+Merge precedence is consistent with http://masterminds.github.io/sprig/dicts.html#merge-mustmerge
+Usage:
+{{ include "common.tplvalues.merge" ( dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $ ) }}
+*/}}
+{{- define "common.tplvalues.merge" -}}
+{{- $dst := dict -}}
+{{- range .values -}}
+{{- $dst = include "common.tplvalues.render" (dict "value" . "context" $.context "scope" $.scope) | fromYaml | merge $dst -}}
+{{- end -}}
+{{ $dst | toYaml }}
 {{- end -}}
diff --git a/charts/bitnami/tomcat/templates/_pod.tpl b/charts/bitnami/tomcat/templates/_pod.tpl
index d083b3a81..c3b0564c2 100644
--- a/charts/bitnami/tomcat/templates/_pod.tpl
+++ b/charts/bitnami/tomcat/templates/_pod.tpl
@@ -14,7 +14,7 @@ hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.hostAli
 {{- if .Values.affinity }}
 affinity: {{- include "common.tplvalues.render" (dict "value" .Values.affinity "context" $) | nindent 2 }}
 {{- else }}
-{{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+{{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
 affinity:
   podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAffinityPreset "customLabels" $podLabels "context" $) | nindent 4 }}
   podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAntiAffinityPreset "customLabels" $podLabels "context" $) | nindent 4 }}
diff --git a/charts/bitnami/tomcat/templates/deployment.yaml b/charts/bitnami/tomcat/templates/deployment.yaml
index b244d3083..fb3c2eba0 100644
--- a/charts/bitnami/tomcat/templates/deployment.yaml
+++ b/charts/bitnami/tomcat/templates/deployment.yaml
@@ -15,7 +15,7 @@ metadata:
   {{- end }}
 spec:
   replicas: {{ .Values.replicaCount }}
-  {{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
   strategy: {{- include "common.tplvalues.render" (dict "value" .Values.updateStrategy "context" $ ) | nindent 4 }}
diff --git a/charts/bitnami/tomcat/templates/ingress.yaml b/charts/bitnami/tomcat/templates/ingress.yaml
index d7aeaec7c..9ee8edb2e 100644
--- a/charts/bitnami/tomcat/templates/ingress.yaml
+++ b/charts/bitnami/tomcat/templates/ingress.yaml
@@ -16,7 +16,7 @@ metadata:
     kubernetes.io/tls-acme: "true"
     {{- end }}
     {{- if or .Values.ingress.annotations .Values.commonAnnotations }}
-    {{- $annotations := merge .Values.ingress.annotations .Values.commonAnnotations }}
+    {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.ingress.annotations .Values.commonAnnotations ) "context" . ) }}
     {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
     {{- end }}
   {{- end }}
diff --git a/charts/bitnami/tomcat/templates/networkpolicy.yaml b/charts/bitnami/tomcat/templates/networkpolicy.yaml
index adc89a222..efbe385a6 100644
--- a/charts/bitnami/tomcat/templates/networkpolicy.yaml
+++ b/charts/bitnami/tomcat/templates/networkpolicy.yaml
@@ -14,7 +14,7 @@ metadata:
   {{- end }}
   namespace: {{ .Release.Namespace }}
 spec:
-  {{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
   podSelector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
   ingress:
diff --git a/charts/bitnami/tomcat/templates/podmonitor.yaml b/charts/bitnami/tomcat/templates/podmonitor.yaml
index e9b5e4483..fa9b2c9a9 100644
--- a/charts/bitnami/tomcat/templates/podmonitor.yaml
+++ b/charts/bitnami/tomcat/templates/podmonitor.yaml
@@ -37,7 +37,7 @@ spec:
   namespaceSelector:
     matchNames:
       - {{ .Release.Namespace }}
-  {{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
 {{- end }}
diff --git a/charts/bitnami/tomcat/templates/statefulset.yaml b/charts/bitnami/tomcat/templates/statefulset.yaml
index a0cddeb85..6aeed9711 100644
--- a/charts/bitnami/tomcat/templates/statefulset.yaml
+++ b/charts/bitnami/tomcat/templates/statefulset.yaml
@@ -18,7 +18,7 @@ spec:
   {{- if .Values.podManagementPolicy }}
   podManagementPolicy: {{ .Values.podManagementPolicy }}
   {{- end }}
-  {{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
   updateStrategy: {{- include "common.tplvalues.render" (dict "value" .Values.updateStrategy "context" $ ) | nindent 4 }}
diff --git a/charts/bitnami/tomcat/templates/svc-headless.yaml b/charts/bitnami/tomcat/templates/svc-headless.yaml
index 327144896..434534148 100644
--- a/charts/bitnami/tomcat/templates/svc-headless.yaml
+++ b/charts/bitnami/tomcat/templates/svc-headless.yaml
@@ -11,12 +11,12 @@ metadata:
   namespace: {{ .Release.Namespace }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if or .Values.service.headless.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.service.headless.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.service.headless.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
   clusterIP: None
   type: ClusterIP
-  {{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
 {{- end }}
diff --git a/charts/bitnami/tomcat/templates/svc.yaml b/charts/bitnami/tomcat/templates/svc.yaml
index 620ffac94..1c914069d 100644
--- a/charts/bitnami/tomcat/templates/svc.yaml
+++ b/charts/bitnami/tomcat/templates/svc.yaml
@@ -10,7 +10,7 @@ metadata:
   namespace: {{ .Release.Namespace }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if or .Values.service.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -45,5 +45,5 @@ spec:
     {{- if .Values.service.extraPorts }}
     {{- include "common.tplvalues.render" (dict "value" .Values.service.extraPorts "context" $) | nindent 4 }}
     {{- end }}
-  {{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
diff --git a/charts/bitnami/wordpress/Chart.lock b/charts/bitnami/wordpress/Chart.lock
index 3f506f1ad..4ef795a8d 100644
--- a/charts/bitnami/wordpress/Chart.lock
+++ b/charts/bitnami/wordpress/Chart.lock
@@ -7,6 +7,6 @@ dependencies:
   version: 13.1.2
 - name: common
   repository: oci://registry-1.docker.io/bitnamicharts
-  version: 2.9.2
-digest: sha256:467adda3c6f9bea1762beb6c252fd4d1a5ba52942ab1b9b48af60ac4e375783d
-generated: "2023-08-31T19:21:10.315977353Z"
+  version: 2.10.0
+digest: sha256:43e3c96b00ca0a4ab5c9c67a02dabe4622f5c1eee190765c5c57e1d5f020d1c0
+generated: "2023-09-05T11:36:53.092756+02:00"
diff --git a/charts/bitnami/wordpress/Chart.yaml b/charts/bitnami/wordpress/Chart.yaml
index 64001dff2..a89ae6493 100644
--- a/charts/bitnami/wordpress/Chart.yaml
+++ b/charts/bitnami/wordpress/Chart.yaml
@@ -47,4 +47,4 @@ maintainers:
 name: wordpress
 sources:
 - https://github.com/bitnami/charts/tree/main/bitnami/wordpress
-version: 17.1.6
+version: 17.1.7
diff --git a/charts/bitnami/wordpress/charts/common/Chart.yaml b/charts/bitnami/wordpress/charts/common/Chart.yaml
index 67e9a92ce..e35c2d0e7 100644
--- a/charts/bitnami/wordpress/charts/common/Chart.yaml
+++ b/charts/bitnami/wordpress/charts/common/Chart.yaml
@@ -20,4 +20,4 @@ name: common
 sources:
 - https://github.com/bitnami/charts
 type: library
-version: 2.9.2
+version: 2.10.0
diff --git a/charts/bitnami/wordpress/charts/common/templates/_tplvalues.tpl b/charts/bitnami/wordpress/charts/common/templates/_tplvalues.tpl
index edf99392c..a8ed7637e 100644
--- a/charts/bitnami/wordpress/charts/common/templates/_tplvalues.tpl
+++ b/charts/bitnami/wordpress/charts/common/templates/_tplvalues.tpl
@@ -22,3 +22,17 @@ Usage:
     {{- $value }}
 {{- end }}
 {{- end -}}
+
+{{/*
+Merge a list of values that contains template after rendering them.
+Merge precedence is consistent with http://masterminds.github.io/sprig/dicts.html#merge-mustmerge
+Usage:
+{{ include "common.tplvalues.merge" ( dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $ ) }}
+*/}}
+{{- define "common.tplvalues.merge" -}}
+{{- $dst := dict -}}
+{{- range .values -}}
+{{- $dst = include "common.tplvalues.render" (dict "value" . "context" $.context "scope" $.scope) | fromYaml | merge $dst -}}
+{{- end -}}
+{{ $dst | toYaml }}
+{{- end -}}
diff --git a/charts/bitnami/wordpress/templates/deployment.yaml b/charts/bitnami/wordpress/templates/deployment.yaml
index c09d785be..96cee8242 100644
--- a/charts/bitnami/wordpress/templates/deployment.yaml
+++ b/charts/bitnami/wordpress/templates/deployment.yaml
@@ -13,7 +13,7 @@ metadata:
   annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
   {{- end }}
 spec:
-  {{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
   {{- if .Values.updateStrategy }}
diff --git a/charts/bitnami/wordpress/templates/ingress.yaml b/charts/bitnami/wordpress/templates/ingress.yaml
index c51e9728c..3fe25b40d 100644
--- a/charts/bitnami/wordpress/templates/ingress.yaml
+++ b/charts/bitnami/wordpress/templates/ingress.yaml
@@ -11,7 +11,7 @@ metadata:
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if or .Values.ingress.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.ingress.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.ingress.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
diff --git a/charts/bitnami/wordpress/templates/metrics-svc.yaml b/charts/bitnami/wordpress/templates/metrics-svc.yaml
index b78c6f726..1731ac3d6 100644
--- a/charts/bitnami/wordpress/templates/metrics-svc.yaml
+++ b/charts/bitnami/wordpress/templates/metrics-svc.yaml
@@ -12,7 +12,7 @@ metadata:
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics
   {{- if or .Values.metrics.service.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.metrics.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -22,6 +22,6 @@ spec:
       port: {{ .Values.metrics.service.ports.metrics }}
       protocol: TCP
       targetPort: metrics
-  {{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
 {{- end }}
diff --git a/charts/bitnami/wordpress/templates/networkpolicy-backend-ingress.yaml b/charts/bitnami/wordpress/templates/networkpolicy-backend-ingress.yaml
index 149fb8c9b..71332563d 100644
--- a/charts/bitnami/wordpress/templates/networkpolicy-backend-ingress.yaml
+++ b/charts/bitnami/wordpress/templates/networkpolicy-backend-ingress.yaml
@@ -25,6 +25,6 @@ spec:
   ingress:
     - from:
         - podSelector:
-            {{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+            {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
             matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 14 }}
 {{- end }}
diff --git a/charts/bitnami/wordpress/templates/networkpolicy-ingress.yaml b/charts/bitnami/wordpress/templates/networkpolicy-ingress.yaml
index b91bcb00d..c05c1e6e9 100644
--- a/charts/bitnami/wordpress/templates/networkpolicy-ingress.yaml
+++ b/charts/bitnami/wordpress/templates/networkpolicy-ingress.yaml
@@ -14,7 +14,7 @@ metadata:
   annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
   {{- end }}
 spec:
-  {{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
   podSelector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
   ingress:
diff --git a/charts/bitnami/wordpress/templates/pdb.yaml b/charts/bitnami/wordpress/templates/pdb.yaml
index f7c1c9dc3..07c37776a 100644
--- a/charts/bitnami/wordpress/templates/pdb.yaml
+++ b/charts/bitnami/wordpress/templates/pdb.yaml
@@ -20,7 +20,7 @@ spec:
   {{- if .Values.pdb.maxUnavailable }}
   maxUnavailable: {{ .Values.pdb.maxUnavailable }}
   {{- end }}
-  {{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
     matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
 {{- end }}
diff --git a/charts/bitnami/wordpress/templates/pvc.yaml b/charts/bitnami/wordpress/templates/pvc.yaml
index fd5d6ce65..9d4f62f94 100644
--- a/charts/bitnami/wordpress/templates/pvc.yaml
+++ b/charts/bitnami/wordpress/templates/pvc.yaml
@@ -11,7 +11,7 @@ metadata:
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if or .Values.persistence.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.persistence.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.persistence.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
diff --git a/charts/bitnami/wordpress/templates/serviceaccount.yaml b/charts/bitnami/wordpress/templates/serviceaccount.yaml
index b83e6c463..0ee982a8a 100644
--- a/charts/bitnami/wordpress/templates/serviceaccount.yaml
+++ b/charts/bitnami/wordpress/templates/serviceaccount.yaml
@@ -11,7 +11,7 @@ metadata:
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if or .Values.serviceAccount.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.serviceAccount.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.serviceAccount.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
diff --git a/charts/bitnami/wordpress/templates/servicemonitor.yaml b/charts/bitnami/wordpress/templates/servicemonitor.yaml
index 54f73d096..e0aa8a9b3 100644
--- a/charts/bitnami/wordpress/templates/servicemonitor.yaml
+++ b/charts/bitnami/wordpress/templates/servicemonitor.yaml
@@ -9,7 +9,7 @@ kind: ServiceMonitor
 metadata:
   name: {{ include "common.names.fullname" . }}
   namespace: {{ default .Release.Namespace .Values.metrics.serviceMonitor.namespace | quote }}
-  {{- $labels := merge .Values.metrics.serviceMonitor.labels .Values.commonLabels }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.labels .Values.commonLabels ) "context" . ) }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: metrics
   {{- if .Values.commonAnnotations }}
diff --git a/charts/bitnami/wordpress/templates/svc.yaml b/charts/bitnami/wordpress/templates/svc.yaml
index af45db351..b8739e192 100644
--- a/charts/bitnami/wordpress/templates/svc.yaml
+++ b/charts/bitnami/wordpress/templates/svc.yaml
@@ -10,7 +10,7 @@ metadata:
   namespace: {{ .Release.Namespace | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
   {{- if or .Values.service.annotations .Values.commonAnnotations }}
-  {{- $annotations := merge .Values.service.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.service.annotations .Values.commonAnnotations ) "context" . ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
@@ -55,5 +55,5 @@ spec:
     {{- if .Values.service.extraPorts }}
     {{- include "common.tplvalues.render" (dict "value" .Values.service.extraPorts "context" $) | nindent 4 }}
     {{- end }}
-  {{- $podLabels := merge .Values.podLabels .Values.commonLabels }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
   selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
diff --git a/charts/clastix/kamaji/Chart.yaml b/charts/clastix/kamaji/Chart.yaml
index 3b65c7a4d..0927368f1 100644
--- a/charts/clastix/kamaji/Chart.yaml
+++ b/charts/clastix/kamaji/Chart.yaml
@@ -4,13 +4,8 @@ annotations:
   catalog.cattle.io/kube-version: '>=1.21.0-0'
   catalog.cattle.io/release-name: kamaji
 apiVersion: v2
-appVersion: v0.3.3
-description: Kamaji deploys and operates Kubernetes at scale with a fraction of the
-  operational burden. Kamaji turns any Kubernetes cluster into an “admin cluster”
-  to orchestrate other Kubernetes clusters called “tenant clusters”. Kamaji is special
-  because the Control Plane components are running in a single pod instead of dedicated
-  machines. This solution makes running multiple Control Planes cheaper and easier
-  to deploy and operate.
+appVersion: v0.3.4
+description: Kamaji is a Kubernetes Control Plane Manager.
 home: https://github.com/clastix/kamaji
 icon: https://github.com/clastix/kamaji/raw/master/assets/logo-colored.png
 kubeVersion: '>=1.21.0-0'
@@ -25,4 +20,4 @@ name: kamaji
 sources:
 - https://github.com/clastix/kamaji
 type: application
-version: 0.12.4
+version: 0.12.5
diff --git a/charts/clastix/kamaji/README.md b/charts/clastix/kamaji/README.md
index 16ecf2998..54a5c9117 100644
--- a/charts/clastix/kamaji/README.md
+++ b/charts/clastix/kamaji/README.md
@@ -1,8 +1,8 @@
 # kamaji
 
-![Version: 0.12.4](https://img.shields.io/badge/Version-0.12.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.3.3](https://img.shields.io/badge/AppVersion-v0.3.3-informational?style=flat-square)
+![Version: 0.12.5](https://img.shields.io/badge/Version-0.12.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.3.4](https://img.shields.io/badge/AppVersion-v0.3.4-informational?style=flat-square)
 
-Kamaji deploys and operates Kubernetes at scale with a fraction of the operational burden. Kamaji turns any Kubernetes cluster into an “admin cluster” to orchestrate other Kubernetes clusters called “tenant clusters”. Kamaji is special because the Control Plane components are running in a single pod instead of dedicated machines. This solution makes running multiple Control Planes cheaper and easier to deploy and operate.
+Kamaji is a Kubernetes Control Plane Manager.
 
 ## Maintainers
 
diff --git a/charts/datadog/datadog/CHANGELOG.md b/charts/datadog/datadog/CHANGELOG.md
index 156ffc094..756acba93 100644
--- a/charts/datadog/datadog/CHANGELOG.md
+++ b/charts/datadog/datadog/CHANGELOG.md
@@ -1,5 +1,13 @@
 # Datadog changelog
 
+## 3.35.1
+
+* Add permissions to curl `/metrics/slis` to agent cluster role.
+
+## 3.35.0
+
+* Default `Agent` and `Cluster-Agent` to `7.47.0` version.
+
 ## 3.34.3
 
 * Fix extra empty line in helmchecks, issue [#953](https://github.com/DataDog/helm-charts/issues/953).
diff --git a/charts/datadog/datadog/Chart.yaml b/charts/datadog/datadog/Chart.yaml
index 5afddde26..6509178d0 100644
--- a/charts/datadog/datadog/Chart.yaml
+++ b/charts/datadog/datadog/Chart.yaml
@@ -19,4 +19,4 @@ name: datadog
 sources:
 - https://app.datadoghq.com/account/settings#agent/kubernetes
 - https://github.com/DataDog/datadog-agent
-version: 3.34.3
+version: 3.35.1
diff --git a/charts/datadog/datadog/README.md b/charts/datadog/datadog/README.md
index 79e066af4..b066915c5 100644
--- a/charts/datadog/datadog/README.md
+++ b/charts/datadog/datadog/README.md
@@ -1,6 +1,6 @@
 # Datadog
 
-![Version: 3.34.3](https://img.shields.io/badge/Version-3.34.3-informational?style=flat-square) ![AppVersion: 7](https://img.shields.io/badge/AppVersion-7-informational?style=flat-square)
+![Version: 3.35.1](https://img.shields.io/badge/Version-3.35.1-informational?style=flat-square) ![AppVersion: 7](https://img.shields.io/badge/AppVersion-7-informational?style=flat-square)
 
 [Datadog](https://www.datadoghq.com/) is a hosted infrastructure monitoring platform. This chart adds the Datadog Agent to all nodes in your cluster via a DaemonSet. It also optionally depends on the [kube-state-metrics chart](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-state-metrics). For more information about monitoring Kubernetes with Datadog, please refer to the [Datadog documentation website](https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/).
 
@@ -449,7 +449,7 @@ helm install <RELEASE_NAME> \
 | agents.image.pullPolicy | string | `"IfNotPresent"` | Datadog Agent image pull policy |
 | agents.image.pullSecrets | list | `[]` | Datadog Agent repository pullSecret (ex: specify docker registry credentials) |
 | agents.image.repository | string | `nil` | Override default registry + image.name for Agent |
-| agents.image.tag | string | `"7.46.0"` | Define the Agent version to use |
+| agents.image.tag | string | `"7.47.0"` | Define the Agent version to use |
 | agents.image.tagSuffix | string | `""` | Suffix to append to Agent tag |
 | agents.localService.forceLocalServiceEnabled | bool | `false` | Force the creation of the internal traffic policy service to target the agent running on the local node. By default, the internal traffic service is created only on Kubernetes 1.22+ where the feature became beta and enabled by default. This option allows to force the creation of the internal traffic service on kubernetes 1.21 where the feature was alpha and required a feature gate to be explicitly enabled. |
 | agents.localService.overrideName | string | `""` | Name of the internal traffic service to target the agent running on the local node |
@@ -513,7 +513,7 @@ helm install <RELEASE_NAME> \
 | clusterAgent.image.pullPolicy | string | `"IfNotPresent"` | Cluster Agent image pullPolicy |
 | clusterAgent.image.pullSecrets | list | `[]` | Cluster Agent repository pullSecret (ex: specify docker registry credentials) |
 | clusterAgent.image.repository | string | `nil` | Override default registry + image.name for Cluster Agent |
-| clusterAgent.image.tag | string | `"7.46.0"` | Cluster Agent image tag to use |
+| clusterAgent.image.tag | string | `"7.47.0"` | Cluster Agent image tag to use |
 | clusterAgent.livenessProbe | object | Every 15s / 6 KO / 1 OK | Override default Cluster Agent liveness probe settings |
 | clusterAgent.metricsProvider.aggregator | string | `"avg"` | Define the aggregator the cluster agent will use to process the metrics. The options are (avg, min, max, sum) |
 | clusterAgent.metricsProvider.createReaderRbac | bool | `true` | Create `external-metrics-reader` RBAC automatically (to allow HPA to read data from Cluster Agent) |
@@ -563,7 +563,7 @@ helm install <RELEASE_NAME> \
 | clusterChecksRunner.image.pullPolicy | string | `"IfNotPresent"` | Datadog Agent image pull policy |
 | clusterChecksRunner.image.pullSecrets | list | `[]` | Datadog Agent repository pullSecret (ex: specify docker registry credentials) |
 | clusterChecksRunner.image.repository | string | `nil` | Override default registry + image.name for Cluster Check Runners |
-| clusterChecksRunner.image.tag | string | `"7.46.0"` | Define the Agent version to use |
+| clusterChecksRunner.image.tag | string | `"7.47.0"` | Define the Agent version to use |
 | clusterChecksRunner.image.tagSuffix | string | `""` | Suffix to append to Agent tag |
 | clusterChecksRunner.livenessProbe | object | Every 15s / 6 KO / 1 OK | Override default agent liveness probe settings |
 | clusterChecksRunner.networkPolicy.create | bool | `false` | If true, create a NetworkPolicy for the cluster checks runners. DEPRECATED. Use datadog.networkPolicy.create instead |
diff --git a/charts/datadog/datadog/templates/rbac.yaml b/charts/datadog/datadog/templates/rbac.yaml
index d703ac363..2df90a93c 100644
--- a/charts/datadog/datadog/templates/rbac.yaml
+++ b/charts/datadog/datadog/templates/rbac.yaml
@@ -65,6 +65,7 @@ rules:
 {{- end }}
 - nonResourceURLs:
   - "/metrics"
+  - "/metrics/slis"
   verbs:
   - get
 - apiGroups:  # Kubelet connectivity
diff --git a/charts/datadog/datadog/values.yaml b/charts/datadog/datadog/values.yaml
index 71aa60ad9..ddb5ad1e7 100644
--- a/charts/datadog/datadog/values.yaml
+++ b/charts/datadog/datadog/values.yaml
@@ -812,7 +812,7 @@ clusterAgent:
     name: cluster-agent
 
     # clusterAgent.image.tag -- Cluster Agent image tag to use
-    tag: 7.46.0
+    tag: 7.47.0
 
     # clusterAgent.image.digest -- Cluster Agent image digest to use, takes precedence over tag if specified
     digest: ""
@@ -1220,7 +1220,7 @@ agents:
     name: agent
 
     # agents.image.tag -- Define the Agent version to use
-    tag: 7.46.0
+    tag: 7.47.0
 
     # agents.image.digest -- Define Agent image digest to use, takes precedence over tag if specified
     digest: ""
@@ -1686,7 +1686,7 @@ clusterChecksRunner:
     name: agent
 
     # clusterChecksRunner.image.tag -- Define the Agent version to use
-    tag: 7.46.0
+    tag: 7.47.0
 
     # clusterChecksRunner.image.digest -- Define Agent image digest to use, takes precedence over tag if specified
     digest: ""
diff --git a/charts/f5/f5-bigip-ctlr/Chart.yaml b/charts/f5/f5-bigip-ctlr/Chart.yaml
index 6b539f574..3ea13102e 100644
--- a/charts/f5/f5-bigip-ctlr/Chart.yaml
+++ b/charts/f5/f5-bigip-ctlr/Chart.yaml
@@ -22,4 +22,4 @@ name: f5-bigip-ctlr
 sources:
 - https://github.com/F5Networks/k8s-bigip-ctlr
 - https://github.com/F5Networks/charts
-version: 0.0.2501
+version: 0.0.2601
diff --git a/charts/f5/f5-bigip-ctlr/crds/f5-bigip-ctlr-customresourcedefinitions.yml b/charts/f5/f5-bigip-ctlr/crds/f5-bigip-ctlr-customresourcedefinitions.yml
index a42494832..d9b56e2f7 100644
--- a/charts/f5/f5-bigip-ctlr/crds/f5-bigip-ctlr-customresourcedefinitions.yml
+++ b/charts/f5/f5-bigip-ctlr/crds/f5-bigip-ctlr-customresourcedefinitions.yml
@@ -125,6 +125,64 @@ spec:
                       trafficGroup:
                         type: string
                         pattern: '^\/([A-z0-9-_+]+\/)+([-A-z0-9_.:]+\/?)*$'
+                defaultPool:
+                  type: object
+                  properties:
+                    name:
+                      type: string
+                      pattern: '^\/[a-zA-Z]+([A-z0-9-_+]+\/)+([-A-z0-9_.:]+\/?)*$'
+                    service:
+                      type: string
+                      pattern: '[a-z]([-a-z0-9]*[a-z0-9])?'
+                    servicePort:
+                      x-kubernetes-int-or-string: true
+                      anyOf:
+                        - type: integer
+                        - type: string
+                    serviceNamespace:
+                      type: string
+                      pattern: '^[a-zA-Z]+([-A-z0-9_.+:])*([A-z0-9])+$'
+                    loadBalancingMethod:
+                      type: string
+                      pattern: '^[a-z]+[a-z_-]+[a-z]+$'
+                    nodeMemberLabel:
+                      type: string
+                      pattern: '^[a-zA-Z0-9][-A-Za-z0-9_.\/]{0,61}[a-zA-Z0-9]=[a-zA-Z0-9][-A-Za-z0-9_.]{0,61}[a-zA-Z0-9]$'
+                    monitors:
+                      type: array
+                      items:
+                        type: object
+                        properties:
+                          type:
+                            type: string
+                            enum: [ tcp, udp, http, https ]
+                          interval:
+                            type: integer
+                          timeout:
+                            type: integer
+                          targetPort:
+                            type: integer
+                          name:
+                            type: string
+                            pattern: '^\/[a-zA-Z]+([A-z0-9-_+]+\/)+([-A-z0-9_.:]+\/?)*$'
+                          reference:
+                            type: string
+                            enum: [ bigip ]
+                          send:
+                            type: string
+                          recv:
+                            type: string
+                    reference:
+                      type: string
+                      enum: [ bigip, service ]
+                    reselectTries:
+                      type: integer
+                      minimum: 0
+                      maximum: 65535
+                    serviceDownAction:
+                      type: string
+                  required:
+                    - reference
                 pools:
                   type: array
                   items:
@@ -138,7 +196,7 @@ spec:
                         pattern: '^\/([A-z0-9-_+]+\/)*([-A-z0-9_.:]+\/?)*$'
                       service:
                         type: string
-                        pattern: '^[a-zA-Z]+([-A-z0-9_.+])*([A-z0-9])+$'
+                        pattern: '[a-z]([-a-z0-9]*[a-z0-9])?'
                       weight:
                         type: integer
                         minimum: 0
@@ -150,7 +208,7 @@ spec:
                           properties:
                             service:
                               type: string
-                              pattern: '^[a-zA-Z]+([-A-z0-9_.+])*([A-z0-9])+$'
+                              pattern: '[a-z]([-a-z0-9]*[a-z0-9])?'
                             serviceNamespace:
                               type: string
                               pattern: '^[a-zA-Z]+([-A-z0-9_.+:])*([A-z0-9])+$'
@@ -160,7 +218,6 @@ spec:
                               maximum: 256
                           required:
                             - service
-                            - weight
                       loadBalancingMethod:
                         type: string
                         pattern: '^[a-z]+[a-z_-]+[a-z]+$'
@@ -236,6 +293,27 @@ spec:
                         maximum: 65535
                       serviceDownAction:
                         type: string
+                      extendedServiceReferences:
+                        type: array
+                        items:
+                          type: object
+                          properties:
+                            clusterName:
+                              type: string
+                            serviceName:
+                              type: string
+                              pattern: '[a-z]([-a-z0-9]*[a-z0-9])?'
+                            namespace:
+                              type: string
+                            port:
+                              x-kubernetes-int-or-string: true
+                              anyOf:
+                                - type: integer
+                                - type: string
+                            weight:
+                              type: integer
+                              minimum: 0
+                              maximum: 256
                 virtualServerAddress:
                   type: string
                   pattern: '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$'
@@ -484,7 +562,7 @@ spec:
                       pattern: '^[a-zA-Z]+([-A-z0-9_.+:])*([A-z0-9])+$'
                     service:
                       type: string
-                      pattern: '^[a-zA-Z]+([-A-z0-9_.+])*([A-z0-9])+$'
+                      pattern: '[a-z]([-a-z0-9]*[a-z0-9])?'
                     servicePort:
                       x-kubernetes-int-or-string: true
                       anyOf:
@@ -551,12 +629,30 @@ spec:
                       maximum: 65535
                     serviceDownAction:
                       type: string
+                    extendedServiceReferences:
+                      type: array
+                      items:
+                        type: object
+                        properties:
+                          clusterName:
+                            type: string
+                          serviceName:
+                            type: string
+                            pattern: '[a-z]([-a-z0-9]*[a-z0-9])?'
+                          namespace:
+                            type: string
+                          port:
+                            x-kubernetes-int-or-string: true
+                            anyOf:
+                              - type: integer
+                              - type: string
                   required:
                       - service
                       - servicePort
               required:
                 - virtualServerPort
                 - pool
+                - mode
             status:
               type: object
               properties:
@@ -632,13 +728,30 @@ spec:
               properties:
                 domainName:
                   type: string
-                  pattern: '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$'
+                  pattern: '^(([a-zA-Z0-9\*]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$'
                 dnsRecordType:
                   type: string
                   pattern: 'A'
                 loadBalanceMethod:
                   type: string
                   pattern: '^[a-z]+[a-z_-]+[a-z]+$'
+                clientSubnetPreferred:
+                  type: boolean
+                persistenceEnabled:
+                  type: boolean
+                persistCidrIpv4:
+                  type: integer
+                  minimum: 0
+                  maximum: 32
+                persistCidrIpv6:
+                  type: integer
+                  minimum: 0
+                  maximum: 128
+                ttlPersistence:
+                  type: integer
+                  format: int64
+                  minimum: 0
+                  maximum: 4294967295
                 pools:
                   type: array
                   items:
@@ -653,6 +766,9 @@ spec:
                       loadBalanceMethod:
                         type: string
                         pattern: '^[a-z]+[a-z_-]+[a-z]+$'
+                      lbModeFallback:
+                        type: string
+                        pattern: '^[a-z]+[a-z_-]+[a-z]+$'
                       order:
                         type: integer
                       ratio:
@@ -899,6 +1015,9 @@ spec:
                     profileL4:
                       type: string
                       pattern: '^\/[a-zA-Z]+([A-z0-9-_+]+\/)+([-A-z0-9_.:]+\/?)*$'
+                    profileWebSocket:
+                      type: string
+                      pattern: '^\/[a-zA-Z]+([A-z0-9-_+]+\/)+([-A-z0-9_.:]+\/?)*$'
                     profileMultiplex:
                       type: string
                       pattern: '^\/[a-zA-Z]+([A-z0-9-_+]+\/)+([-A-z0-9_.:]+\/?)*$'
diff --git a/charts/haproxy/haproxy/Chart.yaml b/charts/haproxy/haproxy/Chart.yaml
index 7c0dc6ae9..15e4bb939 100644
--- a/charts/haproxy/haproxy/Chart.yaml
+++ b/charts/haproxy/haproxy/Chart.yaml
@@ -1,12 +1,13 @@
 annotations:
   artifacthub.io/changes: |
-    - Use Ingress Controller 1.10.6 version for base image
+    - Use Ingress Controller 1.10.7 version for base image
+    - Enable new Prometheus endpoint on tcp/6060 by default
   catalog.cattle.io/certified: partner
   catalog.cattle.io/display-name: HAProxy Kubernetes Ingress Controller
   catalog.cattle.io/kube-version: '>=1.22.0-0'
   catalog.cattle.io/release-name: haproxy
 apiVersion: v2
-appVersion: 1.10.6
+appVersion: 1.10.7
 description: A Helm chart for HAProxy Kubernetes Ingress Controller
 home: https://github.com/haproxytech/helm-charts/tree/main/kubernetes-ingress
 icon: https://raw.githubusercontent.com/haproxytech/helm-charts/main/kubernetes-ingress/chart-icon.png
@@ -21,4 +22,4 @@ name: haproxy
 sources:
 - https://github.com/haproxytech/kubernetes-ingress
 type: application
-version: 1.32.4
+version: 1.33.0
diff --git a/charts/haproxy/haproxy/templates/controller-daemonset.yaml b/charts/haproxy/haproxy/templates/controller-daemonset.yaml
index bf07d6024..5057dd8aa 100644
--- a/charts/haproxy/haproxy/templates/controller-daemonset.yaml
+++ b/charts/haproxy/haproxy/templates/controller-daemonset.yaml
@@ -112,6 +112,9 @@ spec:
 {{- if .Values.controller.logging.level }}
           - --log={{ .Values.controller.logging.level }}
 {{- end }}
+{{- if .Values.controller.service.enablePorts.prometheus }}
+          - --prometheus
+{{- end }}
 {{- range .Values.controller.extraArgs }}
           - {{ . }}
 {{- end }}
diff --git a/charts/haproxy/haproxy/templates/controller-deployment.yaml b/charts/haproxy/haproxy/templates/controller-deployment.yaml
index 50e0bf1e6..be9a44117 100644
--- a/charts/haproxy/haproxy/templates/controller-deployment.yaml
+++ b/charts/haproxy/haproxy/templates/controller-deployment.yaml
@@ -113,6 +113,9 @@ spec:
 {{- if .Values.controller.logging.level }}
           - --log={{ .Values.controller.logging.level }}
 {{- end }}
+{{- if .Values.controller.service.enablePorts.prometheus }}
+          - --prometheus
+{{- end }}
 {{- range .Values.controller.extraArgs }}
           - {{ . }}
 {{- end }}
diff --git a/charts/haproxy/haproxy/templates/controller-service.yaml b/charts/haproxy/haproxy/templates/controller-service.yaml
index 4e44eb614..dc05b44ea 100644
--- a/charts/haproxy/haproxy/templates/controller-service.yaml
+++ b/charts/haproxy/haproxy/templates/controller-service.yaml
@@ -76,6 +76,15 @@ spec:
       nodePort: {{ .Values.controller.service.nodePorts.stat }}
     {{- end }}
   {{- end }}
+  {{- if .Values.controller.service.enablePorts.prometheus }}
+    - name: prometheus
+      port: {{ .Values.controller.service.ports.prometheus }}
+      protocol: TCP
+      targetPort: {{ .Values.controller.service.targetPorts.prometheus }}
+    {{- if .Values.controller.service.nodePorts.prometheus }}
+      nodePort: {{ .Values.controller.service.nodePorts.prometheus }}
+    {{- end }}
+  {{- end }}
   {{- range .Values.controller.service.tcpPorts }}
     - name: {{ .name }}-tcp
       port: {{ .port }}
diff --git a/charts/haproxy/haproxy/values.yaml b/charts/haproxy/haproxy/values.yaml
index abdaefb56..490c71e8f 100644
--- a/charts/haproxy/haproxy/values.yaml
+++ b/charts/haproxy/haproxy/values.yaml
@@ -375,6 +375,7 @@ controller:
     #  http: 31080
     #  https: 31443
     #  stat: 31024
+    #  prometheus: 36060
 
     ## Service ports to use for http, https and stat
     ## ref: https://kubernetes.io/docs/concepts/services-networking/service/
@@ -382,6 +383,7 @@ controller:
       http: 80
       https: 443
       stat: 1024
+      prometheus: 6060
 
     ## The controller service ports for http, https and stat can be disabled by
     ## setting below to false - this could be useful when only deploying haproxy
@@ -391,6 +393,7 @@ controller:
       http: true
       https: true
       stat: true
+      prometheus: true
 
     ## Target port mappings for http, https and stat
     ## ref: https://kubernetes.io/docs/concepts/services-networking/service/
@@ -398,6 +401,7 @@ controller:
       http: http
       https: https
       stat: stat
+      prometheus: prometheus
 
     ## Additional tcp ports to expose
     ## This is especially useful for TCP services:
diff --git a/charts/jenkins/jenkins/CHANGELOG.md b/charts/jenkins/jenkins/CHANGELOG.md
index 6d94f8189..016340308 100644
--- a/charts/jenkins/jenkins/CHANGELOG.md
+++ b/charts/jenkins/jenkins/CHANGELOG.md
@@ -12,6 +12,14 @@ Use the following links to reference issues, PRs, and commits prior to v2.6.0.
 The changelog until v1.5.7 was auto-generated based on git commits.
 Those entries include a reference to the git commit to be able to get more details.
 
+## 4.6.3
+
+Add values to documentation
+
+## 4.6.2
+
+Update word from hundreds to over 1800 to align with blurb at <https://github.com/jenkinsci/>.
+
 ## 4.6.1
 
 Update `configuration-as-code` plugin to fix dependency issues with `azure-ad` plugin
diff --git a/charts/jenkins/jenkins/Chart.yaml b/charts/jenkins/jenkins/Chart.yaml
index 1968dfd9b..68595449c 100644
--- a/charts/jenkins/jenkins/Chart.yaml
+++ b/charts/jenkins/jenkins/Chart.yaml
@@ -24,8 +24,8 @@ annotations:
 apiVersion: v2
 appVersion: 2.414.1
 description: Jenkins - Build great things at any scale! The leading open source automation
-  server, Jenkins provides hundreds of plugins to support building, deploying and
-  automating any project.
+  server, Jenkins provides over 1800 plugins to support building, deploying and automating
+  any project.
 home: https://jenkins.io/
 icon: https://get.jenkins.io/art/jenkins-logo/logo.svg
 keywords:
@@ -49,4 +49,4 @@ sources:
 - https://github.com/jenkinsci/docker-inbound-agent
 - https://github.com/maorfr/kube-tasks
 - https://github.com/jenkinsci/configuration-as-code-plugin
-version: 4.6.1
+version: 4.6.3
diff --git a/charts/jenkins/jenkins/README.md b/charts/jenkins/jenkins/README.md
index 9fb16505f..da7b11693 100644
--- a/charts/jenkins/jenkins/README.md
+++ b/charts/jenkins/jenkins/README.md
@@ -5,7 +5,7 @@
 [![Releases downloads](https://img.shields.io/github/downloads/jenkinsci/helm-charts/total.svg)](https://github.com/jenkinsci/helm-charts/releases)
 [![Join the chat at https://app.gitter.im/#/room/#jenkins-ci:matrix.org](https://badges.gitter.im/badge.svg)](https://app.gitter.im/#/room/#jenkins-ci:matrix.org)
 
-[Jenkins](https://www.jenkins.io/) is the leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.
+[Jenkins](https://www.jenkins.io/) is the leading open source automation server, Jenkins provides over 1800 plugins to support building, deploying and automating any project.
 
 This chart installs a Jenkins server which spawns agents on [Kubernetes](http://kubernetes.io) utilizing the [Jenkins Kubernetes plugin](https://plugins.jenkins.io/kubernetes/).
 
diff --git a/charts/jenkins/jenkins/VALUES_SUMMARY.md b/charts/jenkins/jenkins/VALUES_SUMMARY.md
index 7ed0a5714..322ae44d2 100644
--- a/charts/jenkins/jenkins/VALUES_SUMMARY.md
+++ b/charts/jenkins/jenkins/VALUES_SUMMARY.md
@@ -69,6 +69,8 @@ The following tables list the configurable parameters of the Jenkins chart and t
 | `controller.jenkinsUrl`           | Set Jenkins URL if you are not using the ingress definitions provided by the chart | Not set |
 | `controller.jenkinsUrlProtocol`   | Set protocol for Jenkins URL | Set to `https` if `controller.ingress.tls`, `http` otherwise |
 | `controller.jenkinsUriPrefix`     | Root Uri Jenkins will be served on   | Not set                                   |
+| `controller.jenkinsOpts`          | Append to `JENKINS_OPTS` env var     | Not set                              |
+| `controller.javaOpts`             | Append to `JAVA_OPTS` env var        | Not set                              |
 
 #### Jenkins In-Process Script Approval
 
diff --git a/charts/kuma/kuma/Chart.yaml b/charts/kuma/kuma/Chart.yaml
index cd1b29d8b..6567953ab 100644
--- a/charts/kuma/kuma/Chart.yaml
+++ b/charts/kuma/kuma/Chart.yaml
@@ -4,7 +4,7 @@ annotations:
   catalog.cattle.io/namespace: kuma-system
   catalog.cattle.io/release-name: kuma
 apiVersion: v2
-appVersion: 2.4.0
+appVersion: 2.4.1
 description: A Helm chart for the Kuma Control Plane
 home: https://github.com/kumahq/kuma
 icon: https://kuma.io/assets/images/brand/kuma-logo-new.svg
@@ -20,4 +20,4 @@ maintainers:
   name: nickolaev
 name: kuma
 type: application
-version: 2.4.0
+version: 2.4.1
diff --git a/charts/kuma/kuma/README.md b/charts/kuma/kuma/README.md
index 0d2f33a77..d842782bc 100644
--- a/charts/kuma/kuma/README.md
+++ b/charts/kuma/kuma/README.md
@@ -2,7 +2,7 @@
 
 A Helm chart for the Kuma Control Plane
 
-![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![Version: 2.4.0](https://img.shields.io/badge/Version-2.4.0-informational?style=flat-square) ![AppVersion: 2.4.0](https://img.shields.io/badge/AppVersion-2.4.0-informational?style=flat-square)
+![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![Version: 2.4.1](https://img.shields.io/badge/Version-2.4.1-informational?style=flat-square) ![AppVersion: 2.4.1](https://img.shields.io/badge/AppVersion-2.4.1-informational?style=flat-square)
 
 **Homepage:** <https://github.com/kumahq/kuma>
 
diff --git a/charts/minio/minio-operator/Chart.yaml b/charts/minio/minio-operator/Chart.yaml
index 8d1e3ee46..683eb00b4 100644
--- a/charts/minio/minio-operator/Chart.yaml
+++ b/charts/minio/minio-operator/Chart.yaml
@@ -4,7 +4,7 @@ annotations:
   catalog.cattle.io/kube-version: '>=1.19-0'
   catalog.cattle.io/release-name: minio-operator
 apiVersion: v2
-appVersion: v5.0.7
+appVersion: v5.0.8
 description: A Helm chart for MinIO Operator
 home: https://min.io
 icon: https://min.io/resources/img/logo/MINIO_wordmark.png
@@ -19,4 +19,4 @@ name: minio-operator
 sources:
 - https://github.com/minio/operator
 type: application
-version: 5.0.7
+version: 5.0.8
diff --git a/charts/minio/minio-operator/Chart.yaml-e b/charts/minio/minio-operator/Chart.yaml-e
index 8b448b0fb..50fd1607b 100644
--- a/charts/minio/minio-operator/Chart.yaml-e
+++ b/charts/minio/minio-operator/Chart.yaml-e
@@ -1,8 +1,8 @@
 apiVersion: v2
 description: A Helm chart for MinIO Operator
 name: operator
-version: 5.0.7
-appVersion: v5.0.7
+version: 5.0.8
+appVersion: v5.0.8
 keywords:
   - storage
   - object-storage
diff --git a/charts/minio/minio-operator/templates/minio.min.io_tenants.yaml b/charts/minio/minio-operator/templates/minio.min.io_tenants.yaml
index d6cd62bcc..863021397 100644
--- a/charts/minio/minio-operator/templates/minio.min.io_tenants.yaml
+++ b/charts/minio/minio-operator/templates/minio.min.io_tenants.yaml
@@ -3064,6 +3064,37 @@ spec:
                       - name
                       type: object
                     type: array
+                  resources:
+                    properties:
+                      claims:
+                        items:
+                          properties:
+                            name:
+                              type: string
+                          required:
+                          - name
+                          type: object
+                        type: array
+                        x-kubernetes-list-map-keys:
+                        - name
+                        x-kubernetes-list-type: map
+                      limits:
+                        additionalProperties:
+                          anyOf:
+                          - type: integer
+                          - type: string
+                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+                          x-kubernetes-int-or-string: true
+                        type: object
+                      requests:
+                        additionalProperties:
+                          anyOf:
+                          - type: integer
+                          - type: string
+                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+                          x-kubernetes-int-or-string: true
+                        type: object
+                    type: object
                   volumeClaimTemplates:
                     items:
                       properties:
diff --git a/charts/minio/minio-operator/values.yaml b/charts/minio/minio-operator/values.yaml
index 0b6f82d12..38328a133 100644
--- a/charts/minio/minio-operator/values.yaml
+++ b/charts/minio/minio-operator/values.yaml
@@ -16,7 +16,7 @@ operator:
   ## Image from tag (original behaviour), for example:
   # image:
   #   repository: quay.io/minio/operator
-  #   tag: v5.0.7
+  #   tag: v5.0.8
   #   pullPolicy: IfNotPresent
   ## Image from digest (added after original behaviour), for example:
   # image:
@@ -25,7 +25,7 @@ operator:
   #   pullPolicy: IfNotPresent
   image:
     repository: quay.io/minio/operator
-    tag: v5.0.7
+    tag: v5.0.8
     pullPolicy: IfNotPresent
   imagePullSecrets: [ ]
   runtimeClassName: ~
@@ -66,7 +66,7 @@ operator:
 console:
   image:
     repository: quay.io/minio/operator
-    tag: v5.0.7
+    tag: v5.0.8
     pullPolicy: IfNotPresent
   env: [ ]
   imagePullSecrets: [ ]
@@ -77,7 +77,10 @@ console:
   affinity: { }
   tolerations: [ ]
   topologySpreadConstraints: [ ]
-  resources: { }
+  resources:
+    requests:
+      cpu: 0.25
+      memory: 512Mi
   securityContext:
     runAsUser: 1000
     runAsNonRoot: true
diff --git a/charts/minio/minio-operator/values.yaml-e b/charts/minio/minio-operator/values.yaml-e
index 0b6f82d12..38328a133 100644
--- a/charts/minio/minio-operator/values.yaml-e
+++ b/charts/minio/minio-operator/values.yaml-e
@@ -16,7 +16,7 @@ operator:
   ## Image from tag (original behaviour), for example:
   # image:
   #   repository: quay.io/minio/operator
-  #   tag: v5.0.7
+  #   tag: v5.0.8
   #   pullPolicy: IfNotPresent
   ## Image from digest (added after original behaviour), for example:
   # image:
@@ -25,7 +25,7 @@ operator:
   #   pullPolicy: IfNotPresent
   image:
     repository: quay.io/minio/operator
-    tag: v5.0.7
+    tag: v5.0.8
     pullPolicy: IfNotPresent
   imagePullSecrets: [ ]
   runtimeClassName: ~
@@ -66,7 +66,7 @@ operator:
 console:
   image:
     repository: quay.io/minio/operator
-    tag: v5.0.7
+    tag: v5.0.8
     pullPolicy: IfNotPresent
   env: [ ]
   imagePullSecrets: [ ]
@@ -77,7 +77,10 @@ console:
   affinity: { }
   tolerations: [ ]
   topologySpreadConstraints: [ ]
-  resources: { }
+  resources:
+    requests:
+      cpu: 0.25
+      memory: 512Mi
   securityContext:
     runAsUser: 1000
     runAsNonRoot: true
diff --git a/charts/openebs/openebs/Chart.lock b/charts/openebs/openebs/Chart.lock
index 17f4c8148..1dbac25ab 100644
--- a/charts/openebs/openebs/Chart.lock
+++ b/charts/openebs/openebs/Chart.lock
@@ -4,24 +4,24 @@ dependencies:
   version: 2.1.0
 - name: localpv-provisioner
   repository: https://openebs.github.io/dynamic-localpv-provisioner
-  version: 3.4.0
+  version: 3.4.1
 - name: cstor
   repository: https://openebs.github.io/cstor-operators
   version: 3.5.0
 - name: jiva
   repository: https://openebs.github.io/jiva-operator
-  version: 3.5.0
+  version: 3.5.1
 - name: zfs-localpv
   repository: https://openebs.github.io/zfs-localpv
-  version: 2.3.0
+  version: 2.3.1
 - name: lvm-localpv
   repository: https://openebs.github.io/lvm-localpv
-  version: 1.2.0
+  version: 1.3.0
 - name: nfs-provisioner
   repository: https://openebs.github.io/dynamic-nfs-provisioner
   version: 0.10.0
 - name: mayastor
   repository: https://openebs.github.io/mayastor-extensions
-  version: 2.3.0
-digest: sha256:42353df982311e1e8b9ed58baec66f16805b873bef57f74bdc6eb42281734668
-generated: "2023-07-27T14:50:27.401983372Z"
+  version: 2.4.0
+digest: sha256:189f7edfd9afecb40e757800569aa71a053d986fb9520aec22d08e134a7f6038
+generated: "2023-09-06T06:22:45.720572899Z"
diff --git a/charts/openebs/openebs/Chart.yaml b/charts/openebs/openebs/Chart.yaml
index a3cd6ddf0..f38494c6c 100644
--- a/charts/openebs/openebs/Chart.yaml
+++ b/charts/openebs/openebs/Chart.yaml
@@ -3,7 +3,7 @@ annotations:
   catalog.cattle.io/display-name: OpenEBS
   catalog.cattle.io/release-name: openebs
 apiVersion: v2
-appVersion: 3.8.0
+appVersion: 3.9.0
 dependencies:
 - condition: openebs-ndm.enabled
   name: openebs-ndm
@@ -12,7 +12,7 @@ dependencies:
 - condition: localpv-provisioner.enabled
   name: localpv-provisioner
   repository: file://./charts/localpv-provisioner
-  version: 3.4.0
+  version: 3.4.1
 - condition: cstor.enabled
   name: cstor
   repository: file://./charts/cstor
@@ -20,15 +20,15 @@ dependencies:
 - condition: jiva.enabled
   name: jiva
   repository: file://./charts/jiva
-  version: 3.5.0
+  version: 3.5.1
 - condition: zfs-localpv.enabled
   name: zfs-localpv
   repository: file://./charts/zfs-localpv
-  version: 2.3.0
+  version: 2.3.1
 - condition: lvm-localpv.enabled
   name: lvm-localpv
   repository: file://./charts/lvm-localpv
-  version: 1.2.0
+  version: 1.3.0
 - condition: nfs-provisioner.enabled
   name: nfs-provisioner
   repository: file://./charts/nfs-provisioner
@@ -36,7 +36,7 @@ dependencies:
 - condition: mayastor.enabled
   name: mayastor
   repository: file://./charts/mayastor
-  version: 2.3.0
+  version: 2.4.0
 description: Containerized Attached Storage for Kubernetes
 home: http://www.openebs.io/
 icon: https://raw.githubusercontent.com/cncf/artwork/HEAD/projects/openebs/icon/color/openebs-icon-color.png
@@ -58,4 +58,4 @@ maintainers:
 name: openebs
 sources:
 - https://github.com/openebs/openebs
-version: 3.8.0
+version: 3.9.0
diff --git a/charts/openebs/openebs/README.md b/charts/openebs/openebs/README.md
index b0dc27de4..0d2ab1bf7 100644
--- a/charts/openebs/openebs/README.md
+++ b/charts/openebs/openebs/README.md
@@ -148,7 +148,7 @@ The following table lists the common configurable parameters of the OpenEBS char
 | `mayastor.etcd.persistence.size`            | Set the size of the volume(s) used by the etcd                               | `""`                                                                     |
 | `mayastor.image.registry`                   | Set the container image registry for the mayastor containers                 | `"docker.io"`                                                            |
 | `mayastor.image.repo`                       | Set the container image repository for the mayastor containers               | `"openebs"`                                                              |
-| `mayastor.image.tag`                        | Set the container image tag for the mayastor containers                      | `"v2.3.0"`                                                          |
+| `mayastor.image.tag`                        | Set the container image tag for the mayastor containers                      | `"v2.4.0"`                                                          |
 | `mayastor.image.pullPolicy`                 | Set the container ImagePullPolicy for the mayastor containers                | `"Always"`                                                               |
 | `mayastor.csi.image.registry`               | Set the container image registry for the Kubernetes CSI sidecar containers   | `"registry.k8s.io"`                                                      |
 | `mayastor.csi.image.repo`                   | Set the container image repository for the Kubernetes CSI sidecar containers | `"sig-storage"`                                                          |
diff --git a/charts/openebs/openebs/charts/jiva/Chart.lock b/charts/openebs/openebs/charts/jiva/Chart.lock
index 0c1b59d77..ab10f2f87 100644
--- a/charts/openebs/openebs/charts/jiva/Chart.lock
+++ b/charts/openebs/openebs/charts/jiva/Chart.lock
@@ -1,6 +1,6 @@
 dependencies:
 - name: localpv-provisioner
   repository: https://openebs.github.io/dynamic-localpv-provisioner
-  version: 3.4.0
-digest: sha256:c01cbded3f0f107c59e51cf9075c7f3c2530702d2b1a972edb8d960424d30da9
-generated: "2023-07-26T08:17:20.60623734Z"
+  version: 3.4.1
+digest: sha256:44aedfe520f39f2587bf3ea06d225f176ee7b56aa6cb5d3e6b2a16545d2d1222
+generated: "2023-09-05T07:30:05.174651007Z"
diff --git a/charts/openebs/openebs/charts/jiva/Chart.yaml b/charts/openebs/openebs/charts/jiva/Chart.yaml
index 3519c0e23..a0919d40e 100644
--- a/charts/openebs/openebs/charts/jiva/Chart.yaml
+++ b/charts/openebs/openebs/charts/jiva/Chart.yaml
@@ -4,7 +4,7 @@ dependencies:
 - condition: openebsLocalpv.enabled
   name: localpv-provisioner
   repository: https://openebs.github.io/dynamic-localpv-provisioner
-  version: 3.4.0
+  version: 3.4.1
 description: Helm chart for OpenEBS Jiva Operator. Jiva provides highly available
   replication block volumes to Kubernetes stateful workloads using the local storage
   available on the Kubernetes nodes.
@@ -26,4 +26,4 @@ name: jiva
 sources:
 - https://github.com/openebs/jiva-operator
 type: application
-version: 3.5.0
+version: 3.5.1
diff --git a/charts/openebs/openebs/charts/jiva/README.md b/charts/openebs/openebs/charts/jiva/README.md
index e5a31a69d..40724ec21 100644
--- a/charts/openebs/openebs/charts/jiva/README.md
+++ b/charts/openebs/openebs/charts/jiva/README.md
@@ -45,7 +45,7 @@ By default this chart installs additional, dependent charts:
 
 | Repository | Name | Version |
 |------------|------|---------|
-| https://openebs.github.io/dynamic-localpv-provisioner | localpv-provisioner | 3.4.0   |
+| https://openebs.github.io/dynamic-localpv-provisioner | localpv-provisioner | 3.4.1   |
 
 **Note:** Find detailed Dynamic LocalPV Provisioner Helm chart configuration options [here](https://github.com/openebs/dynamic-localpv-provisioner/blob/develop/deploy/helm/charts/README.md).
 
diff --git a/charts/openebs/openebs/charts/jiva/charts/localpv-provisioner/Chart.lock b/charts/openebs/openebs/charts/jiva/charts/localpv-provisioner/Chart.lock
index 23e4a5183..4ff3a5ce0 100644
--- a/charts/openebs/openebs/charts/jiva/charts/localpv-provisioner/Chart.lock
+++ b/charts/openebs/openebs/charts/jiva/charts/localpv-provisioner/Chart.lock
@@ -3,4 +3,4 @@ dependencies:
   repository: https://openebs.github.io/node-disk-manager
   version: 2.1.0
 digest: sha256:47adcc8a92ea7ce83ca7f37f05f9e2f4c10154adc9551bd92e92c1ca5608f131
-generated: "2023-02-09T22:19:32.73594628Z"
+generated: "2023-08-16T16:46:46.773916076Z"
diff --git a/charts/openebs/openebs/charts/jiva/charts/localpv-provisioner/Chart.yaml b/charts/openebs/openebs/charts/jiva/charts/localpv-provisioner/Chart.yaml
index 75736bf87..4d1e73dc0 100644
--- a/charts/openebs/openebs/charts/jiva/charts/localpv-provisioner/Chart.yaml
+++ b/charts/openebs/openebs/charts/jiva/charts/localpv-provisioner/Chart.yaml
@@ -24,4 +24,4 @@ name: localpv-provisioner
 sources:
 - https://github.com/openebs/dynamic-localpv-provisioner
 type: application
-version: 3.4.0
+version: 3.4.1
diff --git a/charts/openebs/openebs/charts/jiva/charts/localpv-provisioner/templates/hostpath-class.yaml b/charts/openebs/openebs/charts/jiva/charts/localpv-provisioner/templates/hostpath-class.yaml
index 6aabfb77b..6dd49d996 100644
--- a/charts/openebs/openebs/charts/jiva/charts/localpv-provisioner/templates/hostpath-class.yaml
+++ b/charts/openebs/openebs/charts/jiva/charts/localpv-provisioner/templates/hostpath-class.yaml
@@ -2,7 +2,7 @@
 apiVersion: storage.k8s.io/v1
 kind: StorageClass
 metadata:
-  name: {{ .Values.hostpathClass.name }}
+  name: {{ tpl (.Values.hostpathClass.name) .}}
   annotations:
     openebs.io/cas-type: local
     cas.openebs.io/config: |
@@ -10,7 +10,7 @@ metadata:
         value: "hostpath"
 {{- if or .Values.localpv.basePath .Values.hostpathClass.basePath }}
       - name: BasePath
-        value: {{ .Values.hostpathClass.basePath | default .Values.localpv.basePath | quote }}
+        value: {{ tpl (.Values.hostpathClass.basePath | default .Values.localpv.basePath | quote) . }}
 {{- end }}
 {{- if .Values.hostpathClass.nodeAffinityLabels }}
       - name: NodeAffinityLabels
diff --git a/charts/openebs/openebs/charts/localpv-provisioner/Chart.lock b/charts/openebs/openebs/charts/localpv-provisioner/Chart.lock
index 23e4a5183..4ff3a5ce0 100644
--- a/charts/openebs/openebs/charts/localpv-provisioner/Chart.lock
+++ b/charts/openebs/openebs/charts/localpv-provisioner/Chart.lock
@@ -3,4 +3,4 @@ dependencies:
   repository: https://openebs.github.io/node-disk-manager
   version: 2.1.0
 digest: sha256:47adcc8a92ea7ce83ca7f37f05f9e2f4c10154adc9551bd92e92c1ca5608f131
-generated: "2023-02-09T22:19:32.73594628Z"
+generated: "2023-08-16T16:46:46.773916076Z"
diff --git a/charts/openebs/openebs/charts/localpv-provisioner/Chart.yaml b/charts/openebs/openebs/charts/localpv-provisioner/Chart.yaml
index 75736bf87..4d1e73dc0 100644
--- a/charts/openebs/openebs/charts/localpv-provisioner/Chart.yaml
+++ b/charts/openebs/openebs/charts/localpv-provisioner/Chart.yaml
@@ -24,4 +24,4 @@ name: localpv-provisioner
 sources:
 - https://github.com/openebs/dynamic-localpv-provisioner
 type: application
-version: 3.4.0
+version: 3.4.1
diff --git a/charts/openebs/openebs/charts/localpv-provisioner/templates/hostpath-class.yaml b/charts/openebs/openebs/charts/localpv-provisioner/templates/hostpath-class.yaml
index 6aabfb77b..6dd49d996 100644
--- a/charts/openebs/openebs/charts/localpv-provisioner/templates/hostpath-class.yaml
+++ b/charts/openebs/openebs/charts/localpv-provisioner/templates/hostpath-class.yaml
@@ -2,7 +2,7 @@
 apiVersion: storage.k8s.io/v1
 kind: StorageClass
 metadata:
-  name: {{ .Values.hostpathClass.name }}
+  name: {{ tpl (.Values.hostpathClass.name) .}}
   annotations:
     openebs.io/cas-type: local
     cas.openebs.io/config: |
@@ -10,7 +10,7 @@ metadata:
         value: "hostpath"
 {{- if or .Values.localpv.basePath .Values.hostpathClass.basePath }}
       - name: BasePath
-        value: {{ .Values.hostpathClass.basePath | default .Values.localpv.basePath | quote }}
+        value: {{ tpl (.Values.hostpathClass.basePath | default .Values.localpv.basePath | quote) . }}
 {{- end }}
 {{- if .Values.hostpathClass.nodeAffinityLabels }}
       - name: NodeAffinityLabels
diff --git a/charts/openebs/openebs/charts/lvm-localpv/Chart.yaml b/charts/openebs/openebs/charts/lvm-localpv/Chart.yaml
index eb94e7ecd..05e861b59 100644
--- a/charts/openebs/openebs/charts/lvm-localpv/Chart.yaml
+++ b/charts/openebs/openebs/charts/lvm-localpv/Chart.yaml
@@ -1,5 +1,5 @@
 apiVersion: v2
-appVersion: 1.2.0
+appVersion: 1.3.0
 description: CSI Driver for dynamic provisioning of LVM Persistent Local Volumes.
 home: https://openebs.io/
 icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/openebs/icon/color/openebs-icon-color.png
@@ -20,4 +20,4 @@ maintainers:
 name: lvm-localpv
 sources:
 - https://github.com/openebs/lvm-localpv
-version: 1.2.0
+version: 1.3.0
diff --git a/charts/openebs/openebs/charts/lvm-localpv/README.md b/charts/openebs/openebs/charts/lvm-localpv/README.md
index acb26d3d7..239c8c3d3 100644
--- a/charts/openebs/openebs/charts/lvm-localpv/README.md
+++ b/charts/openebs/openebs/charts/lvm-localpv/README.md
@@ -100,7 +100,7 @@ helm install openebs-lvmlocalpv openebs-lvmlocalpv/lvm-localpv --namespace opene
 | `lvmPlugin.image.registry`                          | Registry for openebs-lvm-plugin image                                            | `""`                                    |
 | `lvmPlugin.image.repository`                        | Image repository for openebs-lvm-plugin                                          | `openebs/lvm-driver`                    |
 | `lvmPlugin.image.pullPolicy`                        | Image pull policy for openebs-lvm-plugin                                         | `IfNotPresent`                          |
-| `lvmPlugin.image.tag`                               | Image tag for openebs-lvm-plugin                                                 | `1.2.0`                                 |
+| `lvmPlugin.image.tag`                               | Image tag for openebs-lvm-plugin                                                 | `1.3.0`                                 |
 | `lvmPlugin.metricsPort`                             | The TCP port number used for exposing lvm-metrics                                | `9500`                                  |
 | `lvmPlugin.allowedTopologies`                       | The comma seperated list of allowed node topologies                              | `kubernetes.io/hostname,`               |
 | `lvmNode.driverRegistrar.image.registry`            | Registry for csi-node-driver-registrar image                                     | `registry.k8s.io/`                      |
diff --git a/charts/openebs/openebs/charts/lvm-localpv/values.yaml b/charts/openebs/openebs/charts/lvm-localpv/values.yaml
index 93e0874b0..f6c4da6b2 100644
--- a/charts/openebs/openebs/charts/lvm-localpv/values.yaml
+++ b/charts/openebs/openebs/charts/lvm-localpv/values.yaml
@@ -2,7 +2,7 @@
 # This is a YAML-formatted file.
 # Declare variables to be passed into your templates.
 release:
-  version: "1.2.0"
+  version: "1.3.0"
 
 imagePullSecrets:
 # - name: "image-pull-secret"
@@ -149,7 +149,7 @@ lvmPlugin:
     repository: openebs/lvm-driver
     pullPolicy: IfNotPresent
     # Overrides the image tag whose default is the chart appVersion.
-    tag: 1.2.0
+    tag: 1.3.0
   ioLimits:
     enabled: false
     containerRuntime: containerd
diff --git a/charts/openebs/openebs/charts/mayastor/Chart.lock b/charts/openebs/openebs/charts/mayastor/Chart.lock
index 43cc9d7c9..a204cbf41 100644
--- a/charts/openebs/openebs/charts/mayastor/Chart.lock
+++ b/charts/openebs/openebs/charts/mayastor/Chart.lock
@@ -11,5 +11,8 @@ dependencies:
 - name: nats
   repository: https://nats-io.github.io/k8s/helm/charts/
   version: 0.19.14
-digest: sha256:c0d336c611e8210628a1f97f171d19857fd8b56a5df63584baf3b26c25e91830
-generated: "2023-07-22T09:19:20.694369225Z"
+- name: localpv-provisioner
+  repository: https://openebs.github.io/dynamic-localpv-provisioner
+  version: 3.4.1
+digest: sha256:0a43736883b9088fad4cd9e013abc88a470fb9d0e5cba50ce63c98172522a3fc
+generated: "2023-09-05T10:04:06.785720699Z"
diff --git a/charts/openebs/openebs/charts/mayastor/Chart.yaml b/charts/openebs/openebs/charts/mayastor/Chart.yaml
index c77c47dcb..ac485194b 100644
--- a/charts/openebs/openebs/charts/mayastor/Chart.yaml
+++ b/charts/openebs/openebs/charts/mayastor/Chart.yaml
@@ -1,5 +1,5 @@
 apiVersion: v2
-appVersion: 2.3.0
+appVersion: 2.4.0
 dependencies:
 - name: etcd
   repository: https://charts.bitnami.com/bitnami
@@ -16,7 +16,11 @@ dependencies:
   name: nats
   repository: https://nats-io.github.io/k8s/helm/charts/
   version: 0.19.14
+- condition: localpv-provisioner.enabled
+  name: localpv-provisioner
+  repository: https://openebs.github.io/dynamic-localpv-provisioner
+  version: 3.4.1
 description: Mayastor Helm chart for Kubernetes
 name: mayastor
 type: application
-version: 2.3.0
+version: 2.4.0
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/.helmignore b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/.helmignore
new file mode 100644
index 000000000..0e8a0eb36
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/.helmignore
@@ -0,0 +1,23 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*.orig
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/Chart.lock b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/Chart.lock
new file mode 100644
index 000000000..4ff3a5ce0
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: openebs-ndm
+  repository: https://openebs.github.io/node-disk-manager
+  version: 2.1.0
+digest: sha256:47adcc8a92ea7ce83ca7f37f05f9e2f4c10154adc9551bd92e92c1ca5608f131
+generated: "2023-08-16T16:46:46.773916076Z"
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/Chart.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/Chart.yaml
new file mode 100644
index 000000000..4d1e73dc0
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/Chart.yaml
@@ -0,0 +1,27 @@
+apiVersion: v2
+appVersion: 3.4.0
+dependencies:
+- condition: openebsNDM.enabled
+  name: openebs-ndm
+  repository: https://openebs.github.io/node-disk-manager
+  version: 2.1.0
+description: Helm chart for OpenEBS Dynamic Local PV. For instructions to install
+  OpenEBS Dynamic Local PV using helm chart, refer to https://openebs.github.io/dynamic-localpv-provisioner/.
+home: http://www.openebs.io/
+icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/openebs/icon/color/openebs-icon-color.png
+keywords:
+- storage
+- local
+- dynamic-localpv
+maintainers:
+- email: akhil.mohan@mayadata.io
+  name: akhilerm
+- email: kiran.mova@mayadata.io
+  name: kiranmova
+- email: prateek.pandey@mayadata.io
+  name: prateekpandey14
+name: localpv-provisioner
+sources:
+- https://github.com/openebs/dynamic-localpv-provisioner
+type: application
+version: 3.4.1
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/README.md b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/README.md
new file mode 100644
index 000000000..fe321ca37
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/README.md
@@ -0,0 +1,160 @@
+#  OpenEBS LocalPV Provisioner
+
+[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
+![Chart Lint and Test](https://github.com/openebs/dynamic-localpv-provisioner/workflows/Chart%20Lint%20and%20Test/badge.svg)
+![Release Charts](https://github.com/openebs/dynamic-localpv-provisioner/workflows/Release%20Charts/badge.svg?branch=develop)
+
+A Helm chart for openebs dynamic localpv provisioner. This chart bootstraps OpenEBS Dynamic LocalPV provisioner deployment on a [Kubernetes](http://kubernetes.io) cluster using the  [Helm](https://helm.sh) package manager.
+
+
+**Homepage:** <http://www.openebs.io/>
+
+## Maintainers
+
+| Name | Email | Url |
+| ---- | ------ | --- |
+| akhilerm | akhil.mohan@mayadata.io |  |
+| kiranmova | kiran.mova@mayadata.io |  |
+| prateekpandey14 | prateek.pandey@mayadata.io |  |
+
+
+## Get Repo Info
+
+```console
+helm repo add openebs-localpv https://openebs.github.io/dynamic-localpv-provisioner
+helm repo update
+```
+
+_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._
+
+## Install Chart
+
+Please visit the [link](https://openebs.github.io/dynamic-localpv-provisioner/) for install instructions via helm3.
+
+```console
+# Helm
+helm install [RELEASE_NAME] openebs-localpv/localpv-provisioner --namespace [NAMESPACE] --create-namespace
+```
+
+_See [configuration](#configuration) below._
+
+_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._
+
+## Dependencies
+
+By default this chart installs additional, dependent charts:
+
+| Repository | Name | Version |
+|------------|------|---------|
+| https://openebs.github.io/node-disk-manager | openebs-ndm | 2.1.0   |
+
+**Note:** Find detailed Node Disk Manager Helm chart configuration options [here](https://github.com/openebs/node-disk-manager/blob/master/deploy/helm/charts/README.md).
+
+
+To disable the dependency during installation, set `openebsNDM.enabled` to `false`.
+
+_See [helm dependency](https://helm.sh/docs/helm/helm_dependency/) for command documentation._
+
+## Uninstall Chart
+
+```console
+# Helm
+helm uninstall [RELEASE_NAME] --namespace [NAMESPACE]
+```
+
+This removes all the Kubernetes components associated with the chart and deletes the release.
+
+_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._
+
+## Upgrading Chart
+
+```console
+# Helm
+helm upgrade [RELEASE_NAME] [CHART] --install --namespace [NAMESPACE]
+```
+
+
+## Configuration
+
+The following table lists the configurable parameters of the OpenEBS Dynamic LocalPV Provisioner chart and their default values.
+
+You can modify different parameters by specifying the desired value in the `helm install` command by using the `--set` and/or the `--set-string` flag(s). You can modify the parameters of the [Node Disk Manager chart](https://openebs.github.io/node-disk-manager) by adding `openebs-ndm` before the desired parameter in the `helm install` command.
+
+In the following sample command we modify `deviceClass.fsType` from the localpv-provisioner chart and `ndm.nodeSelector` from the openebs-ndm chart to only schedule openebs-ndm DaemonSet pods on nodes labelled with `openebs.io/data-plane=true`. We also enable the 'Use OS-disk' feature gate using the `featureGates.UseOSDisk.enabled` parameter from the openebs-ndm chart.
+
+
+```console
+helm install openebs-localpv openebs-localpv/localpv-provisioner --namespace openebs --create-namespace \
+	--set-string deviceClass.fsType="xfs" \
+	--set-string openebs-ndm.ndm.nodeSelector."openebs\.io/data-plane"=true \
+	--set openebs-ndm.featureGates.UseOSDisk.enabled=true
+```
+
+Sample command to install the provisioner with nodeAffinityLabels "openebs.io/node-affinity-key-1" and "openebs.io/node-affinity-key-2" on the hostpath StorageClass:
+```console
+helm install openebs-localpv openebs-localpv/localpv-provisioner --namespace openebs --create-namespace \
+	--set-string hostpathClass.nodeAffinityLabels="{openebs.io/node-affinity-key-1,openebs.io/node-affinity-key-2}"
+```
+
+Sample command to install the provisioner with blockDeviceSelectors "openebs.io/block-device-tag=mongo" and "ndm.io/fsType=ext4":
+```console
+helm install openebs-localpv openebs-localpv/localpv-provisioner --namespace openebs --create-namespace \
+	--set-string deviceClass.blockDeviceSelectors."openebs\.io/block-device-tag"="mongo" \
+	--set-string deviceClass.blockDeviceSelectors."ndm\.io/fsType"="ext4"
+```
+
+| Parameter                                   | Description                                   | Default                                   |
+| ------------------------------------------- | --------------------------------------------- | ----------------------------------------- |
+| `release.version`                           | LocalPV Provisioner release version               | `3.4.0`                        |
+| `analytics.enabled`                         | Enable sending stats to Google Analytics          | `true`                          |
+| `analytics.pingInterval`                    | Duration(hours) between sending ping stat         | `24h`                           |
+| `deviceClass.blockDeviceSelectors`          | Label key value pairs based on which BlockDevices on the node will be selected for provisioning   | `{}`                         |
+| `deviceClass.enabled`                       | Enables creation of default Device StorageClass   | `true`                          |
+| `deviceClass.fsType`                        | Filesystem type for openebs-device StorageClass   | `"ext4"`                        |
+| `deviceClass.isDefaultClass`                | Make openebs-device the default StorageClass      | `"false"`                       |
+| `deviceClass.nodeAffinityLabels`          | Custom node label(or labels) key to uniquely identify nodes. `kubernetes.io/hostname` is the default label key for node selection. | `[]` |
+| `deviceClass.reclaimPolicy`                 | ReclaimPolicy for Device PVs                      | `"Delete"`                      |
+| `helperPod.image.registry`                  | Registry for helper image                         | `""`                            |
+| `helperPod.image.repository`                | Image for helper pod                              | `"openebs/linux-utils"`         |
+| `helperPod.image.pullPolicy`                | Pull policy for helper pod                        | `"IfNotPresent"`                |
+| `helperPod.image.tag`                       | Image tag for helper image                        | `3.4.0`                         |
+| `hostpathClass.basePath`                    | BasePath for openebs-hostpath StorageClass        | `"/var/openebs/local"`          |
+| `hostpathClass.enabled`                     | Enables creation of default Hostpath StorageClass | `true`                          |
+| `hostpathClass.isDefaultClass`              | Make openebs-hostpath the default StorageClass    | `"false"`                       |
+| `hostpathClass.nodeAffinityLabels`          | Custom node label(or labels) key to uniquely identify nodes. `kubernetes.io/hostname` is the default label key for node selection. | `[]` |
+| `hostpathClass.xfsQuota.enabled`            | Enable XFS Quota (requires XFS filesystem)        | `false`                         |
+| `hostpathClass.ext4Quota.enabled`            | Enable EXT4 Quota (requires EXT4 filesystem)     | `false`                         |
+| `hostpathClass.reclaimPolicy`               | ReclaimPolicy for Hostpath PVs                    | `"Delete"`                      |
+| `imagePullSecrets`                          | Provides image pull secrect                       | `""`                            |
+| `localpv.enabled`                           | Enable LocalPV Provisioner                        | `true`                          |
+| `localpv.image.registry`                    | Registry for LocalPV Provisioner image            | `""`                            |
+| `localpv.image.repository`                  | Image repository for LocalPV Provisioner          | `openebs/localpv-provisioner`   |
+| `localpv.image.pullPolicy`                  | Image pull policy for LocalPV Provisioner         | `IfNotPresent`                  |
+| `localpv.image.tag`                         | Image tag for LocalPV Provisioner                 | `3.4.0`                        |
+| `localpv.updateStrategy.type`               | Update strategy for LocalPV Provisioner           | `RollingUpdate`                 |
+| `localpv.annotations`                       | Annotations for LocalPV Provisioner metadata      | `""`                            |
+| `localpv.podAnnotations`                    | Annotations for LocalPV Provisioner pods metadata | `""`                            |
+| `localpv.privileged`                        | Run LocalPV Provisioner with extra privileges     | `true`                          |
+| `localpv.resources`                         | Resource and request and limit for containers     | `""`                            |
+| `localpv.podLabels`                         | Appends labels to the pods                        | `""`                            |
+| `localpv.nodeSelector`                      | Nodeselector for LocalPV Provisioner pods         | `""`                            |
+| `localpv.tolerations`                       | LocalPV Provisioner pod toleration values         | `""`                            |
+| `localpv.securityContext`                   | Seurity context for container                     | `""`                            |
+| `localpv.healthCheck.initialDelaySeconds`   | Delay before liveness probe is initiated          | `30`                            |
+| `localpv.healthCheck.periodSeconds`         | How often to perform the liveness probe           | `60`                            |
+| `localpv.replicas`                          | No. of LocalPV Provisioner replica                | `1`                             |
+| `localpv.enableLeaderElection`              | Enable leader election                            | `true`                          |
+| `localpv.affinity`                          | LocalPV Provisioner pod affinity                  | `{}`                            |
+| `localpv.waitForBDBindTimeoutRetryCount`    | This sets the number of times the provisioner should try with a polling interval of 5 seconds, to get the Blockdevice Name from a BlockDeviceClaim, before the BlockDeviceClaim is deleted. | "12" |
+| `openebsNDM.enabled`                        | Install openebs NDM dependency                    | `true`                          |
+| `rbac.create`                               | Enable RBAC Resources                             | `true`                          |
+| `rbac.pspEnabled`                           | Create pod security policy resources              | `false`                         |
+
+
+A YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
+
+```bash
+helm install <release-name> -f values.yaml --namespace openebs openebs-localpv/localpv-provisioner
+```
+
+> **Tip**: You can use the default [values.yaml](values.yaml)
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/Chart.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/Chart.yaml
new file mode 100644
index 000000000..53484cd14
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/Chart.yaml
@@ -0,0 +1,23 @@
+apiVersion: v2
+appVersion: 2.1.0
+description: Helm chart for OpenEBS Node Disk Manager - a Kubernetes native storage
+  device management solution. For instructions on how to install, refer to https://openebs.github.io/node-disk-manager/.
+home: http://www.openebs.io/
+icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/openebs/icon/color/openebs-icon-color.png
+keywords:
+- cloud-native-storage
+- block-storage
+- ndm
+- disk-inventory
+- storage
+maintainers:
+- email: akhil.mohan@mayadata.io
+  name: akhilerm
+- email: michaelfornaro@gmail.com
+  name: xUnholy
+- email: prateek.pandey@mayadata.io
+  name: prateekpandey14
+name: openebs-ndm
+sources:
+- https://github.com/openebs/node-disk-manager
+version: 2.1.0
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/README.md b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/README.md
new file mode 100644
index 000000000..399a687ca
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/README.md
@@ -0,0 +1,93 @@
+## Introduction
+
+This chart bootstraps OpenEBS NDM deployment on a [Kubernetes](http://kubernetes.io) cluster using the
+[Helm](https://helm.sh) package manager.
+
+## Installation
+
+You can run OpenEBS NDM on any Kubernetes 1.17+ cluster in a matter of seconds.
+
+Please visit the [link](https://openebs.github.io/node-disk-manager/) for install instructions via helm3.
+
+## Configuration
+
+The following table lists the configurable parameters of the OpenEBS NDM chart and their default values.
+
+| Parameter                                                   | Description                                                                   | Default                                                                                    |
+|-------------------------------------------------------------|-------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
+| `imagePullSecrets`                                          | Provides image pull secrect                                                   | `""`                                                                                       |
+| `ndm.enabled`                                               | Enable Node Disk Manager                                                      | `true`                                                                                     |
+| `ndm.image.registry`                                        | Registry for Node Disk Manager image                                          | `""`                                                                                       |
+| `ndm.image.repository`                                      | Image repository for Node Disk Manager                                        | `openebs/node-disk-manager`                                                                |
+| `ndm.image.pullPolicy`                                      | Image pull policy for Node Disk Manager                                       | `IfNotPresent`                                                                             |
+| `ndm.image.tag`                                             | Image tag for Node Disk Manager                                               | `2.1.0`                                                                                    |
+| `ndm.sparse.path`                                           | Directory where Sparse files are created                                      | `/var/openebs/sparse`                                                                      |
+| `ndm.sparse.size`                                           | Size of the sparse file in bytes                                              | `10737418240`                                                                              |
+| `ndm.sparse.count`                                          | Number of sparse files to be created                                          | `0`                                                                                        |
+| `ndm.updateStrategy.type`                                   | Update strategy for NDM daemonset                                             | `RollingUpdate`                                                                            |
+| `ndm.annotations`                                           | Annotations for NDM daemonset metadata                                        | `""`                                                                                       |
+| `ndm.podAnnotations`                                        | Annotations for NDM daemonset's pods metadata                                 | `""`                                                                                       |
+| `ndm.resources`                                             | Resource and request and limit for containers                                 | `""`                                                                                       |
+| `ndm.podLabels`                                             | Appends labels to the pods                                                    | `""`                                                                                       |
+| `ndm.nodeSelector`                                          | Nodeselector for daemonset pods                                               | `""`                                                                                       |
+| `ndm.tolerations`                                           | NDM daemonset's pod toleration values                                         | `""`                                                                                       |
+| `ndm.securityContext`                                       | Seurity context for container                                                 | `""`                                                                                       |
+| `ndm.filters.enableOsDiskExcludeFilter`                     | Enable filters of OS disk exclude                                             | `true`                                                                                     |
+| `ndm.filters.osDiskExcludePaths`                            | Paths/Mountpoints to be excluded by OS Disk Filter                            | `/,/etc/hosts,/boot`                                                                       |
+| `ndm.filters.enableVendorFilter`                            | Enable filters of vendors                                                     | `true`                                                                                     |
+| `ndm.filters.excludeVendors`                                | Exclude devices with specified vendor                                         | `CLOUDBYT,OpenEBS`                                                                         |
+| `ndm.filters.enablePathFilter`                              | Enable filters of paths                                                       | `true`                                                                                     |
+| `ndm.filters.includePaths`                                  | Include devices with specified path patterns                                  | `""`                                                                                       |
+| `ndm.filters.excludePaths`                                  | Exclude devices with specified path patterns                                  | `loop,fd0,sr0,/dev/ram,/dev/dm-,/dev/md,/dev/rbd,/dev/zd`                                  |
+| `ndm.probes.enableSeachest`                                 | Enable Seachest probe for NDM                                                 | `false`                                                                                    |
+| `ndm.probes.enableUdevProbe`                                | Enable Udev probe for NDM                                                     | `true`                                                                                     |
+| `ndm.probes.enableSmartProbe`                               | Enable Smart probe for NDM                                                    | `true`                                                                                     |
+| `ndm.metaConfig.nodeLabelPattern`                           | Config for adding node labels as BD labels                                    | `kubernetes.io*,beta.kubernetes.io*`                                                       |
+| `ndm.metaConfig.deviceLabelTypes`                           | Config for adding device attributes as BD labels                              | `.spec.details.vendor,.spec.details.model,.spec.details.driveType,.spec.filesystem.fsType` |
+| `ndmOperator.enabled`                                       | Enable NDM Operator                                                           | `true`                                                                                     |
+| `ndmOperator.replica`                                       | Pod replica count for NDM operator                                            | `1`                                                                                        |
+| `ndmOperator.upgradeStrategy`                               | Update strategy NDM operator                                                  | `"Recreate"`                                                                               |
+| `ndmOperator.image.registry`                                | Registry for NDM operator image                                               | `""`                                                                                       |
+| `ndmOperator.image.repository`                              | Image repository for NDM operator                                             | `openebs/node-disk-operator`                                                               |
+| `ndmOperator.image.pullPolicy`                              | Image pull policy for NDM operator                                            | `IfNotPresent`                                                                             |
+| `ndmOperator.image.tag`                                     | Image tag for NDM operator                                                    | `2.1.0`                                                                                    |
+| `ndmOperator.annotations`                                   | Annotations for NDM operator metadata                                         | `""`                                                                                       |
+| `ndmOperator.podAnnotations`                                | Annotations for NDM operator's pods metadata                                  | `""`                                                                                       |
+| `ndmOperator.resources`                                     | Resource and request and limit for containers                                 | `""`                                                                                       |
+| `ndmOperator.podLabels`                                     | Appends labels to the pods                                                    | `""`                                                                                       |
+| `ndmOperator.nodeSelector`                                  | Nodeselector for operator pods                                                | `""`                                                                                       |
+| `ndmOperator.tolerations`                                   | NDM operator's pod toleration values                                          | `""`                                                                                       |
+| `ndmOperator.securityContext`                               | Security context for container                                                | `""`                                                                                       |
+| `ndmExporter.enabled`                                       | Enable NDM Exporters                                                          | `false`                                                                                    |
+| `ndmExporter.image.registry`                                | Registry for NDM Exporters image                                              | `""`                                                                                       |
+| `ndmExporter.repository`                                    | Image repository for NDM Exporters                                            | `openebs/node-disk-exporter`                                                               |
+| `ndmExporter.pullPolicy`                                    | Image pull policy for NDM Exporters                                           | `IfNotPresent`                                                                             |
+| `ndmExporter.tag`                                           | Image tag for NDM Exporters                                                   | `2.1.0`                                                                                    |
+| `ndmExporter.nodeExporter.metricsPort`                      | The TCP port number used for exposing NDM node exporter metrics               | `9101`                                                                                     |
+| `ndmExporter.nodeExporter.nodeExporter.nodeSelector`        | Node selector for NDM node exporter pods                                      | `9101`                                                                                     |
+| `ndmExporter.nodeExporter.nodeExporter.tolerations`         | NDM node exporter toleration values                                           | `9101`                                                                                     |
+| `ndmExporter.clusterExporter.metricsPort`                   | The TCP port number used for exposing NDM cluster exporter metrics            | `9100`                                                                                     |
+| `ndmExporter.clusterExporter.clusterExpoerter.nodeSelector` | Node selector for NDM cluster exporter pod                                    | `9100`                                                                                     |
+| `ndmExporter.clusterExporter.clusterExpoerter.tolerations`  | NDM cluster exporter toleraion values                                         | `9100`                                                                                     |
+| `featureGates.APIService.enabled`                           | Enable the gRPC API service of NDM                                            | `false`                                                                                    |
+| `featureGates.UseOSDisk.enabled`                            | Enable feature-gate to use free space on OS disk                              | `false`                                                                                    |
+| `featureGates.ChangeDetection.enabled`                      | Enable feature-gate to detect mountpoint/filesystem/size changes              | `false`                                                                                    |
+| `featureGates.PartitionTableUUID.enabled`                   | Enable feature-gate to use partition table UUID instead of creating partition | `true`                                                                                     |
+| `helperPod.image.registry`                                  | Registry for helper image                                                     | `""`                                                                                       |
+| `helperPod.image.repository`                                | Image for helper pod                                                          | `openebs/linux-utils`                                                                      |
+| `helperPod.image.pullPolicy`                                | Pull policy for helper pod                                                    | `IfNotPresent`                                                                             |
+| `helperPod.image.tag`                                       | Image tag for helper image                                                    | `3.4.0`                                                                                    |
+| `varDirectoryPath.baseDir`                                  | Directory to store debug info and so forth                                    | `/var/openebs`                                                                             |
+| `serviceAccount.create`                                     | Create a service account or not                                               | `true`                                                                                     |
+| `serviceAccount.name`                                       | Name for the service account                                                  | `true`                                                                                     |
+
+
+Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
+
+Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
+
+```bash
+helm install <release-name> -f values.yaml ndm/openebs-ndm
+```
+
+> **Tip**: You can use the default [values.yaml](values.yaml)
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/crds/blockdevice.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/crds/blockdevice.yaml
new file mode 100644
index 000000000..95f40703c
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/crds/blockdevice.yaml
@@ -0,0 +1,241 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+  annotations:
+    controller-gen.kubebuilder.io/version: v0.5.0
+  creationTimestamp: null
+  name: blockdevices.openebs.io
+spec:
+  group: openebs.io
+  names:
+    kind: BlockDevice
+    listKind: BlockDeviceList
+    plural: blockdevices
+    shortNames:
+    - bd
+    singular: blockdevice
+  scope: Namespaced
+  versions:
+  - additionalPrinterColumns:
+    - jsonPath: .spec.nodeAttributes.nodeName
+      name: NodeName
+      type: string
+    - jsonPath: .spec.path
+      name: Path
+      priority: 1
+      type: string
+    - jsonPath: .spec.filesystem.fsType
+      name: FSType
+      priority: 1
+      type: string
+    - jsonPath: .spec.capacity.storage
+      name: Size
+      type: string
+    - jsonPath: .status.claimState
+      name: ClaimState
+      type: string
+    - jsonPath: .status.state
+      name: Status
+      type: string
+    - jsonPath: .metadata.creationTimestamp
+      name: Age
+      type: date
+    name: v1alpha1
+    schema:
+      openAPIV3Schema:
+        description: BlockDevice is the Schema for the blockdevices API
+        properties:
+          apiVersion:
+            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+            type: string
+          kind:
+            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+            type: string
+          metadata:
+            type: object
+          spec:
+            description: DeviceSpec defines the properties and runtime status of a BlockDevice
+            properties:
+              aggregateDevice:
+                description: AggregateDevice was intended to store the hierarchical information in cases of LVM. However this is currently not implemented and may need to be re-looked into for better design. To be deprecated
+                type: string
+              capacity:
+                description: Capacity
+                properties:
+                  logicalSectorSize:
+                    description: LogicalSectorSize is blockdevice logical-sector size in bytes
+                    format: int32
+                    type: integer
+                  physicalSectorSize:
+                    description: PhysicalSectorSize is blockdevice physical-Sector size in bytes
+                    format: int32
+                    type: integer
+                  storage:
+                    description: Storage is the blockdevice capacity in bytes
+                    format: int64
+                    type: integer
+                required:
+                - storage
+                type: object
+              claimRef:
+                description: ClaimRef is the reference to the BDC which has claimed this BD
+                properties:
+                  apiVersion:
+                    description: API version of the referent.
+                    type: string
+                  fieldPath:
+                    description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+                    type: string
+                  kind:
+                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+                    type: string
+                  name:
+                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+                    type: string
+                  namespace:
+                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+                    type: string
+                  resourceVersion:
+                    description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+                    type: string
+                  uid:
+                    description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+                    type: string
+                type: object
+              details:
+                description: Details contain static attributes of BD like model,serial, and so forth
+                properties:
+                  compliance:
+                    description: Compliance is standards/specifications version implemented by device firmware  such as SPC-1, SPC-2, etc
+                    type: string
+                  deviceType:
+                    description: DeviceType represents the type of device like sparse, disk, partition, lvm, crypt
+                    enum:
+                    - disk
+                    - partition
+                    - sparse
+                    - loop
+                    - lvm
+                    - crypt
+                    - dm
+                    - mpath
+                    type: string
+                  driveType:
+                    description: DriveType is the type of backing drive, HDD/SSD
+                    enum:
+                    - HDD
+                    - SSD
+                    - Unknown
+                    - ""
+                    type: string
+                  firmwareRevision:
+                    description: FirmwareRevision is the disk firmware revision
+                    type: string
+                  hardwareSectorSize:
+                    description: HardwareSectorSize is the hardware sector size in bytes
+                    format: int32
+                    type: integer
+                  logicalBlockSize:
+                    description: LogicalBlockSize is the logical block size in bytes reported by /sys/class/block/sda/queue/logical_block_size
+                    format: int32
+                    type: integer
+                  model:
+                    description: Model is model of disk
+                    type: string
+                  physicalBlockSize:
+                    description: PhysicalBlockSize is the physical block size in bytes reported by /sys/class/block/sda/queue/physical_block_size
+                    format: int32
+                    type: integer
+                  serial:
+                    description: Serial is serial number of disk
+                    type: string
+                  vendor:
+                    description: Vendor is vendor of disk
+                    type: string
+                type: object
+              devlinks:
+                description: DevLinks contains soft links of a block device like /dev/by-id/... /dev/by-uuid/...
+                items:
+                  description: DeviceDevLink holds the mapping between type and links like by-id type or by-path type link
+                  properties:
+                    kind:
+                      description: Kind is the type of link like by-id or by-path.
+                      enum:
+                      - by-id
+                      - by-path
+                      type: string
+                    links:
+                      description: Links are the soft links
+                      items:
+                        type: string
+                      type: array
+                  type: object
+                type: array
+              filesystem:
+                description: FileSystem contains mountpoint and filesystem type
+                properties:
+                  fsType:
+                    description: Type represents the FileSystem type of the block device
+                    type: string
+                  mountPoint:
+                    description: MountPoint represents the mountpoint of the block device.
+                    type: string
+                type: object
+              nodeAttributes:
+                description: NodeAttributes has the details of the node on which BD is attached
+                properties:
+                  nodeName:
+                    description: NodeName is the name of the Kubernetes node resource on which the device is attached
+                    type: string
+                type: object
+              parentDevice:
+                description: "ParentDevice was intended to store the UUID of the parent Block Device as is the case for partitioned block devices. \n For example: /dev/sda is the parent for /dev/sda1 To be deprecated"
+                type: string
+              partitioned:
+                description: Partitioned represents if BlockDevice has partitions or not (Yes/No) Currently always default to No. To be deprecated
+                enum:
+                - "Yes"
+                - "No"
+                type: string
+              path:
+                description: Path contain devpath (e.g. /dev/sdb)
+                type: string
+            required:
+            - capacity
+            - devlinks
+            - nodeAttributes
+            - path
+            type: object
+          status:
+            description: DeviceStatus defines the observed state of BlockDevice
+            properties:
+              claimState:
+                description: ClaimState represents the claim state of the block device
+                enum:
+                - Claimed
+                - Unclaimed
+                - Released
+                type: string
+              state:
+                description: State is the current state of the blockdevice (Active/Inactive/Unknown)
+                enum:
+                - Active
+                - Inactive
+                - Unknown
+                type: string
+            required:
+            - claimState
+            - state
+            type: object
+        type: object
+    served: true
+    storage: true
+    subresources: {}
+status:
+  acceptedNames:
+    kind: ""
+    plural: ""
+  conditions: []
+  storedVersions: []
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/crds/blockdeviceclaim.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/crds/blockdeviceclaim.yaml
new file mode 100644
index 000000000..81b9a355e
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/crds/blockdeviceclaim.yaml
@@ -0,0 +1,144 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+  annotations:
+    controller-gen.kubebuilder.io/version: v0.5.0
+  creationTimestamp: null
+  name: blockdeviceclaims.openebs.io
+spec:
+  group: openebs.io
+  names:
+    kind: BlockDeviceClaim
+    listKind: BlockDeviceClaimList
+    plural: blockdeviceclaims
+    shortNames:
+    - bdc
+    singular: blockdeviceclaim
+  scope: Namespaced
+  versions:
+  - additionalPrinterColumns:
+    - jsonPath: .spec.blockDeviceName
+      name: BlockDeviceName
+      type: string
+    - jsonPath: .status.phase
+      name: Phase
+      type: string
+    - jsonPath: .metadata.creationTimestamp
+      name: Age
+      type: date
+    name: v1alpha1
+    schema:
+      openAPIV3Schema:
+        description: BlockDeviceClaim is the Schema for the blockdeviceclaims API
+        properties:
+          apiVersion:
+            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+            type: string
+          kind:
+            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+            type: string
+          metadata:
+            type: object
+          spec:
+            description: DeviceClaimSpec defines the request details for a BlockDevice
+            properties:
+              blockDeviceName:
+                description: BlockDeviceName is the reference to the block-device backing this claim
+                type: string
+              blockDeviceNodeAttributes:
+                description: BlockDeviceNodeAttributes is the attributes on the node from which a BD should be selected for this claim. It can include nodename, failure domain etc.
+                properties:
+                  hostName:
+                    description: HostName represents the hostname of the Kubernetes node resource where the BD should be present
+                    type: string
+                  nodeName:
+                    description: NodeName represents the name of the Kubernetes node resource where the BD should be present
+                    type: string
+                type: object
+              deviceClaimDetails:
+                description: Details of the device to be claimed
+                properties:
+                  allowPartition:
+                    description: AllowPartition represents whether to claim a full block device or a device that is a partition
+                    type: boolean
+                  blockVolumeMode:
+                    description: 'BlockVolumeMode represents whether to claim a device in Block mode or Filesystem mode. These are use cases of BlockVolumeMode: 1) Not specified: VolumeMode check will not be effective 2) VolumeModeBlock: BD should not have any filesystem or mountpoint 3) VolumeModeFileSystem: BD should have a filesystem and mountpoint. If DeviceFormat is    specified then the format should match with the FSType in BD'
+                    type: string
+                  formatType:
+                    description: Format of the device required, eg:ext4, xfs
+                    type: string
+                type: object
+              deviceType:
+                description: DeviceType represents the type of drive like SSD, HDD etc.,
+                nullable: true
+                type: string
+              hostName:
+                description: Node name from where blockdevice has to be claimed. To be deprecated. Use NodeAttributes.HostName instead
+                type: string
+              resources:
+                description: Resources will help with placing claims on Capacity, IOPS
+                properties:
+                  requests:
+                    additionalProperties:
+                      anyOf:
+                      - type: integer
+                      - type: string
+                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+                      x-kubernetes-int-or-string: true
+                    description: 'Requests describes the minimum resources required. eg: if storage resource of 10G is requested minimum capacity of 10G should be available TODO for validating'
+                    type: object
+                required:
+                - requests
+                type: object
+              selector:
+                description: Selector is used to find block devices to be considered for claiming
+                properties:
+                  matchExpressions:
+                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
+                    items:
+                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
+                      properties:
+                        key:
+                          description: key is the label key that the selector applies to.
+                          type: string
+                        operator:
+                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
+                          type: string
+                        values:
+                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
+                          items:
+                            type: string
+                          type: array
+                      required:
+                      - key
+                      - operator
+                      type: object
+                    type: array
+                  matchLabels:
+                    additionalProperties:
+                      type: string
+                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
+                    type: object
+                type: object
+            type: object
+          status:
+            description: DeviceClaimStatus defines the observed state of BlockDeviceClaim
+            properties:
+              phase:
+                description: Phase represents the current phase of the claim
+                type: string
+            required:
+            - phase
+            type: object
+        type: object
+    served: true
+    storage: true
+    subresources: {}
+status:
+  acceptedNames:
+    kind: ""
+    plural: ""
+  conditions: []
+  storedVersions: []
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/NOTES.txt b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/NOTES.txt
new file mode 100644
index 000000000..3c84551b5
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/NOTES.txt
@@ -0,0 +1,8 @@
+The OpenEBS Node Disk Manager has been installed. Check its status by running:
+$ kubectl get pods -n {{ .Release.Namespace }}
+
+Use `kubectl get bd -n {{ .Release.Namespace }} ` to see the list of 
+blockdevices attached to the Kubernetes cluster nodes.
+
+For more information, visit our Slack at https://openebs.io/community or view 
+the documentation online at http://docs.openebs.io/.
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/_helpers.tpl b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/_helpers.tpl
new file mode 100644
index 000000000..c97551045
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/_helpers.tpl
@@ -0,0 +1,242 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+This name is used for ndm daemonset
+*/}}
+{{- define "openebs-ndm.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "openebs-ndm.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create a default fully qualified ndm daemonset app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "openebs-ndm.fullname" -}}
+{{- if .Values.fullnameOverride }}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $name := default .Chart.Name .Values.nameOverride }}
+{{- if contains .Release.Name $name }}
+{{- $name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{- define "openebs-ndm.operator.name" -}}
+{{- $ndmName := default .Chart.Name .Values.ndmOperator.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- $componentName := .Values.ndmOperator.name | trunc 63 | trimSuffix "-" }}
+{{- printf "%s-%s" $ndmName $componentName | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create a default fully qualified ndm operator app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "openebs-ndm.operator.fullname" -}}
+{{- if .Values.ndmOperator.fullnameOverride }}
+{{- .Values.ndmOperator.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $ndmOperatorName := include "openebs-ndm.operator.name" .}}
+
+{{- $name := default $ndmOperatorName .Values.ndmOperator.nameOverride }}
+{{- if contains .Release.Name $name }}
+{{- $name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{- define "openebs-ndm.cluster-exporter.name" -}}
+{{- $ndmName := default .Chart.Name .Values.ndmExporter.clusterExporter.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- $componentName := .Values.ndmExporter.clusterExporter.name | trunc 63 | trimSuffix "-" }}
+{{- printf "%s-%s" $ndmName $componentName | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create a default fully qualified ndm cluster exporter name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "openebs-ndm.cluster-exporter.fullname" -}}
+{{- if .Values.ndmExporter.clusterExporter.fullnameOverride }}
+{{- .Values.ndmExporter.clusterExporter.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $ndmClusterExporterName := include "openebs-ndm.cluster-exporter.name" .}}
+
+{{- $name := default $ndmClusterExporterName .Values.ndmExporter.clusterExporter.nameOverride }}
+{{- if contains .Release.Name $name }}
+{{- $name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{- define "openebs-ndm.exporter.name" -}}
+{{- $ndmName := .Chart.Name | trunc 63 | trimSuffix "-" }}
+{{- $componentName := "exporter" | trunc 63 | trimSuffix "-" }}
+{{- printf "%s-%s" $ndmName $componentName | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{- define "openebs-ndm.node-exporter.name" -}}
+{{- $ndmName := default .Chart.Name .Values.ndmExporter.nodeExporter.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- $componentName := .Values.ndmExporter.nodeExporter.name | trunc 63 | trimSuffix "-" }}
+{{- printf "%s-%s" $ndmName $componentName | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create a default fully qualified ndm node exporter name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "openebs-ndm.node-exporter.fullname" -}}
+{{- if .Values.ndmExporter.nodeExporter.fullnameOverride }}
+{{- .Values.ndmExporter.nodeExporter.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $ndmNodeExporterName := include "openebs-ndm.node-exporter.name" .}}
+
+{{- $name := default $ndmNodeExporterName .Values.ndmExporter.nodeExporter.nameOverride }}
+{{- if contains .Release.Name $name }}
+{{- $name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "openebs-ndm.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create }}
+{{- default (include "openebs-ndm.fullname" .) .Values.serviceAccount.name }}
+{{- else }}
+{{- default "default" .Values.serviceAccount.name }}
+{{- end }}
+{{- end }}
+
+{{/*
+Define meta labels for ndm components
+*/}}
+{{- define "openebs-ndm.common.metaLabels" -}}
+chart: {{ template "openebs-ndm.chart" . }}
+heritage: {{ .Release.Service }}
+openebs.io/version: {{ .Values.release.version | quote }}
+{{- end -}}
+
+
+{{/*
+Create match labels for ndm daemonset component
+*/}}
+{{- define "openebs-ndm.matchLabels" -}}
+app: {{ template "openebs-ndm.name" . }}
+release: {{ .Release.Name }}
+component: {{ .Values.ndm.componentName | quote }}
+{{- end -}}
+
+{{/*
+Create component labels for ndm daemonset component
+*/}}
+{{- define "openebs-ndm.componentLabels" -}}
+openebs.io/component-name: {{ .Values.ndm.componentName | quote }}
+{{- end -}}
+
+
+{{/*
+Create labels for ndm daemonset component
+*/}}
+{{- define "openebs-ndm.labels" -}}
+{{ include "openebs-ndm.common.metaLabels" . }}
+{{ include "openebs-ndm.matchLabels" . }}
+{{ include "openebs-ndm.componentLabels" . }}
+{{- end -}}
+
+{{/*
+Create match labels for ndm operator deployment
+*/}}
+{{- define "openebs-ndm.operator.matchLabels" -}}
+app: {{ template "openebs-ndm.operator.name" . }}
+release: {{ .Release.Name }}
+component: {{ default (include "openebs-ndm.operator.name" .) .Values.ndmOperator.componentName }}
+{{- end -}}
+
+{{/*
+Create component labels for ndm operator component
+*/}}
+{{- define "openebs-ndm.operator.componentLabels" -}}
+openebs.io/component-name: {{ default (include "openebs-ndm.operator.name" .) .Values.ndmOperator.componentName }}
+{{- end -}}
+
+
+{{/*
+Create labels for ndm operator component
+*/}}
+{{- define "openebs-ndm.operator.labels" -}}
+{{ include "openebs-ndm.common.metaLabels" . }}
+{{ include "openebs-ndm.operator.matchLabels" . }}
+{{ include "openebs-ndm.operator.componentLabels" . }}
+{{- end -}}
+
+{{/*
+Create match labels for ndm cluster exporter deployment
+*/}}
+{{- define "openebs-ndm.cluster-exporter.matchLabels" -}}
+app: {{ template "openebs-ndm.exporter.name" . }}
+release: {{ .Release.Name }}
+component: {{ default (include "openebs-ndm.cluster-exporter.name" .) .Values.ndmExporter.clusterExporter.componentName }}
+{{- end -}}
+
+{{/*
+Create component labels for ndm cluster exporter component
+*/}}
+{{- define "openebs-ndm.cluster-exporter.componentLabels" -}}
+openebs.io/component-name: {{ default (include "openebs-ndm.cluster-exporter.name" .) .Values.ndmExporter.clusterExporter.componentName }}
+{{- end -}}
+
+
+{{/*
+Create labels for ndm cluster exporter component
+*/}}
+{{- define "openebs-ndm.cluster-exporter.labels" -}}
+{{ include "openebs-ndm.common.metaLabels" . }}
+{{ include "openebs-ndm.cluster-exporter.matchLabels" . }}
+{{ include "openebs-ndm.cluster-exporter.componentLabels" . }}
+{{- end -}}
+
+{{/*
+Create match labels for ndm node exporter deployment
+*/}}
+{{- define "openebs-ndm.node-exporter.matchLabels" -}}
+app: {{ template "openebs-ndm.exporter.name" . }}
+release: {{ .Release.Name }}
+component: {{ default (include "openebs-ndm.node-exporter.name" .) .Values.ndmExporter.nodeExporter.componentName }}
+{{- end -}}
+
+{{/*
+Create component labels for ndm node exporter component
+*/}}
+{{- define "openebs-ndm.node-exporter.componentLabels" -}}
+openebs.io/component-name: {{ default (include "openebs-ndm.node-exporter.name" .) .Values.ndmExporter.nodeExporter.componentName }}
+{{- end -}}
+
+
+{{/*
+Create labels for ndm cluster node component
+*/}}
+{{- define "openebs-ndm.node-exporter.labels" -}}
+{{ include "openebs-ndm.common.metaLabels" . }}
+{{ include "openebs-ndm.node-exporter.matchLabels" . }}
+{{ include "openebs-ndm.node-exporter.componentLabels" . }}
+{{- end -}}
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/cluster-exporter-service.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/cluster-exporter-service.yaml
new file mode 100644
index 000000000..719f6b4dd
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/cluster-exporter-service.yaml
@@ -0,0 +1,18 @@
+{{- if and .Values.ndmExporter.enabled .Values.ndmExporter.clusterExporter.metricsPort }}
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "openebs-ndm.cluster-exporter.fullname" . }}-service
+  labels:
+    {{- include "openebs-ndm.cluster-exporter.labels" . | nindent 4 }}
+spec:
+  clusterIP: None
+  ports:
+    - name: metrics
+      port: {{ .Values.ndmExporter.clusterExporter.metricsPort }}
+      targetPort: {{ .Values.ndmExporter.clusterExporter.metricsPort }}
+  selector:
+    {{- with .Values.ndmExporter.clusterExporter.podLabels }}
+    {{ toYaml . }}
+    {{- end }}
+  {{- end }}
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/cluster-exporter.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/cluster-exporter.yaml
new file mode 100644
index 000000000..af8b1e665
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/cluster-exporter.yaml
@@ -0,0 +1,60 @@
+{{- if .Values.ndmExporter.enabled }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ template "openebs-ndm.cluster-exporter.fullname" . }}
+  labels:
+    {{- include "openebs-ndm.cluster-exporter.labels" . | nindent 4 }}
+spec:
+  replicas: 1
+  strategy:
+    type: Recreate
+  selector:
+    matchLabels:
+      {{- include "openebs-ndm.cluster-exporter.matchLabels" . | nindent 6 }}
+  template:
+    metadata:
+      labels:
+        {{- include "openebs-ndm.cluster-exporter.labels" . | nindent 8 }}
+        {{- with .Values.ndmExporter.clusterExporter.podLabels }}
+        {{ toYaml . }}
+        {{- end }}
+    spec:
+      serviceAccountName: {{ template "openebs-ndm.serviceAccountName" . }}
+      containers:
+        - name: {{ template "openebs-ndm.cluster-exporter.fullname" . }}
+          image: "{{ .Values.ndmExporter.image.registry }}{{ .Values.ndmExporter.image.repository }}:{{ .Values.ndmExporter.image.tag }}"
+          command:
+            - /usr/local/bin/exporter
+          args:
+            - "start"
+            - "--mode=cluster"
+            - "--port=$(METRICS_LISTEN_PORT)"
+            - "--metrics=/metrics"
+          ports:
+            - containerPort: {{ .Values.ndmExporter.clusterExporter.metricsPort }}
+              protocol: TCP
+              name: metrics
+          imagePullPolicy: {{ .Values.ndmExporter.image.pullPolicy }}
+          env:
+            - name: NAMESPACE
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.namespace
+            {{- if .Values.ndmExporter.clusterExporter.metricsPort }}
+            - name: METRICS_LISTEN_PORT
+              value: :{{ .Values.ndmExporter.clusterExporter.metricsPort }}
+            {{- end }}
+{{- if .Values.imagePullSecrets }}
+      imagePullSecrets:
+{{ toYaml .Values.imagePullSecrets | indent 8 }}
+{{- end }}
+{{- if .Values.ndmExporter.clusterExporter.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.ndmExporter.clusterExporter.nodeSelector | indent 8 }}
+{{- end }}
+{{- if .Values.ndmExporter.clusterExporter.tolerations }}
+      tolerations:
+{{ toYaml .Values.ndmExporter.clusterExporter.tolerations | indent 8 }}
+{{- end }}
+{{- end }}
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/configmap.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/configmap.yaml
new file mode 100644
index 000000000..99b814d56
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/configmap.yaml
@@ -0,0 +1,45 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "openebs-ndm.fullname" . }}-config
+data:
+  # node-disk-manager-config contains config of available probes and filters.
+  # Probes and Filters will initialize with default values if config for that
+  # filter or probe are not present in configmap
+
+  # udev-probe is default or primary probe it should be enabled to run ndm
+  # filterconfigs contains configs of filters. To provide a group of include
+  # and exclude values add it as , separated string
+  node-disk-manager.config: |
+    probeconfigs:
+      - key: udev-probe
+        name: udev probe
+        state: {{ .Values.ndm.probes.enableUdevProbe }}
+      - key: seachest-probe
+        name: seachest probe
+        state: {{ .Values.ndm.probes.enableSeachest }}
+      - key: smart-probe
+        name: smart probe
+        state: {{ .Values.ndm.probes.enableSmartProbe }}
+    filterconfigs:
+      - key: os-disk-exclude-filter
+        name: os disk exclude filter
+        state: {{ .Values.ndm.filters.enableOsDiskExcludeFilter }}
+        exclude: "{{ .Values.ndm.filters.osDiskExcludePaths }}"
+      - key: vendor-filter
+        name: vendor filter
+        state: {{ .Values.ndm.filters.enableVendorFilter }}
+        include: ""
+        exclude: "{{ .Values.ndm.filters.excludeVendors }}"
+      - key: path-filter
+        name: path filter
+        state: {{ .Values.ndm.filters.enablePathFilter }}
+        include: "{{ .Values.ndm.filters.includePaths }}"
+        exclude: "{{ .Values.ndm.filters.excludePaths }}"
+    metaconfigs:
+      - key: node-labels
+        name: node labels
+        pattern: "{{ .Values.ndm.metaConfig.nodeLabelPattern }}"
+      - key: device-labels
+        name: device labels
+        type: "{{ .Values.ndm.metaConfig.deviceLabelTypes }}"
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/daemonset.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/daemonset.yaml
new file mode 100644
index 000000000..715db873e
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/daemonset.yaml
@@ -0,0 +1,179 @@
+{{- if .Values.ndm.enabled }}
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+  name: {{ template "openebs-ndm.fullname" . }}
+  {{- with .Values.ndm.annotations }}
+  annotations: {{ toYaml . | nindent 4 }}
+  {{- end }}
+  labels:
+    {{- include "openebs-ndm.labels" . | nindent 4 }}
+spec:
+  updateStrategy:
+{{ toYaml .Values.ndm.updateStrategy | indent 4 }}
+  selector:
+    matchLabels:
+      {{- include "openebs-ndm.matchLabels" . | nindent 6 }}
+  template:
+    metadata:
+      {{- with .Values.ndm.podAnnotations }}
+      annotations: {{ toYaml . | nindent 8 }}
+      {{- end }}
+      labels:
+        {{- include "openebs-ndm.labels" . | nindent 8 }}
+        {{- with .Values.ndm.podLabels}}
+        {{ toYaml . }}
+        {{- end}}
+    spec:
+      serviceAccountName: {{ template "openebs-ndm.serviceAccountName" . }}
+{{- if .Values.featureGates.enabled }}
+{{- if .Values.featureGates.APIService.enabled }}
+      hostPID: true
+{{- end}}
+{{- end}}
+      containers:
+      - name: {{ template "openebs-ndm.name" . }}
+        image: "{{ .Values.ndm.image.registry }}{{ .Values.ndm.image.repository }}:{{ .Values.ndm.image.tag }}"
+        args:
+          - -v=4
+{{- if .Values.featureGates.enabled }}
+{{- if .Values.featureGates.GPTBasedUUID.enabled }}
+          - --feature-gates={{ .Values.featureGates.GPTBasedUUID.featureGateFlag }}
+{{- end}}
+{{- if .Values.featureGates.APIService.enabled }}
+          - --feature-gates={{ .Values.featureGates.APIService.featureGateFlag }}
+          - --api-service-address={{ .Values.featureGates.APIService.address }}
+{{- end}}
+{{- if .Values.featureGates.UseOSDisk.enabled }}
+          - --feature-gates={{ .Values.featureGates.UseOSDisk.featureGateFlag }}
+{{- end}}
+{{- if .Values.featureGates.ChangeDetection.enabled }}
+          - --feature-gates={{ .Values.featureGates.ChangeDetection.featureGateFlag }}
+{{- end}}
+{{- if .Values.featureGates.PartitionTableUUID.enabled }}
+          - --feature-gates={{ .Values.featureGates.PartitionTableUUID.featureGateFlag }}
+{{- end}}
+{{- end}}
+        imagePullPolicy: {{ .Values.ndm.image.pullPolicy }}
+        resources:
+{{ toYaml .Values.ndm.resources | indent 12 }}
+        securityContext:
+          privileged: true
+        env:
+        # namespace in which NDM is installed will be passed to NDM Daemonset
+        # as environment variable
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.namespace
+        # pass hostname as env variable using downward API to the NDM container
+        - name: NODE_NAME
+          valueFrom:
+            fieldRef:
+              fieldPath: spec.nodeName
+{{- if .Values.ndm.sparse }}
+{{- if .Values.ndm.sparse.path }}
+        # specify the directory where the sparse files need to be created.
+        # if not specified, then sparse files will not be created.
+        - name: SPARSE_FILE_DIR
+          value: "{{ .Values.ndm.sparse.path }}"
+{{- end }}
+{{- if .Values.ndm.sparse.size }}
+        # Size(bytes) of the sparse file to be created.
+        - name: SPARSE_FILE_SIZE
+          value: "{{ .Values.ndm.sparse.size }}"
+{{- end }}
+{{- if .Values.ndm.sparse.count }}
+        # Specify the number of sparse files to be created
+        - name: SPARSE_FILE_COUNT
+          value: "{{ .Values.ndm.sparse.count }}"
+{{- end }}
+{{- end }}
+        # Process name used for matching is limited to the 15 characters
+        # present in the pgrep output.
+        # So fullname can be used here with pgrep (cmd is < 15 chars).
+        livenessProbe:
+          exec:
+            command:
+            - pgrep
+            - "ndm"
+          initialDelaySeconds: {{ .Values.ndm.healthCheck.initialDelaySeconds }}
+          periodSeconds: {{ .Values.ndm.healthCheck.periodSeconds }}
+        volumeMounts:
+        - name: config
+          mountPath: /host/node-disk-manager.config
+          subPath: node-disk-manager.config
+          readOnly: true
+        - name: udev
+          mountPath: /run/udev
+        - name: procmount
+          mountPath: /host/proc
+          readOnly: true
+        - name: devmount
+          mountPath: /dev
+        - name: basepath
+          mountPath: /var/openebs/ndm
+{{- if .Values.ndm.sparse }}
+{{- if .Values.ndm.sparse.path }}
+        - name: sparsepath
+          mountPath: {{ .Values.ndm.sparse.path }}
+{{- end }}
+{{- end }}
+      volumes:
+      - name: config
+        configMap:
+          name: {{ include "openebs-ndm.fullname" . }}-config
+      - name: udev
+        hostPath:
+          path: /run/udev
+          type: Directory
+      # mount /proc (to access mount file of process 1 of host) inside container
+      # to read mount-point of disks and partitions
+      - name: procmount
+        hostPath:
+          path: /proc
+          type: Directory
+      - name: devmount
+      # the /dev directory is mounted so that we have access to the devices that
+      # are connected at runtime of the pod.
+        hostPath:
+          path: /dev
+          type: Directory
+      - name: basepath
+        hostPath:
+          path: "{{ .Values.varDirectoryPath.baseDir }}/ndm"
+          type: DirectoryOrCreate
+{{- if .Values.ndm.sparse }}
+{{- if .Values.ndm.sparse.path }}
+      - name: sparsepath
+        hostPath:
+          path: {{ .Values.ndm.sparse.path }}
+{{- end }}
+{{- end }}
+      # By default the node-disk-manager will be run on all kubernetes nodes
+      # If you would like to limit this to only some nodes, say the nodes
+      # that have storage attached, you could label those node and use
+      # nodeSelector.
+      #
+      # e.g. label the storage nodes with - "openebs.io/nodegroup"="storage-node"
+      # kubectl label node <node-name> "openebs.io/nodegroup"="storage-node"
+      #nodeSelector:
+      #  "openebs.io/nodegroup": "storage-node"
+{{- if .Values.imagePullSecrets }}
+      imagePullSecrets:
+{{ toYaml .Values.imagePullSecrets | indent 8 }}
+{{- end }}
+{{- if .Values.ndm.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.ndm.nodeSelector | indent 8 }}
+{{- end }}
+{{- if .Values.ndm.tolerations }}
+      tolerations:
+{{ toYaml .Values.ndm.tolerations | indent 8 }}
+{{- end }}
+{{- if .Values.ndm.securityContext }}
+      securityContext:
+{{ toYaml .Values.ndm.securityContext | indent 8 }}
+{{- end }}
+      hostNetwork: true
+{{- end }}
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/deployment.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/deployment.yaml
new file mode 100644
index 000000000..213a861e6
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/deployment.yaml
@@ -0,0 +1,87 @@
+{{- if .Values.ndmOperator.enabled }}
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ template "openebs-ndm.operator.fullname" . }}
+  {{- with .Values.ndmOperator.annotations }}
+  annotations: {{ toYaml . | nindent 4 }}
+  {{- end }}
+  labels:
+    {{- include "openebs-ndm.operator.labels" . | nindent 4 }}
+spec:
+  replicas: {{ .Values.ndmOperator.replicas }}
+  strategy:
+    type: "Recreate"
+    rollingUpdate: null
+  selector:
+    matchLabels:
+      {{- include "openebs-ndm.operator.matchLabels" . | nindent 6 }}
+  template:
+    metadata:
+      {{- with .Values.ndmOperator.podAnnotations }}
+      annotations: {{ toYaml . | nindent 8 }}
+      {{- end }}
+      labels:
+        {{- include "openebs-ndm.operator.labels" . | nindent 8 }}
+        {{- with .Values.ndmOperator.podLabels}}
+        {{ toYaml . }}
+        {{- end}}
+    spec:
+      serviceAccountName: {{ template "openebs-ndm.serviceAccountName" . }}
+      containers:
+      - name: {{ template "openebs-ndm.operator.fullname" . }}
+        image: "{{ .Values.ndmOperator.image.registry }}{{ .Values.ndmOperator.image.repository }}:{{ .Values.ndmOperator.image.tag }}"
+        imagePullPolicy: {{ .Values.ndmOperator.image.pullPolicy }}
+        resources:
+{{ toYaml .Values.ndmOperator.resources | indent 12 }}
+        livenessProbe:
+          httpGet:
+            path: /healthz
+            port: 8585
+          initialDelaySeconds: {{ .Values.ndmOperator.healthCheck.initialDelaySeconds }}
+          periodSeconds: {{ .Values.ndmOperator.healthCheck.periodSeconds }}
+        readinessProbe:
+          httpGet:
+            path: /readyz
+            port: 8585
+          initialDelaySeconds: {{ .Values.ndmOperator.readinessCheck.initialDelaySeconds }}
+          periodSeconds: {{ .Values.ndmOperator.readinessCheck.periodSeconds }}
+        env:
+        - name: WATCH_NAMESPACE
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.namespace
+        - name: POD_NAME
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: SERVICE_ACCOUNT
+          valueFrom:
+            fieldRef:
+              fieldPath: spec.serviceAccountName
+        - name: OPERATOR_NAME
+          value: "node-disk-operator"
+        - name: CLEANUP_JOB_IMAGE
+          value: "{{ .Values.helperPod.image.registry }}{{ .Values.helperPod.image.repository }}:{{ .Values.helperPod.image.tag }}"
+{{- if .Values.imagePullSecrets }}
+        - name: OPENEBS_IO_IMAGE_PULL_SECRETS
+          value: "{{- range $index, $secret := .Values.imagePullSecrets}}{{if $index}},{{end}}{{ $secret.name }}{{- end}}"
+{{- end }}
+{{- if .Values.imagePullSecrets }}
+      imagePullSecrets:
+{{ toYaml .Values.imagePullSecrets | indent 8 }}
+{{- end }}
+{{- if .Values.ndmOperator.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.ndmOperator.nodeSelector | indent 8 }}
+{{- end }}
+{{- if .Values.ndmOperator.securityContext }}
+      securityContext:
+{{ toYaml .Values.ndmOperator.securityContext | indent 8 }}
+{{- end }}
+{{- if .Values.ndmOperator.tolerations }}
+      tolerations:
+{{ toYaml .Values.ndmOperator.tolerations | indent 8 }}
+{{- end }}
+{{- end }}
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/node-exporter-service.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/node-exporter-service.yaml
new file mode 100644
index 000000000..026b77d8a
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/node-exporter-service.yaml
@@ -0,0 +1,18 @@
+{{- if and .Values.ndmExporter.enabled .Values.ndmExporter.nodeExporter.metricsPort }}
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "openebs-ndm.node-exporter.fullname" . }}-service
+  labels:
+    {{- include "openebs-ndm.node-exporter.labels" . | nindent 4 }}
+spec:
+  clusterIP: None
+  ports:
+    - name: metrics
+      port: {{ .Values.ndmExporter.nodeExporter.metricsPort }}
+      targetPort: {{ .Values.ndmExporter.nodeExporter.metricsPort }}
+  selector:
+    {{- with .Values.ndmExporter.nodeExporter.podLabels }}
+    {{ toYaml . }}
+    {{- end }}
+  {{- end }}
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/node-exporter.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/node-exporter.yaml
new file mode 100644
index 000000000..cd5f63585
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/node-exporter.yaml
@@ -0,0 +1,62 @@
+{{- if .Values.ndmExporter.enabled }}
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+  name: {{ template "openebs-ndm.node-exporter.fullname" . }}
+  labels:
+    {{- include "openebs-ndm.node-exporter.labels" . | nindent 4 }}
+spec:
+  updateStrategy:
+    type: RollingUpdate
+  selector:
+    matchLabels:
+      {{- include "openebs-ndm.node-exporter.matchLabels" . | nindent 6 }}
+  template:
+    metadata:
+      labels:
+        {{- include "openebs-ndm.node-exporter.labels" . | nindent 8 }}
+        {{- with .Values.ndmExporter.nodeExporter.podLabels }}
+        {{ toYaml . }}
+        {{- end }}
+    spec:
+      serviceAccountName: {{ template "openebs-ndm.serviceAccountName" . }}
+      containers:
+        - name: {{ template "openebs-ndm.node-exporter.fullname" . }}
+          image: "{{ .Values.ndmExporter.image.registry }}{{ .Values.ndmExporter.image.repository }}:{{ .Values.ndmExporter.image.tag }}"
+          command:
+            - /usr/local/bin/exporter
+          args:
+            - "start"
+            - "--mode=node"
+            - "--port=$(METRICS_LISTEN_PORT)"
+            - "--metrics=/metrics"
+          ports:
+            - containerPort: {{ .Values.ndmExporter.nodeExporter.metricsPort }}
+              protocol: TCP
+              name: metrics
+          imagePullPolicy: {{ .Values.ndmExporter.image.pullPolicy }}
+          securityContext:
+            privileged: true
+          env:
+            - name: NAMESPACE
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.namespace
+            {{- if .Values.ndmExporter.nodeExporter.metricsPort }}
+            - name: METRICS_LISTEN_PORT
+              value: :{{ .Values.ndmExporter.nodeExporter.metricsPort }}
+            {{- end }}
+{{- if .Values.imagePullSecrets }}
+      imagePullSecrets:
+{{ toYaml .Values.imagePullSecrets | indent 8 }}
+{{- end }}
+{{- if .Values.ndmExporter.nodeExporter.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.ndmExporter.nodeExporter.nodeSelector | indent 8 }}
+{{- end }}
+{{- if .Values.ndmExporter.nodeExporter.tolerations }}
+      tolerations:
+{{ toYaml .Values.ndmExporter.nodeExporter.tolerations | indent 8 }}
+{{- end }}
+{{- end }}
+
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/rbac.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/rbac.yaml
new file mode 100644
index 000000000..8e81c4922
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/templates/rbac.yaml
@@ -0,0 +1,44 @@
+{{- if .Values.serviceAccount.create -}}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: {{ include "openebs-ndm.serviceAccountName" . }}
+{{- end }}
+---
+kind: ClusterRole
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: {{ include "openebs-ndm.fullname" . }}
+rules:
+  - apiGroups: ["*"]
+    resources: ["nodes", "pods", "events", "configmaps", "jobs"]
+    verbs:
+      - '*'
+  - apiGroups: ["apiextensions.k8s.io"]
+    resources: ["customresourcedefinitions"]
+    verbs:
+      - '*'
+  - apiGroups:
+      - openebs.io
+    resources:
+      - blockdevices
+      - blockdeviceclaims
+    verbs:
+      - '*'
+---
+kind: ClusterRoleBinding
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: {{ include "openebs-ndm.fullname" . }}
+subjects:
+  - kind: ServiceAccount
+    name: {{ include "openebs-ndm.serviceAccountName" . }}
+    namespace: {{ .Release.Namespace }}
+  - kind: User
+    name: system:serviceaccount:default:default
+    apiGroup: rbac.authorization.k8s.io
+roleRef:
+  kind: ClusterRole
+  name: {{ include "openebs-ndm.fullname" . }}
+  apiGroup: rbac.authorization.k8s.io
+---
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/values.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/values.yaml
new file mode 100644
index 000000000..25486060d
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/charts/openebs-ndm/values.yaml
@@ -0,0 +1,156 @@
+# Default values for ndm.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+release:
+  version: "2.1.0"
+
+imagePullSecrets:
+#  - name: "image-pull-secret"
+
+ndm:
+  componentName: ndm
+  enabled: true
+  image:
+    # Make sure that registry name end with a '/'.
+    # For example : quay.io/ is a correct value here and quay.io is incorrect
+    registry:
+    repository: openebs/node-disk-manager
+    pullPolicy: IfNotPresent
+    # Overrides the image tag whose default is the chart appVersion.
+    tag: 2.1.0
+  sparse:
+    path: "/var/openebs/sparse"
+    size: "10737418240"
+    count: "0"
+  updateStrategy:
+    type: RollingUpdate
+  annotations: {}
+  podAnnotations: {}
+  resources: {}
+  # limits:
+  #   cpu: 10m
+  #   memory: 32Mi
+  # requests:
+  #   cpu: 10m
+  #   memory: 32Mi
+  ## Labels to be added to ndm daemonset pods
+  podLabels:
+    name: openebs-ndm
+  nodeSelector: {}
+  tolerations: []
+  securityContext: {}
+  filters:
+    enableOsDiskExcludeFilter: true
+    osDiskExcludePaths: "/,/etc/hosts,/boot"
+    enableVendorFilter: true
+    excludeVendors: "CLOUDBYT,OpenEBS"
+    enablePathFilter: true
+    includePaths: ""
+    excludePaths: "loop,fd0,sr0,/dev/ram,/dev/dm-,/dev/md,/dev/rbd,/dev/zd"
+  probes:
+    enableSeachest: false
+    enableUdevProbe: true
+    enableSmartProbe: true
+  metaConfig:
+    nodeLabelPattern: ""
+    deviceLabelTypes: ""
+  healthCheck:
+    initialDelaySeconds: 30
+    periodSeconds: 60
+
+ndmOperator:
+  name: operator
+  enabled: true
+  image:
+    registry:
+    repository: openebs/node-disk-operator
+    pullPolicy: IfNotPresent
+    # Overrides the image tag whose default is the chart appVersion.
+    tag: 2.1.0
+  podLabels:
+    name: openebs-ndm-operator
+  annotations: {}
+  podAnnotations: {}
+  nodeSelector: {}
+  resources: {}
+  securityContext: {}
+  tolerations: []
+  healthCheck:
+    initialDelaySeconds: 15
+    periodSeconds: 20
+  readinessCheck:
+    initialDelaySeconds: 5
+    periodSeconds: 10
+  replicas: 1
+  upgradeStrategy: Recreate
+
+ndmExporter:
+  enabled: false
+  image:
+    registry:
+    repository: openebs/node-disk-exporter
+    pullPolicy: IfNotPresent
+    # Overrides the image tag whose default is the chart appVersion.
+    tag: 2.1.0
+  nodeExporter:
+    name: node-exporter
+    podLabels:
+      name: openebs-ndm-node-exporter
+    # The TCP port number used for exposing ndm-node-exporter metrics.
+    # If not set, service will not be created to expose metrics endpoint to serviceMonitor
+    # and listen-port flag will not be set and container port will be empty.
+    metricsPort: 9101
+    nodeSelector: {}
+    tolerations: []
+  clusterExporter:
+    name: cluster-exporter
+    podLabels:
+      name: openebs-ndm-cluster-exporter
+    # The TCP port number used for exposing ndm-cluster-exporter metrics.
+    # If not set, service will not be created to expose metrics endpoint to serviceMonitor
+    # and listen-port flag will not be set and container port will be empty.
+    metricsPort: 9100
+    nodeSelector: {}
+    tolerations: []
+
+helperPod:
+  image:
+    registry: ""
+    repository: openebs/linux-utils
+    pullPolicy: IfNotPresent
+    # Overrides the image tag whose default is the chart appVersion.
+    tag: 3.4.0
+
+crd:
+  enableInstall: false
+
+featureGates:
+  enabled: true
+  GPTBasedUUID:
+    enabled: true
+    featureGateFlag: "GPTBasedUUID"
+  APIService:
+    enabled: false
+    featureGateFlag: "APIService"
+    address: "0.0.0.0:9115"
+  UseOSDisk:
+    enabled: false
+    featureGateFlag: "UseOSDisk"
+  ChangeDetection:
+    enabled: false
+    featureGateFlag: "ChangeDetection"
+  PartitionTableUUID:
+    enabled: false
+    featureGateFlag: "PartitionTableUUID"
+
+# Directory used by the OpenEBS to store debug information and so forth
+# that are generated in the course of running OpenEBS containers.
+varDirectoryPath:
+  baseDir: "/var/openebs"
+
+serviceAccount:
+  # Specifies whether a service account should be created
+  create: true
+  # The name of the service account to use.
+  # If not set and create is true, a name is generated using the fullname template
+  name: openebs-ndm
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/NOTES.txt b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/NOTES.txt
new file mode 100644
index 000000000..a82ff9853
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/NOTES.txt
@@ -0,0 +1,12 @@
+The OpenEBS Dynamic LocalPV Provisioner has been installed.
+Check its status by running:
+$ kubectl get pods -n {{ .Release.Namespace }}
+
+Use `kubectl get bd -n {{ .Release.Namespace }}` to list the 
+blockdevices attached to the Kubernetes cluster nodes.
+
+Get started with the Dynamic LocalPV Provisioner Quickstart guide at:
+https://github.com/openebs/dynamic-localpv-provisioner/blob/develop/docs/quickstart.md
+
+For more information, visit our Slack at https://openebs.io/community or view 
+the OpenEBS documentation online at https://openebs.io/docs
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/_helpers.tpl b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/_helpers.tpl
new file mode 100644
index 000000000..ea1ce3111
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/_helpers.tpl
@@ -0,0 +1,79 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "localpv.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified localpv provisioner name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "localpv.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "localpv.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Meta labels
+*/}}
+{{- define "localpv.common.metaLabels" -}}
+chart: {{ template "localpv.chart" . }}
+heritage: {{ .Release.Service }}
+openebs.io/version: {{ .Values.release.version | quote }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "localpv.selectorLabels" -}}
+app: {{ template "localpv.name" . }}
+release: {{ .Release.Name }}
+component: {{ .Values.localpv.name | quote }}
+{{- end -}}
+
+{{/*
+Component labels
+*/}}
+{{- define "localpv.componentLabels" -}}
+openebs.io/component-name: openebs-{{ .Values.localpv.name }}
+{{- end -}}
+
+{{/*
+Common labels
+*/}}
+{{- define "localpv.labels" -}}
+{{ include "localpv.common.metaLabels" . }}
+{{ include "localpv.selectorLabels" . }}
+{{ include "localpv.componentLabels" . }}
+{{- end -}}
+
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "localpv.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create -}}
+    {{ default (include "localpv.fullname" .) .Values.serviceAccount.name }}
+{{- else -}}
+    {{ default "default" .Values.serviceAccount.name }}
+{{- end -}}
+{{- end -}}
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/deployment.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/deployment.yaml
new file mode 100644
index 000000000..63936f4b4
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/deployment.yaml
@@ -0,0 +1,120 @@
+{{- if .Values.localpv.enabled }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ template "localpv.fullname" . }}
+  {{- with .Values.localpv.annotations }}
+  annotations: {{ toYaml . | nindent 4 }}
+  {{- end }}
+  labels:
+    {{- include "localpv.labels" . | nindent 4 }}
+spec:
+  replicas: {{ .Values.localpv.replicas }}
+  strategy:
+    type: "Recreate"
+    rollingUpdate: null
+  selector:
+    matchLabels:
+      {{- include "localpv.selectorLabels" . | nindent 6 }}
+  template:
+    metadata:
+      {{- with .Values.localpv.podAnnotations }}
+      annotations: {{ toYaml . | nindent 8 }}
+      {{- end }}
+      labels:
+        {{- include "localpv.labels" . | nindent 8 }}
+        {{- with .Values.localpv.podLabels }}
+        {{ toYaml . | nindent 8 }}
+        {{- end }}
+    spec:
+    {{- with .Values.imagePullSecrets }}
+      imagePullSecrets:
+        {{- toYaml . | nindent 8 }}
+    {{- end }}
+      serviceAccountName: {{ template "localpv.serviceAccountName" . }}
+      securityContext:
+        {{- toYaml .Values.podSecurityContext | nindent 8 }}
+      containers:
+      - name: {{ template "localpv.fullname" . }}
+        image: "{{ .Values.localpv.image.registry }}{{ .Values.localpv.image.repository }}:{{ .Values.localpv.image.tag }}"
+        imagePullPolicy: {{ .Values.localpv.image.pullPolicy }}
+        resources:
+{{ toYaml .Values.localpv.resources | indent 10 }}
+        args:
+          - "--bd-time-out=$(BDC_BD_BIND_RETRIES)"
+        env:
+        # OPENEBS_IO_K8S_MASTER enables openebs provisioner to connect to K8s
+        # based on this address. This is ignored if empty.
+        # This is supported for openebs provisioner version 0.5.2 onwards
+        #- name: OPENEBS_IO_K8S_MASTER
+        #  value: "http://10.128.0.12:8080"
+        # OPENEBS_IO_KUBE_CONFIG enables openebs provisioner to connect to K8s
+        # based on this config. This is ignored if empty.
+        # This is supported for openebs provisioner version 0.5.2 onwards
+        #- name: OPENEBS_IO_KUBE_CONFIG
+        #  value: "/home/ubuntu/.kube/config"
+        # This sets the number of times the provisioner should try
+        # with a polling interval of 5 seconds, to get the Blockdevice
+        # Name from a BlockDeviceClaim, before the BlockDeviceClaim
+        # is deleted. E.g. 12 * 5 seconds = 60 seconds timeout
+        - name: BDC_BD_BIND_RETRIES
+          value: "{{ .Values.localpv.waitForBDBindTimeoutRetryCount }}"
+        - name: OPENEBS_NAMESPACE
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.namespace
+        - name: NODE_NAME
+          valueFrom:
+            fieldRef:
+              fieldPath: spec.nodeName
+        # OPENEBS_SERVICE_ACCOUNT provides the service account of this pod as
+        # environment variable
+        - name: OPENEBS_SERVICE_ACCOUNT
+          valueFrom:
+            fieldRef:
+              fieldPath: spec.serviceAccountName
+        # OPENEBS_IO_BASE_PATH is the environment variable that provides the
+        # default base path on the node where host-path PVs will be provisioned.
+        - name: OPENEBS_IO_ENABLE_ANALYTICS
+          value: "{{ .Values.analytics.enabled }}"
+        - name: OPENEBS_IO_BASE_PATH
+          value: "{{ .Values.localpv.basePath }}"
+        - name: OPENEBS_IO_HELPER_IMAGE
+          value: "{{ .Values.helperPod.image.registry }}{{ .Values.helperPod.image.repository }}:{{ .Values.helperPod.image.tag }}"
+        - name: OPENEBS_IO_INSTALLER_TYPE
+          value: "localpv-charts-helm"
+        # LEADER_ELECTION_ENABLED is used to enable/disable leader election. By default
+        # leader election is enabled.
+        - name: LEADER_ELECTION_ENABLED
+          value: "{{ .Values.localpv.enableLeaderElection }}"
+{{- if .Values.imagePullSecrets }}
+        - name: OPENEBS_IO_IMAGE_PULL_SECRETS
+          value: "{{- range $index, $secret := .Values.imagePullSecrets}}{{if $index}},{{end}}{{ $secret.name }}{{- end}}"
+{{- end }}
+        # Process name used for matching is limited to the 15 characters
+        # present in the pgrep output.
+        # So fullname can't be used here with pgrep (>15 chars).A regular expression
+        # that matches the entire command name has to specified.
+        # Anchor `^` : matches any string that starts with `provisioner-loc`
+        # `.*`: matches any string that has `provisioner-loc` followed by zero or more char
+        livenessProbe:
+          exec:
+            command:
+            - sh
+            - -c
+            - test `pgrep -c "^provisioner-loc.*"` = 1
+          initialDelaySeconds: {{ .Values.localpv.healthCheck.initialDelaySeconds }}
+          periodSeconds: {{ .Values.localpv.healthCheck.periodSeconds }}
+{{- if .Values.localpv.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.localpv.nodeSelector | indent 8 }}
+{{- end }}
+{{- if .Values.localpv.tolerations }}
+      tolerations:
+{{ toYaml .Values.localpv.tolerations | indent 8 }}
+{{- end }}
+{{- if .Values.localpv.affinity }}
+      affinity:
+{{ toYaml .Values.localpv.affinity | indent 8 }}
+{{- end }}
+{{- end }}
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/device-class.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/device-class.yaml
new file mode 100644
index 000000000..35fb94bcc
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/device-class.yaml
@@ -0,0 +1,31 @@
+{{- if .Values.deviceClass.enabled }}
+apiVersion: storage.k8s.io/v1
+kind: StorageClass
+metadata:
+  name: {{ .Values.deviceClass.name }}
+  annotations:
+    openebs.io/cas-type: local
+    cas.openebs.io/config: |
+      - name: StorageType
+        value: "device"
+{{- if .Values.deviceClass.fsType }}
+      - name: FSType
+        value: {{ .Values.deviceClass.fsType | quote }}
+{{- end }}
+{{- if .Values.deviceClass.blockDeviceSelectors }}
+      - name: BlockDeviceSelectors
+        data:
+{{ toYaml .Values.deviceClass.blockDeviceSelectors | indent 10 }}
+{{- end }}
+{{- if .Values.deviceClass.nodeAffinityLabels }}
+      - name: NodeAffinityLabels
+        list:
+{{ toYaml .Values.deviceClass.nodeAffinityLabels | indent 10 }}
+{{- end }}
+{{- if .Values.deviceClass.isDefaultClass }}
+    storageclass.kubernetes.io/is-default-class: "true"
+{{- end }}
+provisioner: openebs.io/local
+volumeBindingMode: WaitForFirstConsumer
+reclaimPolicy: {{ .Values.deviceClass.reclaimPolicy }}
+{{- end }}
\ No newline at end of file
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/hostpath-class.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/hostpath-class.yaml
new file mode 100644
index 000000000..6dd49d996
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/hostpath-class.yaml
@@ -0,0 +1,40 @@
+{{- if .Values.hostpathClass.enabled }}
+apiVersion: storage.k8s.io/v1
+kind: StorageClass
+metadata:
+  name: {{ tpl (.Values.hostpathClass.name) .}}
+  annotations:
+    openebs.io/cas-type: local
+    cas.openebs.io/config: |
+      - name: StorageType
+        value: "hostpath"
+{{- if or .Values.localpv.basePath .Values.hostpathClass.basePath }}
+      - name: BasePath
+        value: {{ tpl (.Values.hostpathClass.basePath | default .Values.localpv.basePath | quote) . }}
+{{- end }}
+{{- if .Values.hostpathClass.nodeAffinityLabels }}
+      - name: NodeAffinityLabels
+        list:
+{{ toYaml .Values.hostpathClass.nodeAffinityLabels | indent 10 }}
+{{- end }}
+{{- if .Values.hostpathClass.xfsQuota.enabled }}
+      - name: XFSQuota
+        enabled: "{{ .Values.hostpathClass.xfsQuota.enabled }}"
+        data:
+          softLimitGrace: "{{ .Values.hostpathClass.xfsQuota.softLimitGrace }}"
+          hardLimitGrace: "{{ .Values.hostpathClass.xfsQuota.hardLimitGrace }}"
+{{- end }}
+{{- if .Values.hostpathClass.ext4Quota.enabled }}
+      - name: EXT4Quota
+        enabled: "{{ .Values.hostpathClass.ext4Quota.enabled }}"
+        data:
+          softLimitGrace: "{{ .Values.hostpathClass.ext4Quota.softLimitGrace }}"
+          hardLimitGrace: "{{ .Values.hostpathClass.ext4Quota.hardLimitGrace }}"
+{{- end }}
+{{- if .Values.hostpathClass.isDefaultClass }}
+    storageclass.kubernetes.io/is-default-class: "true"
+{{- end }}
+provisioner: openebs.io/local
+volumeBindingMode: WaitForFirstConsumer
+reclaimPolicy: {{ .Values.hostpathClass.reclaimPolicy }}
+{{- end }}
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/psp.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/psp.yaml
new file mode 100644
index 000000000..ec64aad40
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/psp.yaml
@@ -0,0 +1,30 @@
+{{- if .Values.rbac.pspEnabled }}
+apiVersion: policy/v1beta1
+kind: PodSecurityPolicy
+metadata:
+  name: {{ template "localpv.fullname" . }}-psp
+  {{- with .Values.localpv.annotations }}
+  annotations: {{ toYaml . | nindent 4 }}
+  {{- end }}
+  labels:
+    {{- include "localpv.labels" . | nindent 4 }}
+spec:
+  privileged: {{ .Values.localpv.privileged }}
+  allowPrivilegeEscalation: true
+  allowedCapabilities: ['*']
+  volumes: ['*']
+  hostNetwork: true
+  hostPorts:
+  - min: 0
+    max: 65535
+  hostIPC: true
+  hostPID: true
+  runAsUser:
+    rule: 'RunAsAny'
+  seLinux:
+    rule: 'RunAsAny'
+  supplementalGroups:
+    rule: 'RunAsAny'
+  fsGroup:
+    rule: 'RunAsAny'
+{{- end }}
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/rbac.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/rbac.yaml
new file mode 100644
index 000000000..04cd5409c
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/templates/rbac.yaml
@@ -0,0 +1,99 @@
+{{- if .Values.serviceAccount.create -}}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: {{ include "localpv.serviceAccountName" . }}
+  labels:
+    {{- include "localpv.labels" . | nindent 4 }}
+  {{- with .Values.serviceAccount.annotations }}
+  annotations:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+{{- end }}
+{{- if .Values.rbac.create }}
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: {{ template "localpv.fullname" . }}
+  {{- with .Values.localpv.annotations }}
+  annotations: {{ toYaml . | nindent 4 }}
+  {{- end }}
+  labels:
+    {{- include "localpv.labels" . | nindent 4 }}
+rules:
+- apiGroups: ["*"]
+  resources: ["nodes"]
+  verbs: ["get", "list", "watch"]
+- apiGroups: ["*"]
+  resources: ["namespaces", "pods", "events", "endpoints"]
+  verbs: ["*"]
+- apiGroups: ["*"]
+  resources: ["resourcequotas", "limitranges"]
+  verbs: ["list", "watch"]
+- apiGroups: ["*"]
+  resources: ["storageclasses", "persistentvolumeclaims", "persistentvolumes"]
+  verbs: ["*"]
+- apiGroups: ["apiextensions.k8s.io"]
+  resources: ["customresourcedefinitions"]
+  verbs: [ "get", "list", "create", "update", "delete", "patch"]
+- apiGroups: ["openebs.io"]
+  resources: [ "*"]
+  verbs: ["*" ]
+- nonResourceURLs: ["/metrics"]
+  verbs: ["get"]
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: {{ template "localpv.fullname" . }}
+  {{- with .Values.localpv.annotations }}
+  annotations: {{ toYaml . | nindent 4 }}
+  {{- end }}
+  labels:
+    {{- include "localpv.labels" . | nindent 4 }}
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: {{ template "localpv.fullname" . }}
+subjects:
+- kind: ServiceAccount
+  name: {{ template "localpv.serviceAccountName" . }}
+  namespace: {{ .Release.Namespace }}
+{{- if .Values.rbac.pspEnabled }}
+---
+kind: ClusterRole
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: {{ template "localpv.fullname" . }}-psp
+  {{- with .Values.localpv.annotations }}
+  annotations: {{ toYaml . | nindent 4 }}
+  {{- end }}
+  labels:
+    {{- include "localpv.labels" . | nindent 4 }}
+rules:
+- apiGroups: ['policy']
+  resources: ['podsecuritypolicies']
+  verbs:     ['use']
+  resourceNames:
+  - {{ template "localpv.fullname" . }}-psp
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: {{ template "localpv.fullname" . }}-psp
+  {{- with .Values.localpv.annotations }}
+  annotations: {{ toYaml . | nindent 4 }}
+  {{- end }}
+  labels:
+    {{- include "localpv.labels" . | nindent 4 }}
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: {{ template "localpv.fullname" . }}-psp
+subjects:
+  - kind: ServiceAccount
+    name: {{ template "localpv.serviceAccountName" . }}
+    namespace: {{ $.Release.Namespace }}
+{{- end }}
+{{- end }}
diff --git a/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/values.yaml b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/values.yaml
new file mode 100644
index 000000000..d421232ab
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/charts/localpv-provisioner/values.yaml
@@ -0,0 +1,171 @@
+# Default values for localpv.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+release:
+  version: "3.4.0"
+
+rbac:
+  # rbac.create: `true` if rbac resources should be created
+  create: true
+  # rbac.pspEnabled: `true` if PodSecurityPolicy resources should be created
+  pspEnabled: false
+
+# If false, openebs NDM sub-chart will not be installed
+openebsNDM:
+  enabled: true
+
+localpv:
+  name: localpv-provisioner
+  enabled: true
+  image:
+    # Make sure that registry name end with a '/'.
+    # For example : quay.io/ is a correct value here and quay.io is incorrect
+    registry:
+    repository: openebs/provisioner-localpv
+    tag: 3.4.0
+    pullPolicy: IfNotPresent
+  updateStrategy:
+    type: RollingUpdate
+  # If set to false, containers created by the localpv provisioner will run without extra privileges.
+  privileged: true
+  annotations: {}
+  podAnnotations: {}
+    ## Labels to be added to localpv provisioner deployment pods
+  podLabels:
+    name: openebs-localpv-provisioner
+  healthCheck:
+    initialDelaySeconds: 30
+    periodSeconds: 60
+  replicas: 1
+  enableLeaderElection: true
+  basePath: "/var/openebs/local"
+# This sets the number of times the provisioner should try
+# with a polling interval of 5 seconds, to get the Blockdevice
+# Name from a BlockDeviceClaim, before the BlockDeviceClaim
+# is deleted. E.g. 12 * 5 seconds = 60 seconds timeout
+  waitForBDBindTimeoutRetryCount: "12"
+  resources:
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  #  limits:
+  #    cpu: 100m
+  #    memory: 128Mi
+  #  requests:
+  #    cpu: 100m
+  #    memory: 128Mi
+  nodeSelector: {}
+  tolerations: []
+  affinity: {}
+  securityContext: {}
+
+imagePullSecrets:
+  # - name: img-pull-secret
+
+podSecurityContext: {}
+  # fsGroup: 2000
+
+nameOverride: ""
+fullnameOverride: ""
+
+serviceAccount:
+  # Specifies whether a service account should be created
+  create: true
+  # Annotations to add to the service account
+  annotations: {}
+  # The name of the service account to use.
+  # If not set and create is true, a name is generated using the fullname template
+  name:
+
+deviceClass:
+  # Name of default device StorageClass.
+  name: openebs-device
+  # If true, enables creation of the openebs-device StorageClass
+  enabled: true
+  # Available reclaim policies: Delete/Retain, defaults: Delete.
+  reclaimPolicy: Delete
+  # If true, sets the openebs-device StorageClass as the default StorageClass
+  isDefaultClass: false
+  # Custom node affinity label(s) for example "openebs.io/node-affinity-value"
+  # that will be used instead of hostnames
+  # This helps in cases where the hostname changes when the node is removed and
+  # added back with the disks still intact.
+  # Example:
+  #          nodeAffinityLabels:
+  #            - "openebs.io/node-affinity-key-1"
+  #            - "openebs.io/node-affinity-key-2"
+  nodeAffinityLabels: []
+  # Sets the filesystem to be written to the blockdevice before
+  # mounting (filesystem volumes)
+  # This is only usable if the selected BlockDevice does not already
+  # have a filesystem
+  # Valid values: "ext4", "xfs"
+  fsType: "ext4"
+  # Label block devices in the cluster that you would like the openEBS localPV
+  # Provisioner to pick up those specific block devices available on the node.
+  # Set the label key and value as shown in the example below.
+  #
+  # To read more: https://github.com/openebs/dynamic-localpv-provisioner/blob/develop/docs/tutorials/device/blockdeviceselectors.md
+  #
+  # Example:
+  #          blockDeviceSelectors:
+  #            ndm.io/driveType: "SSD"
+  #            ndm.io/fsType: "none"
+  blockDeviceSelectors: {}
+
+hostpathClass:
+  # Name of the default hostpath StorageClass
+  name: openebs-hostpath
+  # If true, enables creation of the openebs-hostpath StorageClass
+  enabled: true
+  # Available reclaim policies: Delete/Retain, defaults: Delete.
+  reclaimPolicy: Delete
+  # If true, sets the openebs-hostpath StorageClass as the default StorageClass
+  isDefaultClass: false
+  # Path on the host where local volumes of this storage class are mounted under.
+  # NOTE: If not specified, this defaults to the value of localpv.basePath.
+  basePath: ""
+  # Custom node affinity label(s) for example "openebs.io/node-affinity-value"
+  # that will be used instead of hostnames
+  # This helps in cases where the hostname changes when the node is removed and
+  # added back with the disks still intact.
+  # Example:
+  #          nodeAffinityLabels:
+  #            - "openebs.io/node-affinity-key-1"
+  #            - "openebs.io/node-affinity-key-2"
+  nodeAffinityLabels: []
+  # Prerequisite: XFS Quota requires an XFS filesystem mounted with
+  # the 'pquota' or 'prjquota' mount option.
+  xfsQuota:
+    # If true, enables XFS project quota
+    enabled: false
+    # Detailed configuration options for XFS project quota.
+    # If XFS Quota is enabled with the default values, the usage limit
+    # is set at the storage capacity specified in the PVC.
+    softLimitGrace: "0%"
+    hardLimitGrace: "0%"
+  # Prerequisite: EXT4 Quota requires an EXT4 filesystem mounted with
+  # the 'prjquota' mount option.
+  ext4Quota:
+    # If true, enables XFS project quota
+    enabled: false
+    # Detailed configuration options for EXT4 project quota.
+    # If EXT4 Quota is enabled with the default values, the usage limit
+    # is set at the storage capacity specified in the PVC.
+    softLimitGrace: "0%"
+    hardLimitGrace: "0%"
+
+helperPod:
+  image:
+    registry: ""
+    repository: openebs/linux-utils
+    pullPolicy: IfNotPresent
+    # Overrides the image tag whose default is the chart appVersion.
+    tag: 3.4.0
+
+analytics:
+  enabled: true
+  # Specify in hours the duration after which a ping event needs to be sent.
+  pingInterval: "24h"
diff --git a/charts/openebs/openebs/charts/mayastor/doc.yaml b/charts/openebs/openebs/charts/mayastor/doc.yaml
index d1983150e..b161af4e8 100644
--- a/charts/openebs/openebs/charts/mayastor/doc.yaml
+++ b/charts/openebs/openebs/charts/mayastor/doc.yaml
@@ -8,7 +8,7 @@ repository:
   name: mayastor
 chart:
   name: mayastor
-  version: 2.3.0
+  version: 2.4.0
   values: "-- generate from values file --"
   valuesExample: "-- generate from values file --"
 prerequisites:
diff --git a/charts/openebs/openebs/charts/mayastor/templates/etcd/storage/localpv-storageclass.yaml b/charts/openebs/openebs/charts/mayastor/templates/etcd/storage/localpv-storageclass.yaml
new file mode 100644
index 000000000..0f1614819
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/templates/etcd/storage/localpv-storageclass.yaml
@@ -0,0 +1,16 @@
+{{ if and (index .Values "localpv-provisioner" "enabled") .Values.etcd.persistence.enabled }}
+apiVersion: storage.k8s.io/v1
+kind: StorageClass
+metadata:
+  annotations:
+    cas.openebs.io/config: |
+      - name: StorageType
+        value: "hostpath"
+      - name: BasePath
+        value: {{ tpl (.Values.etcd.localpvScConfig.basePath | quote) . }}
+    openebs.io/cas-type: local
+  name: {{ (tpl (.Values.etcd.localpvScConfig.name) .) | required (print "StorageClass name for etcd localpv storage cannot be empty") }}
+provisioner: openebs.io/local
+reclaimPolicy: {{ .Values.etcd.localpvScConfig.reclaimPolicy }}
+volumeBindingMode: {{ .Values.etcd.localpvScConfig.volumeBindingMode }}
+{{ end }}
diff --git a/charts/openebs/openebs/charts/mayastor/templates/loki-stack/storage/localpv-storageclass.yaml b/charts/openebs/openebs/charts/mayastor/templates/loki-stack/storage/localpv-storageclass.yaml
new file mode 100644
index 000000000..57c457b6d
--- /dev/null
+++ b/charts/openebs/openebs/charts/mayastor/templates/loki-stack/storage/localpv-storageclass.yaml
@@ -0,0 +1,16 @@
+{{ if and (index .Values "localpv-provisioner" "enabled") (index .Values "loki-stack" "loki" "persistence" "enabled") (index .Values "loki-stack" "enabled") }}
+apiVersion: storage.k8s.io/v1
+kind: StorageClass
+metadata:
+  annotations:
+    cas.openebs.io/config: |
+      - name: StorageType
+        value: "hostpath"
+      - name: BasePath
+        value: {{ tpl (( index .Values "loki-stack" "localpvScConfig" "basePath" ) | quote ) . }}
+    openebs.io/cas-type: local
+  name: {{ (tpl (index .Values "loki-stack" "localpvScConfig" "name") .) | required (print "StorageClass name for loki localpv storage cannot be empty") }}
+provisioner: openebs.io/local
+reclaimPolicy: {{ (index .Values "loki-stack" "localpvScConfig" "reclaimPolicy") }}
+volumeBindingMode: {{ (index .Values "loki-stack" "localpvScConfig" "volumeBindingMode") }}
+{{ end }}
diff --git a/charts/openebs/openebs/charts/mayastor/templates/loki-stack/storage/localpv.yaml b/charts/openebs/openebs/charts/mayastor/templates/loki-stack/storage/localpv.yaml
index 4b5ac35a8..5a672afb3 100644
--- a/charts/openebs/openebs/charts/mayastor/templates/loki-stack/storage/localpv.yaml
+++ b/charts/openebs/openebs/charts/mayastor/templates/loki-stack/storage/localpv.yaml
@@ -1,6 +1,6 @@
 ---
 
-{{ if and (eq ( index .Values "loki-stack" "loki" "persistence" "storageClassName" ) "manual") ( index .Values "loki-stack" "loki" "persistence" "enabled" ) }}
+{{ if and (eq ( index .Values "loki-stack" "loki" "persistence" "storageClassName" ) "manual") ( index .Values "loki-stack" "loki" "persistence" "enabled" ) ( index .Values "loki-stack" "enabled" ) }}
 apiVersion: v1
 kind: PersistentVolume
 metadata:
diff --git a/charts/openebs/openebs/charts/mayastor/templates/mayastor/agents/core/agent-core-deployment.yaml b/charts/openebs/openebs/charts/mayastor/templates/mayastor/agents/core/agent-core-deployment.yaml
index 8f77054da..0dbed16f7 100644
--- a/charts/openebs/openebs/charts/mayastor/templates/mayastor/agents/core/agent-core-deployment.yaml
+++ b/charts/openebs/openebs/charts/mayastor/templates/mayastor/agents/core/agent-core-deployment.yaml
@@ -55,7 +55,8 @@ spec:
             - "--snapshot-commitment={{ .Values.agents.core.capacity.thin.snapshotCommitment }}"
             - "--volume-commitment-initial={{ .Values.agents.core.capacity.thin.volumeCommitmentInitial }}"
             - "--volume-commitment={{ .Values.agents.core.capacity.thin.volumeCommitment }}"{{ if .Values.agents.core.partialRebuildWaitPeriod }}
-            - "--faulted-child-wait-period={{ .Values.agents.core.partialRebuildWaitPeriod }}"{{ end }}
+            - "--faulted-child-wait-period={{ .Values.agents.core.partialRebuildWaitPeriod }}"{{ end }}{{ if .Values.eventing.enabled }}
+            - "--events-url=nats://{{ .Release.Name }}-nats:4222"{{ end }}
           ports:
             - containerPort: 50051
           env:
diff --git a/charts/openebs/openebs/charts/mayastor/templates/mayastor/io/io-engine-daemonset.yaml b/charts/openebs/openebs/charts/mayastor/templates/mayastor/io/io-engine-daemonset.yaml
index f9c3d129c..e005309a2 100644
--- a/charts/openebs/openebs/charts/mayastor/templates/mayastor/io/io-engine-daemonset.yaml
+++ b/charts/openebs/openebs/charts/mayastor/templates/mayastor/io/io-engine-daemonset.yaml
@@ -98,6 +98,7 @@ spec:
         - "-T={{ .Values.io_engine.target.nvmf.iface }}"{{ end }}{{ if .Values.io_engine.envcontext }}
         - "--env-context=--{{ .Values.io_engine.envcontext }}"{{ end }}{{ if .Values.io_engine.reactorFreezeDetection.enabled }}
         - "--reactor-freeze-detection"{{ end }}
+        - "--tgt-crdt={{ .Values.io_engine.target.nvmf.hostCmdRetryDelay.crdt1 }}"
         command:
         - io-engine
         securityContext:
diff --git a/charts/openebs/openebs/charts/mayastor/templates/mayastor/obs/obs-callhome-deployment.yaml b/charts/openebs/openebs/charts/mayastor/templates/mayastor/obs/obs-callhome-deployment.yaml
index b68bd011c..27cfc7a36 100644
--- a/charts/openebs/openebs/charts/mayastor/templates/mayastor/obs/obs-callhome-deployment.yaml
+++ b/charts/openebs/openebs/charts/mayastor/templates/mayastor/obs/obs-callhome-deployment.yaml
@@ -38,7 +38,11 @@ spec:
           image: "{{ .Values.image.registry }}/{{ .Values.image.repo }}/{{ .Chart.Name }}-obs-callhome:{{ default .Values.image.tag .Values.image.repoTags.extensions }}"
           args:
             - "-e http://{{ .Release.Name }}-api-rest:8081"
-            - "-n {{ .Release.Namespace }}"
+            - "-n {{ .Release.Namespace }}"{{ if .Values.eventing.enabled }}
+            - "--aggregator-url=http://{{ .Release.Name }}-obs-callhome-stats:9090/stats"{{ end }}
+            {{ if .Values.obs.callhome.sendReport }}
+            - "--send-report"
+            {{ end }}
           env:
             - name: RUST_LOG
               value: {{ .Values.obs.callhome.logLevel }}
@@ -50,7 +54,7 @@ spec:
             requests:
               cpu: {{ .Values.obs.callhome.resources.requests.cpu | quote }}
               memory: {{ .Values.obs.callhome.resources.requests.memory | quote }}
-        {{- if .Values.obs.callhome.enabled }}
+        {{- if .Values.eventing.enabled }}
         - name: obs-callhome-stats
           image: "{{ .Values.image.registry }}/{{ .Values.image.repo }}/{{ .Chart.Name }}-obs-callhome-stats:{{ default .Values.image.tag .Values.image.repoTags.extensions }}"
           args:
diff --git a/charts/openebs/openebs/charts/mayastor/templates/mayastor/rbac/rbac.yaml b/charts/openebs/openebs/charts/mayastor/templates/mayastor/rbac/rbac.yaml
index c7fc5436e..7cbd98bb5 100644
--- a/charts/openebs/openebs/charts/mayastor/templates/mayastor/rbac/rbac.yaml
+++ b/charts/openebs/openebs/charts/mayastor/templates/mayastor/rbac/rbac.yaml
@@ -16,10 +16,15 @@ metadata:
     {{ include "label_prefix" . }}/release: {{ .Release.Name }}
     {{ include "label_prefix" . }}/version: {{ .Chart.Version }}
 rules:
-  # must create mayastor crd if it doesn't exist
+  # must create mayastor crd if it doesn't exist, replace if exist,
+  # merge schema to existing CRD.
 - apiGroups: ["apiextensions.k8s.io"]
   resources: ["customresourcedefinitions"]
-  verbs: ["create", "get", "update", "list"]
+  verbs: ["create", "get", "update", "list", "patch", "replace"]
+  # must update stored_version in status to include new schema only.
+- apiGroups: ["apiextensions.k8s.io"]
+  resources: ["customresourcedefinitions/status"]
+  verbs: ["get", "update", "patch"]
   # must read mayastorpools info. This is needed to handle upgrades from v1.
 - apiGroups: [ "openebs.io" ]
   resources: [ "mayastorpools" ]
diff --git a/charts/openebs/openebs/charts/mayastor/values.yaml b/charts/openebs/openebs/charts/mayastor/values.yaml
index feb2598f4..6ff190fa2 100644
--- a/charts/openebs/openebs/charts/mayastor/values.yaml
+++ b/charts/openebs/openebs/charts/mayastor/values.yaml
@@ -4,7 +4,7 @@ image:
   # -- Image registry's namespace
   repo: openebs
   # -- Release tag for our images
-  tag: v2.3.0
+  tag: v2.4.0
   repoTags:
     # Note: Below image tag configuration is optional and typically should never be
     #       used. Setting specific image tags for the different repositories proves useful
@@ -265,15 +265,15 @@ csi:
     # -- imagePullPolicy for all CSI Sidecar images
     pullPolicy: IfNotPresent
     # -- csi-provisioner image release tag
-    provisionerTag: v2.2.1
+    provisionerTag: v3.5.0
     # -- csi-attacher image release tag
-    attacherTag: v3.2.1
+    attacherTag: v4.3.0
     # -- csi-snapshotter image release tag
     snapshotterTag: v6.2.1
     # -- csi-snapshot-controller image release tag
     snapshotControllerTag: v6.2.1
     # -- csi-node-driver-registrar image release tag
-    registrarTag: v2.1.0
+    registrarTag: v2.8.0
 
   controller:
     # -- Log level for the csi controller
@@ -337,6 +337,11 @@ io_engine:
       iface: ""
       # -- Reservations Persist Through Power Loss State
       ptpl: true
+      # NVMF target Command Retry Delay for volume target initiators
+      hostCmdRetryDelay:
+        # A command retry delay in seconds. A value of 0 means no delay, host may retry immediately
+        crdt1: 30
+
   # -- Pass additional arguments to the Environment Abstraction Layer.
   # Example: --set {product}.envcontext=iova-mode=pa
   envcontext: ""
@@ -374,6 +379,16 @@ io_engine:
   priorityClassName: ""
 
 etcd:
+  # Configuration for etcd's localpv hostpath storage class.
+  localpvScConfig:
+    # Name of etcd's localpv hostpath storage class.
+    name: "mayastor-etcd-localpv"
+    # -- Host path where local etcd data is stored in.
+    basePath: "/var/local/localpv-hostpath/{{ .Release.Name }}/etcd"
+    # -- ReclaimPolicy of etcd's localpv hostpath storage class.
+    reclaimPolicy: Delete
+    # -- VolumeBindingMode of etcd's localpv hostpath storage class.
+    volumeBindingMode: WaitForFirstConsumer
   # Pod labels; okay to remove the openebs logging label if required
   podLabels:
     app: etcd
@@ -394,10 +409,10 @@ etcd:
   persistence:
     # -- If true, use a Persistent Volume Claim. If false, use emptyDir.
     enabled: true
-    # -- Will define which storageClass to use in etcd's StatefulSets
-    # a `manual` storageClass will provision a hostpath PV on the same node
-    # an empty storageClass will use the default StorageClass on the cluster
-    storageClass: ""
+    # -- Will define which storageClass to use in etcd's StatefulSets. Options:
+    # <p> - `"manual"` - Will provision a hostpath PV on the same node. <br>
+    # - `""` (empty) - Will use the default StorageClass on the cluster. </p>
+    storageClass: "mayastor-etcd-localpv"
     # -- Volume size
     size: 2Gi
     # -- PVC's reclaimPolicy
@@ -464,6 +479,16 @@ etcd:
 loki-stack:
   # -- Enable loki log collection for our components
   enabled: true
+  # Configuration for loki's localpv hostpath storage class.
+  localpvScConfig:
+    # Name of loki's localpv hostpath storage class.
+    name: "mayastor-loki-localpv"
+    # -- Host path where local etcd data is stored in.
+    basePath: "/var/local/localpv-hostpath/{{ .Release.Name }}/loki"
+    # -- ReclaimPolicy of loki's localpv hostpath storage class.
+    reclaimPolicy: Delete
+    # -- VolumeBindingMode of loki's localpv hostpath storage class.
+    volumeBindingMode: WaitForFirstConsumer
   loki:
     rbac:
       # -- Create rbac roles for loki
@@ -475,9 +500,10 @@ loki-stack:
     persistence:
       # -- Enable persistence storage for the logs
       enabled: true
-      # -- StorageClass for Loki's centralised log storage
-      # empty storageClass implies cluster default storageClass & `manual` creates a static hostpath PV
-      storageClassName: ""
+      # -- StorageClass for Loki's centralised log storage. Options:
+      # <p> - `"manual"` - Will provision a hostpath PV on the same node. <br>
+      # - `""` (empty) - Will use the default StorageClass on the cluster. </p>
+      storageClassName: "mayastor-loki-localpv"
       # -- PVC's ReclaimPolicy, can be Delete or Retain
       reclaimPolicy: "Delete"
       # -- Size of Loki's persistence storage
@@ -594,9 +620,8 @@ loki-stack:
               target_label: __path__
 
 # Eventing which enables or disables eventing-related components.
-# This feature is in progress and will be available from next release.
 eventing:
-  enabled: false
+  enabled: true
 
 # Configuration for the nats message-bus. This is an eventing component, and is enabled when
 # 'eventing.enabled' is set to 'true'.
@@ -628,6 +653,7 @@ obs:
     enabled: true
     # -- Log level for callhome
     logLevel: "info"
+    sendReport: true
     resources:
       limits:
         # -- Cpu limits for callhome
@@ -667,3 +693,15 @@ obs:
         http: 90011
         # NodePort associated with https port
         https: 90010
+
+localpv-provisioner:
+  # -- Enables the openebs dynamic-localpv provisioner. If disabled, modify etcd and loki-stack storage class accordingly.
+  enabled: true
+  # Enable/disable the openebs NDM sub-chart. It's recommended to keep this disabled.
+  openebsNDM:
+    enabled: false
+  # Enable/disable the creation of the openebs-device StorageClass. It's recommended to keep this disabled.
+  deviceClass:
+    enabled: false
+  hostpathClass:
+    enabled: false
diff --git a/charts/openebs/openebs/charts/zfs-localpv/Chart.yaml b/charts/openebs/openebs/charts/zfs-localpv/Chart.yaml
index 47b3b08c5..c3e843d25 100644
--- a/charts/openebs/openebs/charts/zfs-localpv/Chart.yaml
+++ b/charts/openebs/openebs/charts/zfs-localpv/Chart.yaml
@@ -21,4 +21,4 @@ maintainers:
 name: zfs-localpv
 sources:
 - https://github.com/openebs/zfs-localpv
-version: 2.3.0
+version: 2.3.1
diff --git a/charts/openebs/openebs/charts/zfs-localpv/templates/zfs-contoller.yaml b/charts/openebs/openebs/charts/zfs-localpv/templates/zfs-contoller.yaml
index 19b922630..1be7d2aab 100644
--- a/charts/openebs/openebs/charts/zfs-localpv/templates/zfs-contoller.yaml
+++ b/charts/openebs/openebs/charts/zfs-localpv/templates/zfs-contoller.yaml
@@ -2,6 +2,7 @@ apiVersion: apps/v1
 kind: StatefulSet
 metadata:
   name: {{ template "zfslocalpv.fullname" . }}-controller
+  namespace: {{ .Release.Namespace }}
   {{- with .Values.zfsController.annotations }}
   annotations: {{ toYaml . | nindent 4 }}
   {{- end }}
diff --git a/charts/openebs/openebs/charts/zfs-localpv/templates/zfs-node.yaml b/charts/openebs/openebs/charts/zfs-localpv/templates/zfs-node.yaml
index dd09af7c8..58762c8b7 100644
--- a/charts/openebs/openebs/charts/zfs-localpv/templates/zfs-node.yaml
+++ b/charts/openebs/openebs/charts/zfs-localpv/templates/zfs-node.yaml
@@ -2,6 +2,7 @@ kind: DaemonSet
 apiVersion: apps/v1
 metadata:
   name: {{ template "zfslocalpv.fullname" . }}-node
+  namespace: {{ .Release.Namespace }}
   {{- with .Values.zfsNode.annotations }}
   annotations: {{ toYaml . | nindent 4 }}
   {{- end }}
diff --git a/charts/openebs/openebs/charts/zfs-localpv/values.yaml b/charts/openebs/openebs/charts/zfs-localpv/values.yaml
index 3c071d568..ae0e21dfe 100644
--- a/charts/openebs/openebs/charts/zfs-localpv/values.yaml
+++ b/charts/openebs/openebs/charts/zfs-localpv/values.yaml
@@ -2,7 +2,7 @@
 # This is a YAML-formatted file.
 # Declare variables to be passed into your templates.
 release:
-  version: "2.3.0"
+  version: "2.3.1"
 
 imagePullSecrets:
 # - name: "image-pull-secret"
diff --git a/charts/openebs/openebs/values.yaml b/charts/openebs/openebs/values.yaml
index a7fc1e937..a5afbf887 100644
--- a/charts/openebs/openebs/values.yaml
+++ b/charts/openebs/openebs/values.yaml
@@ -18,7 +18,7 @@ imagePullSecrets: []
 
 release:
   # "openebs.io/version" label for control plane components
-  version: "3.8.0"
+  version: "3.9.0"
 
 # Legacy components will be installed if it is enabled.
 # Legacy components are - admission-server, maya api-server, snapshot-operator
@@ -404,7 +404,7 @@ mayastor:
 
   # Sample configuration, if you want to configure mayastor with custom values.
   # This is a small part of the full configuration. Full configuration available
-  # here - https://github.com/openebs/mayastor-extensions/blob/v2.3.0/chart/values.yaml
+  # here - https://github.com/openebs/mayastor-extensions/blob/v2.4.0/chart/values.yaml
 
   image:
     # -- Image registry to pull Mayastor product images
@@ -412,7 +412,7 @@ mayastor:
     # -- Image registry's namespace
     repo: openebs
     # -- Release tag for Mayastor images
-    tag: v2.3.0
+    tag: v2.4.0
     # -- ImagePullPolicy for Mayastor images
     pullPolicy: IfNotPresent
 
@@ -498,20 +498,34 @@ mayastor:
   #     # -- imagePullPolicy for all CSI Sidecar images
   #     pullPolicy: IfNotPresent
   #     # -- csi-provisioner image release tag
-  #     provisionerTag: v2.2.1
+  #     provisionerTag: v3.5.0
   #     # -- csi-attacher image release tag
-  #     attacherTag: v3.2.1
+  #     attacherTag: v4.3.0
   #     # -- csi-snapshotter image release tag
   #     snapshotterTag: v6.2.1
   #     # -- csi-snapshot-controller image release tag
   #     snapshotControllerTag: v6.2.1
   #     # -- csi-node-driver-registrar image release tag
-  #     registrarTag: v2.1.0
+  #     registrarTag: v2.8.0
 
   #   controller:
   #     # -- Log level for the csi controller
   #     logLevel: info
-
+  #     resources:
+  #       limits:
+  #         # -- Cpu limits for csi controller
+  #         cpu: "32m"
+  #         # -- Memory limits for csi controller
+  #         memory: "128Mi"
+  #       requests:
+  #         # -- Cpu requests for csi controller
+  #         cpu: "16m"
+  #         # -- Memory requests for csi controller
+  #         memory: "64Mi"
+  #     # -- Set tolerations, overrides global
+  #     tolerations: []
+  #     # -- Set PriorityClass, overrides global
+  #     priorityClassName: ""
   #   node:
   #     logLevel: info
   #     topology:
@@ -519,17 +533,47 @@ mayastor:
   #         openebs.io/csi-node: mayastor
   #       # -- Add topology segments to the csi-node daemonset node selector
   #       nodeSelector: false
+  #     resources:
+  #       limits:
+  #         # -- Cpu limits for csi node plugin
+  #         cpu: "100m"
+  #         # -- Memory limits for csi node plugin
+  #         memory: "128Mi"
+  #       requests:
+  #         # -- Cpu requests for csi node plugin
+  #         cpu: "100m"
+  #         # -- Memory requests for csi node plugin
+  #         memory: "64Mi"
+  #     nvme:
+  #       # -- The nvme_core module io timeout in seconds
+  #       io_timeout: "30"
+  #       # -- The ctrl_loss_tmo (controller loss timeout) in seconds
+  #       ctrl_loss_tmo: "1980"
+  #       # Kato (keep alive timeout) in seconds
+  #       keep_alive_tmo: ""
+  #     # -- The kubeletDir directory for the csi-node plugin
   #     kubeletDir: /var/lib/kubelet
+  #     pluginMounthPath: /csi
+  #     socketPath: csi.sock
+  #     # -- Set tolerations, overrides global
+  #     tolerations: []
+  #     # -- Set PriorityClass, overrides global
+  #     priorityClassName: ""
 
   # io_engine:
   #   # -- Log level for the io-engine service
   #   logLevel: info
-  #   # -- Node selectors to designate storage nodes for diskpool creation
-  #   # Note that if multi-arch images support 'kubernetes.io/arch: amd64'
-  #   # should be removed.
-  #   nodeSelector:
-  #     openebs.io/engine: mayastor
-  #     kubernetes.io/arch: amd64
+  #   api: "v1"
+  #   target:
+  #     nvmf:
+  #       # -- NVMF target interface (ip, mac, name or subnet)
+  #       iface: ""
+  #       # -- Reservations Persist Through Power Loss State
+  #       ptpl: true
+  #       # NVMF target Command Retry Delay for volume target initiators
+  #       hostCmdRetryDelay:
+  #         # A command retry delay in seconds. A value of 0 means no delay, host may retry immediately
+  #         crdt1: 30
 
   # etcd:
   #   # Pod labels; okay to remove the openebs logging label if required
@@ -560,6 +604,19 @@ mayastor:
   #     # -- Log level for callhome
   #     logLevel: "info"
 
+  # localpv-provisioner:
+  #   # -- Enables the openebs dynamic-localpv provisioner. If disabled, modify etcd and loki-stack storage class accordingly.
+  #   enabled: true
+  #   # Enable/disable the openebs NDM sub-chart. It's recommended to keep this disabled.
+  #   openebsNDM:
+  #     enabled: false
+  #   # Enable/disable the creation of the openebs-device StorageClass. It's recommended to keep this disabled.
+  #   deviceClass:
+  #     enabled: false
+  #   hostpathClass:
+  #     enabled: false
+
+
 jiva:
   # non csi configuration
   image: "openebs/jiva"
@@ -884,7 +941,7 @@ lvm-localpv:
 #      registry: quay.io/
 #      repository: openebs/lvm-driver
 #      pullPolicy: IfNotPresent
-#      tag: 1.2.0
+#      tag: 1.3.0
 
 # openebs nfs provisioner configuration goes here
 # ref - https://openebs.github.io/dynamic-nfs-provisioner
diff --git a/charts/redpanda/redpanda/Chart.lock b/charts/redpanda/redpanda/Chart.lock
index 78530c3ea..15f7a92b7 100644
--- a/charts/redpanda/redpanda/Chart.lock
+++ b/charts/redpanda/redpanda/Chart.lock
@@ -1,9 +1,9 @@
 dependencies:
 - name: console
   repository: https://charts.redpanda.com
-  version: 0.7.0
+  version: 0.7.1
 - name: connectors
   repository: https://charts.redpanda.com
   version: 0.1.5
-digest: sha256:dd7afd55f6eb7e9b3a91b0e5eeda47138e23c255b32d277ad4cb3a7ad3ec1b1f
-generated: "2023-09-05T08:46:28.289150094Z"
+digest: sha256:71281a2120a0fff2668989c34105d88cb4ad02db7a9affc446775f49746bd12b
+generated: "2023-09-06T16:00:58.008853422Z"
diff --git a/charts/redpanda/redpanda/Chart.yaml b/charts/redpanda/redpanda/Chart.yaml
index 871153a4a..1d80a08f2 100644
--- a/charts/redpanda/redpanda/Chart.yaml
+++ b/charts/redpanda/redpanda/Chart.yaml
@@ -37,4 +37,4 @@ name: redpanda
 sources:
 - https://github.com/redpanda-data/helm-charts
 type: application
-version: 5.3.1
+version: 5.3.3
diff --git a/charts/redpanda/redpanda/charts/console/Chart.yaml b/charts/redpanda/redpanda/charts/console/Chart.yaml
index b04b49c35..dfd1b4975 100644
--- a/charts/redpanda/redpanda/charts/console/Chart.yaml
+++ b/charts/redpanda/redpanda/charts/console/Chart.yaml
@@ -9,7 +9,7 @@ annotations:
     - name: "Helm (>= 3.6.0)"
       url: https://helm.sh/docs/intro/install/
 apiVersion: v2
-appVersion: v2.2.5
+appVersion: v2.3.2
 description: Helm chart to deploy Redpanda Console.
 icon: https://images.ctfassets.net/paqvtpyf8rwu/3cYHw5UzhXCbKuR24GDFGO/73fb682e6157d11c10d5b2b5da1d5af0/skate-stand-panda.svg
 maintainers:
@@ -19,4 +19,4 @@ name: console
 sources:
 - https://github.com/redpanda-data/helm-charts
 type: application
-version: 0.7.0
+version: 0.7.1
diff --git a/charts/redpanda/redpanda/charts/console/values.schema.json b/charts/redpanda/redpanda/charts/console/values.schema.json
index 6ac95f2ac..dcab4b69e 100644
--- a/charts/redpanda/redpanda/charts/console/values.schema.json
+++ b/charts/redpanda/redpanda/charts/console/values.schema.json
@@ -1,303 +1,303 @@
 {
-    "$schema": "http://json-schema.org/schema#",
-    "type": "object",
-    "required": [
-      "image"
-    ],
-    "properties": {
-      "affinity": {
-        "type": "object"
-      },
-      "autoscaling": {
-        "type": "object",
-        "properties": {
-          "enabled": {
-            "type": "boolean"
-          },
-          "maxReplicas": {
-            "type": "integer"
-          },
-          "minReplicas": {
-            "type": "integer"
-          },
-          "targetCPUUtilizationPercentage": {
-            "type": "integer"
-          }
+  "$schema": "http://json-schema.org/schema#",
+  "type": "object",
+  "required": [
+    "image"
+  ],
+  "properties": {
+    "affinity": {
+      "type": "object"
+    },
+    "autoscaling": {
+      "type": "object",
+      "properties": {
+        "enabled": {
+          "type": "boolean"
+        },
+        "maxReplicas": {
+          "type": "integer"
+        },
+        "minReplicas": {
+          "type": "integer"
+        },
+        "targetCPUUtilizationPercentage": {
+          "type": "integer"
         }
-      },
-      "configmap": {
-        "type": "object",
-        "properties": {
-          "create": {
-            "type": "boolean"
-          }
+      }
+    },
+    "configmap": {
+      "type": "object",
+      "properties": {
+        "create": {
+          "type": "boolean"
         }
-      },
-      "console": {
-        "type": "object"
-      },
-      "deployment": {
-        "type": "object",
-        "properties": {
-          "create": {
-            "type": "boolean"
-          }
+      }
+    },
+    "console": {
+      "type": "object"
+    },
+    "deployment": {
+      "type": "object",
+      "properties": {
+        "create": {
+          "type": "boolean"
         }
-      },
-      "extraContainers": {
-        "type": "array"
-      },
-      "extraEnv": {
-        "type": "array"
-      },
-      "extraEnvFrom": {
-        "type": "array"
-      },
-      "extraVolumeMounts": {
-        "type": "array"
-      },
-      "extraVolumes": {
-        "type": "array"
-      },
-      "fullnameOverride": {
-        "type": "string"
-      },
-      "image": {
-        "type": "object",
-        "required": [
-          "repository"
-        ],
-        "properties": {
-          "pullPolicy": {
-            "type": "string"
-          },
-          "registry": {
-            "type": "string"
-          },
-          "repository": {
-            "type": "string",
-            "minLength": 1
-          },
-          "tag": {
-            "type": "string"
-          }
+      }
+    },
+    "extraContainers": {
+      "type": "array"
+    },
+    "extraEnv": {
+      "type": "array"
+    },
+    "extraEnvFrom": {
+      "type": "array"
+    },
+    "extraVolumeMounts": {
+      "type": "array"
+    },
+    "extraVolumes": {
+      "type": "array"
+    },
+    "fullnameOverride": {
+      "type": "string"
+    },
+    "image": {
+      "type": "object",
+      "required": [
+        "repository"
+      ],
+      "properties": {
+        "pullPolicy": {
+          "type": "string"
+        },
+        "registry": {
+          "type": "string"
+        },
+        "repository": {
+          "type": "string",
+          "minLength": 1
+        },
+        "tag": {
+          "type": "string"
         }
-      },
-      "imagePullSecrets": {
-        "type": "array"
-      },
-      "ingress": {
-        "type": "object",
-        "properties": {
-          "annotations": {
-            "type": "object"
-          },
-          "className": {
-            "type": "string"
-          },
-          "enabled": {
-            "type": "boolean"
-          },
-          "hosts": {
-            "type": "array",
-            "items": {
-              "type": "object",
-              "properties": {
-                "host": {
-                  "type": "string"
-                },
-                "paths": {
-                  "type": "array",
-                  "items": {
-                    "type": "object",
-                    "properties": {
-                      "path": {
-                        "type": "string"
-                      },
-                      "pathType": {
-                        "type": "string"
-                      }
+      }
+    },
+    "imagePullSecrets": {
+      "type": "array"
+    },
+    "ingress": {
+      "type": "object",
+      "properties": {
+        "annotations": {
+          "type": "object"
+        },
+        "className": {
+          "type": "string"
+        },
+        "enabled": {
+          "type": "boolean"
+        },
+        "hosts": {
+          "type": "array",
+          "items": {
+            "type": "object",
+            "properties": {
+              "host": {
+                "type": "string"
+              },
+              "paths": {
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "properties": {
+                    "path": {
+                      "type": "string"
+                    },
+                    "pathType": {
+                      "type": "string"
                     }
                   }
                 }
               }
             }
-          },
-          "tls": {
-            "type": "array"
           }
+        },
+        "tls": {
+          "type": "array"
         }
-      },
-      "livenessProbe": {
-        "type": "object",
-        "properties": {
-          "failureThreshold": {
-            "type": "integer"
-          },
-          "initialDelaySeconds": {
-            "type": "integer"
-          },
-          "periodSeconds": {
-            "type": "integer"
-          },
-          "successThreshold": {
-            "type": "integer"
-          },
-          "timeoutSeconds": {
-            "type": "integer"
-          }
+      }
+    },
+    "livenessProbe": {
+      "type": "object",
+      "properties": {
+        "failureThreshold": {
+          "type": "integer"
+        },
+        "initialDelaySeconds": {
+          "type": "integer"
+        },
+        "periodSeconds": {
+          "type": "integer"
+        },
+        "successThreshold": {
+          "type": "integer"
+        },
+        "timeoutSeconds": {
+          "type": "integer"
         }
-      },
-      "nameOverride": {
-        "type": "string"
-      },
-      "nodeSelector": {
-        "type": "object"
-      },
-      "annotations": {
-        "type": "object"
-      },
-      "podAnnotations": {
-        "type": "object"
-      },
-      "podSecurityContext": {
-        "type": "object",
-        "properties": {
-          "fsGroup": {
-            "type": "integer"
-          },
-          "runAsUser": {
-            "type": "integer"
-          }
+      }
+    },
+    "nameOverride": {
+      "type": "string"
+    },
+    "nodeSelector": {
+      "type": "object"
+    },
+    "annotations": {
+      "type": "object"
+    },
+    "podAnnotations": {
+      "type": "object"
+    },
+    "podSecurityContext": {
+      "type": "object",
+      "properties": {
+        "fsGroup": {
+          "type": "integer"
+        },
+        "runAsUser": {
+          "type": "integer"
         }
-      },
-      "readinessProbe": {
-        "type": "object",
-        "properties": {
-          "failureThreshold": {
-            "type": "integer"
-          },
-          "initialDelaySeconds": {
-            "type": "integer"
-          },
-          "periodSeconds": {
-            "type": "integer"
-          },
-          "successThreshold": {
-            "type": "integer"
-          },
-          "timeoutSeconds": {
-            "type": "integer"
-          }
+      }
+    },
+    "readinessProbe": {
+      "type": "object",
+      "properties": {
+        "failureThreshold": {
+          "type": "integer"
+        },
+        "initialDelaySeconds": {
+          "type": "integer"
+        },
+        "periodSeconds": {
+          "type": "integer"
+        },
+        "successThreshold": {
+          "type": "integer"
+        },
+        "timeoutSeconds": {
+          "type": "integer"
         }
-      },
-      "replicaCount": {
-        "type": "integer"
-      },
-      "resources": {
-        "type": "object"
-      },
-      "secret": {
-        "type": "object",
-        "properties": {
-          "create": {
-            "type": "boolean"
-          },
-          "enterprise": {
-            "type": "object"
-          },
-          "kafka": {
-            "type": "object"
-          },
-          "login": {
-            "type": "object",
-            "properties": {
-              "jwtSecret": {
-                "type": "string"
-              },
-              "github": {
-                "type": "object"
-              },
-              "google": {
-                "type": "object"
-              },
-              "oidc": {
-                "type": "object"
-              },
-              "okta": {
-                "type": "object"
-              }
-            }
-          },
-          "redpanda": {
-            "type": "object",
-            "properties": {
-              "adminApi": {
-                "type": "object"
-              }
+      }
+    },
+    "replicaCount": {
+      "type": "integer"
+    },
+    "resources": {
+      "type": "object"
+    },
+    "secret": {
+      "type": "object",
+      "properties": {
+        "create": {
+          "type": "boolean"
+        },
+        "enterprise": {
+          "type": "object"
+        },
+        "kafka": {
+          "type": "object"
+        },
+        "login": {
+          "type": "object",
+          "properties": {
+            "jwtSecret": {
+              "type": "string"
+            },
+            "github": {
+              "type": "object"
+            },
+            "google": {
+              "type": "object"
+            },
+            "oidc": {
+              "type": "object"
+            },
+            "okta": {
+              "type": "object"
             }
           }
-        }
-      },
-      "secretMounts": {
-        "type": "array"
-      },
-      "securityContext": {
-        "type": "object",
-        "properties": {
-          "runAsNonRoot": {
-            "type": "boolean"
-          }
-        }
-      },
-      "service": {
-        "type": "object",
-        "properties": {
-          "annotations": {
-            "type": "object"
-          },
-          "port": {
-            "type": "integer"
-          },
-          "targetPort": {
-            "anyOf": [
-              {
-                "type": "integer"
-              },
-              {
-                "type": "null"
-              }
-            ]
-          },
-          "type": {
-            "type": "string"
-          }
-        }
-      },
-      "serviceAccount": {
-        "type": "object",
-        "properties": {
-          "annotations": {
-            "type": "object"
-          },
-          "create": {
-            "type": "boolean"
-          },
-          "name": {
-            "type": "string"
-          }
-        }
-      },
-      "tolerations": {
-        "type": "array"
-      },
-      "initContainers": {
-        "type": "object",
-        "properties": {
-          "extraInitContainers": {
-            "type": "string"
+        },
+        "redpanda": {
+          "type": "object",
+          "properties": {
+            "adminApi": {
+              "type": "object"
+            }
           }
         }
       }
+    },
+    "secretMounts": {
+      "type": "array"
+    },
+    "securityContext": {
+      "type": "object",
+      "properties": {
+        "runAsNonRoot": {
+          "type": "boolean"
+        }
+      }
+    },
+    "service": {
+      "type": "object",
+      "properties": {
+        "annotations": {
+          "type": "object"
+        },
+        "port": {
+          "type": "integer"
+        },
+        "targetPort": {
+          "anyOf": [
+            {
+              "type": "integer"
+            },
+            {
+              "type": "null"
+            }
+          ]
+        },
+        "type": {
+          "type": "string"
+        }
+      }
+    },
+    "serviceAccount": {
+      "type": "object",
+      "properties": {
+        "annotations": {
+          "type": "object"
+        },
+        "create": {
+          "type": "boolean"
+        },
+        "name": {
+          "type": "string"
+        }
+      }
+    },
+    "tolerations": {
+      "type": "array"
+    },
+    "initContainers": {
+      "type": "object",
+      "properties": {
+        "extraInitContainers": {
+          "type": "string"
+        }
+      }
     }
+  }
 }
diff --git a/charts/redpanda/redpanda/charts/console/values.yaml b/charts/redpanda/redpanda/charts/console/values.yaml
index 890ff7391..fc53893ec 100644
--- a/charts/redpanda/redpanda/charts/console/values.yaml
+++ b/charts/redpanda/redpanda/charts/console/values.yaml
@@ -163,6 +163,18 @@ extraVolumeMounts: []
 # -- Add additional containers, such as for oauth2-proxy.
 extraContainers: []
 
+# -- Any initContainers defined should be written here
+initContainers:
+  # -- Additional set of init containers
+  extraInitContainers: |-
+#    - name: "test-init-container"
+#      image: "mintel/docker-alpine-bash-curl-jq:latest"
+#      command: [ "/bin/bash", "-c" ]
+#      args:
+#        - |
+#          set -xe
+#          echo "Hello World!"
+
 # -- SecretMounts is an abstraction to make a Secret available in the container's filesystem.
 # Under the hood it creates a volume and a volume mount for the Redpanda Console container.
 secretMounts: []
@@ -240,16 +252,6 @@ readinessProbe:
   successThreshold: 1
   failureThreshold: 3
 
-initContainers:
-  extraInitContainers: |-
-#    - name: "test-init-container"
-#      image: "mintel/docker-alpine-bash-curl-jq:latest"
-#      command: [ "/bin/bash", "-c" ]
-#      args:
-#        - |
-#          set -xe
-#          echo "Hello World!"
-
 configmap:
   create: true
 deployment:
diff --git a/charts/redpanda/redpanda/templates/secrets.yaml b/charts/redpanda/redpanda/templates/secrets.yaml
index b25656343..eb2fc034c 100644
--- a/charts/redpanda/redpanda/templates/secrets.yaml
+++ b/charts/redpanda/redpanda/templates/secrets.yaml
@@ -14,6 +14,12 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 */}}
+{{- $values := .Values -}}
+{{- $internalAdvertiseAddress := printf "%s.%s" "${SERVICE_NAME}" (include "redpanda.internal.domain" .) -}}
+{{- $externalAdvertiseAddress := printf "${SERVICE_NAME}" -}}
+{{- if (tpl ($values.external.domain | default "") $) -}}
+  {{- $externalAdvertiseAddress = printf "${SERVICE_NAME}.%s" (tpl $values.external.domain $) -}}
+{{- end -}}
 ---
 apiVersion: v1
 kind: Secret
@@ -257,3 +263,91 @@ stringData:
     sleep infinity
   {{- end }}
 {{- end }}
+---
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ (include "redpanda.name" .) | trunc 51 }}-configurator
+  namespace: {{ .Release.Namespace | quote }}
+  labels:
+  {{- with include "full.labels" . }}
+  {{- . | nindent 4 }}
+  {{- end }}
+type: Opaque
+stringData:
+  configurator.sh: |-
+    set -xe
+    SERVICE_NAME=$1
+    KUBERNETES_NODE_NAME=$2
+    POD_ORDINAL=${SERVICE_NAME##*-}
+    BROKER_INDEX=`expr $POD_ORDINAL + 1`
+{{- range $listenerName := (list "kafka" "http") }}
+{{- $listenerVals := get $values.listeners $listenerName }}
+  {{- $ordList := list }}
+  {{- /* do this for each pod in the statefulset */}}
+  {{- range $replicaIndex := until ($values.statefulset.replicas | int) }}
+    {{- /* build a list of listeners */}}
+    {{- $listenerList := list (toJson (dict "name" "internal" "address" $internalAdvertiseAddress "port" $listenerVals.port)) }}
+    {{- if $listenerVals.external }}
+      {{- /* add each external listener */}}
+      {{- range $externalName, $externalVals := $listenerVals.external }}
+        {{- $tmplVals := dict "listenerVals" $listenerVals "externalVals" $externalVals "externalName" $externalName "externalAdvertiseAddress" $externalAdvertiseAddress "values" $values "replicaIndex" $replicaIndex }}
+        {{- $port := int (include "advertised-port" $tmplVals) }}
+        {{- $host := tpl (include "advertised-host" (mustMerge $tmplVals (dict "port" $port)) ) $ }}
+        {{- $listenerList = mustAppend $listenerList $host }}
+      {{- end }}
+    {{- end }}
+    {{- /*
+    This is making a semicolon list of listeners, one list for each pod.
+    We can safely remove all the spaces as there cannot be a space in a name, address, or port, and this fixes
+    a problem where a user can feed in a trailing space on a hostname.
+    */}}
+    {{- $ordList = mustAppend $ordList (nospace (join ";" $listenerList)) }}
+  {{- end }}
+    ADVERTISED_{{ upper $listenerName }}_ADDRESSES={{ quote (join " " $ordList) }}
+{{- end }}
+
+    CONFIG=/etc/redpanda/redpanda.yaml
+    
+    # Setup config files
+    cp /tmp/base-config/redpanda.yaml "${CONFIG}"
+    cp /tmp/base-config/bootstrap.yaml /etc/redpanda/.bootstrap.yaml
+    
+    {{- if not (include "redpanda-atleast-22-3-0" . | fromJson).bool }}
+    # Configure bootstrap
+    ## Not used for Redpanda v22.3.0+
+    rpk --config "${CONFIG}" redpanda config set redpanda.node_id "${POD_ORDINAL}"
+    if [ "${POD_ORDINAL}" = "0" ]; then
+        rpk --config "${CONFIG}" redpanda config set redpanda.seed_servers '[]' --format yaml
+    fi
+    {{- end }}
+    
+    LISTENER_INDEX=1
+    # So the first cut is to give us the listeners for that NODE (deliminated by a ' ' space), 
+    # the second cut just starts us with the first listener since these are deliminated by ';'
+    LISTENER=`echo $ADVERTISED_KAFKA_ADDRESSES | cut -d ' ' -f $BROKER_INDEX | cut -d ';' -f $LISTENER_INDEX`
+    until [ "$LISTENER" == "" ]; do
+        rpk redpanda config --config "$CONFIG" set redpanda.advertised_kafka_api[$(($LISTENER_INDEX-1))] "$LISTENER"
+        let "LISTENER_INDEX+=1"
+        LISTENER=`echo $ADVERTISED_KAFKA_ADDRESSES | cut -d ' ' -f $BROKER_INDEX | cut -d ';' -f $LISTENER_INDEX`
+    done
+    
+    LISTENER_INDEX=1
+    # So the first cut is to give us the listeners for that NODE (deliminated by a ' ' space),  
+    # the second cut just starts us with the first listener since these are deliminated by ';'
+    LISTENER=`echo $ADVERTISED_HTTP_ADDRESSES | cut -d ' ' -f $BROKER_INDEX | cut -d ';' -f $LISTENER_INDEX`
+    until [ "$LISTENER" == "" ]; do
+        rpk redpanda config --config "$CONFIG" set pandaproxy.advertised_pandaproxy_api[$(($LISTENER_INDEX-1))] "$LISTENER"
+        let "LISTENER_INDEX+=1"
+        LISTENER=`echo $ADVERTISED_HTTP_ADDRESSES | cut -d ' ' -f $BROKER_INDEX | cut -d ';' -f $LISTENER_INDEX`
+    done
+    
+    {{- if (include "redpanda-atleast-22-3-0" . | fromJson).bool }}
+      {{- if .Values.rackAwareness.enabled }}
+    # Configure Rack Awareness
+    set +x
+    RACK=$(curl --silent --cacert /run/secrets/kubernetes.io/serviceaccount/ca.crt --fail -H 'Authorization: Bearer '$(cat /run/secrets/kubernetes.io/serviceaccount/token) "https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}/api/v1/nodes/${KUBERNETES_NODE_NAME}?pretty=true" | grep {{ .Values.rackAwareness.nodeAnnotation | quote | squote }} | grep -v '\"key\":' | sed 's/.*": "\([^"]\+\).*/\1/')
+    set -x
+    rpk --config "$CONFIG" redpanda config set redpanda.rack "${RACK}"
+      {{- end }}
+    {{- end }}
diff --git a/charts/redpanda/redpanda/templates/service.loadbalancer.yaml b/charts/redpanda/redpanda/templates/service.loadbalancer.yaml
index 5c622ca2c..5a9eb7456 100644
--- a/charts/redpanda/redpanda/templates/service.loadbalancer.yaml
+++ b/charts/redpanda/redpanda/templates/service.loadbalancer.yaml
@@ -14,7 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 */}}
-{{- if (include "external-loadbalancer-enabled" . | fromJson).bool }}
+{{- if and (include "external-loadbalancer-enabled" . | fromJson).bool (dig "service" "enabled" true .Values.external)}}
   {{- $values := .Values }}
   {{- $root := . }}
   {{- $addresses := dig "addresses" list $values.external }}
diff --git a/charts/redpanda/redpanda/templates/services.nodeport.yaml b/charts/redpanda/redpanda/templates/services.nodeport.yaml
index 544f319f5..f8fe3d93d 100644
--- a/charts/redpanda/redpanda/templates/services.nodeport.yaml
+++ b/charts/redpanda/redpanda/templates/services.nodeport.yaml
@@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */}}
 {{- $values := .Values }}
-{{- if (include "external-nodeport-enabled" . | fromJson).bool }}
+{{- if and (include "external-nodeport-enabled" . | fromJson).bool (dig "service" "enabled" true $values.external) }}
 ---
 apiVersion: v1
 kind: Service
diff --git a/charts/redpanda/redpanda/templates/statefulset.yaml b/charts/redpanda/redpanda/templates/statefulset.yaml
index 8918658fb..314523d35 100644
--- a/charts/redpanda/redpanda/templates/statefulset.yaml
+++ b/charts/redpanda/redpanda/templates/statefulset.yaml
@@ -19,10 +19,6 @@ limitations under the License.
 
 {{- $values := .Values }}
 {{- $internalAdvertiseAddress := printf "%s.%s" "$(SERVICE_NAME)" (include "redpanda.internal.domain" .) -}}
-{{- $externalAdvertiseAddress := printf "$(SERVICE_NAME)" -}}
-{{- if (tpl ($values.external.domain | default "") $) }}
-  {{- $externalAdvertiseAddress = printf "$(SERVICE_NAME).%s" (tpl $values.external.domain $) -}}
-{{- end -}}
 {{- $uid := dig "podSecurityContext" "runAsUser" .Values.statefulset.securityContext.runAsUser .Values.statefulset -}}
 {{- $gid := dig "podSecurityContext" "fsGroup" .Values.statefulset.securityContext.fsGroup .Values.statefulset -}}
 {{- $root := deepCopy . }}
@@ -73,11 +69,9 @@ spec:
         - name: tuning
           image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
           command:
-            - bash
+            - /bin/bash
             - -c
-          args:
-            - |
-              rpk redpanda tune all
+            - rpk redpanda tune all
           securityContext:
             capabilities:
               add: ["SYS_RESOURCE"]
@@ -124,88 +118,21 @@ spec:
 {{- end }}
         - name: {{ (include "redpanda.name" .) | trunc 51 }}-configurator
           image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
-          command: ["/bin/bash", "-c"]
+          command:
+            - /bin/bash
+            - -c
+            - 'trap "exit 0" TERM; exec $CONFIGURATOR_SCRIPT "${SERVICE_NAME}" "${KUBERNETES_NODE_NAME}" & wait $!'
           env:
+            - name: CONFIGURATOR_SCRIPT
+              value: /etc/secrets/configurator/scripts/configurator.sh
             - name: SERVICE_NAME
               valueFrom:
                 fieldRef:
                   fieldPath: metadata.name
-{{- range $listenerName := (list "kafka" "http") }}
-{{- $listenerVals := get $values.listeners $listenerName }}
-  {{- $ordList := list }}
-  {{- /* do this for each pod in the statefulset */}}
-  {{- range $replicaIndex := until ($values.statefulset.replicas | int) }}
-    {{- /* build a list of listeners */}}
-    {{- $listenerList := list (toJson (dict "name" "internal" "address" $internalAdvertiseAddress "port" $listenerVals.port)) }}
-    {{- if $listenerVals.external }}
-        {{- /* add each external listener */}}
-        {{- range $externalName, $externalVals := $listenerVals.external }}
-          {{- $tmplVals := dict "listenerVals" $listenerVals "externalVals" $externalVals "replicaIndex" $replicaIndex "externalName" $externalName "externalAdvertiseAddress" $externalAdvertiseAddress "values" $values }}
-          {{- $port := int (include "advertised-port" $tmplVals) }}
-          {{- $host := tpl (include "advertised-host" (mustMerge $tmplVals (dict "port" $port)) ) $ }}
-          {{- $listenerList = mustAppend $listenerList $host }}
-        {{- end }}
-    {{- end }}
-    {{- /*
-    This is making a semicolon list of listeners, one list for each pod.
-    We can safely remove all the spaces as there cannot be a space in a name, address, or port, and this fixes
-    a problem where a user can feed in a trailing space on a hostname.
-    */}}
-    {{- $ordList = mustAppend $ordList (nospace (join ";" $listenerList)) }}
-  {{- end }}
-            - name: ADVERTISED_{{ upper $listenerName }}_ADDRESSES
-              value: {{ squote (join " " $ordList) }}
-{{- end }}
             - name: KUBERNETES_NODE_NAME
               valueFrom:
                 fieldRef:
                   fieldPath: spec.nodeName
-          args:
-            - |
-              set -xe
-              CONFIG=/etc/redpanda/redpanda.yaml
-              POD_ORDINAL=${SERVICE_NAME##*-}
-
-              # Setup config files
-              cp /tmp/base-config/redpanda.yaml "${CONFIG}"
-              cp /tmp/base-config/bootstrap.yaml /etc/redpanda/.bootstrap.yaml
-
-              {{- if not (include "redpanda-atleast-22-3-0" . | fromJson).bool }}
-              # Configure bootstrap
-              ## Not used for Redpanda v22.3.0+
-              rpk --config "${CONFIG}" redpanda config set redpanda.node_id "${POD_ORDINAL}"
-              if [ "${POD_ORDINAL}" = "0" ]; then
-                rpk --config "${CONFIG}" redpanda config set redpanda.seed_servers '[]' --format yaml
-              fi
-              {{- end }}
-
-              NODE_INDEX=`expr $POD_ORDINAL + 1`
-
-              LISTENER_INDEX=1
-              LISTENER=`echo $ADVERTISED_KAFKA_ADDRESSES | cut -d ' ' -f $NODE_INDEX | cut -d ';' -f $LISTENER_INDEX`
-              until [ "$LISTENER" == "" ]; do
-                rpk redpanda config --config "$CONFIG" set redpanda.advertised_kafka_api[$(($LISTENER_INDEX-1))] "$LISTENER"
-                let "LISTENER_INDEX+=1"
-                LISTENER=`echo $ADVERTISED_KAFKA_ADDRESSES | cut -d ' ' -f $NODE_INDEX | cut -d ';' -f $LISTENER_INDEX`
-              done
-
-              LISTENER_INDEX=1
-              LISTENER=`echo $ADVERTISED_HTTP_ADDRESSES | cut -d ' ' -f $NODE_INDEX | cut -d ';' -f $LISTENER_INDEX`
-              until [ "$LISTENER" == "" ]; do
-                rpk redpanda config --config "$CONFIG" set pandaproxy.advertised_pandaproxy_api[$(($LISTENER_INDEX-1))] "$LISTENER"
-                let "LISTENER_INDEX+=1"
-                LISTENER=`echo $ADVERTISED_HTTP_ADDRESSES | cut -d ' ' -f $NODE_INDEX | cut -d ';' -f $LISTENER_INDEX`
-              done
-
-              {{- if (include "redpanda-atleast-22-3-0" . | fromJson).bool }}
-                {{- if .Values.rackAwareness.enabled }}
-                # Configure Rack Awareness
-                set +x
-                RACK=$(curl --silent --cacert /run/secrets/kubernetes.io/serviceaccount/ca.crt --fail -H 'Authorization: Bearer '$(cat /run/secrets/kubernetes.io/serviceaccount/token) "https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}/api/v1/nodes/${KUBERNETES_NODE_NAME}?pretty=true" | grep {{ .Values.rackAwareness.nodeAnnotation | quote | squote }} | grep -v '\"key\":' | sed 's/.*": "\([^"]\+\).*/\1/')
-                set -x
-                rpk --config "$CONFIG" redpanda config set redpanda.rack "${RACK}"
-                {{- end }}
-              {{- end }}
           securityContext: {{ include "container-security-context" . | nindent 12 }}
           volumeMounts:
 {{- if dig "initContainers" "configurator" "extraVolumeMounts" false .Values.statefulset -}}
@@ -215,6 +142,8 @@ spec:
               mountPath: /tmp/base-config
             - name: config
               mountPath: /etc/redpanda
+            - name: {{ (include "redpanda.name" .) | trunc 51 }}-configurator
+              mountPath: /etc/secrets/configurator/scripts/
         {{- if get .Values.statefulset.initContainers.configurator "resources" }}
           resources: {{- toYaml .Values.statefulset.initContainers.configurator.resources | nindent 12 }}
         {{- end }}
@@ -449,6 +378,11 @@ spec:
             secretName: {{ .Values.auth.sasl.secretRef }}
             optional: false
         {{- end }}
+        - name: {{ (include "redpanda.name" .) | trunc 51 }}-configurator
+          secret:
+            secretName: {{ (include "redpanda.name" .) | trunc 51 }}-configurator
+            optional: false
+            defaultMode: 0o775
         - name: {{ template "redpanda.fullname" . }}-config-watcher
           secret:
             secretName: {{ template "redpanda.fullname" . }}-config-watcher
diff --git a/charts/redpanda/redpanda/values.schema.json b/charts/redpanda/redpanda/values.schema.json
index 14f43484b..800faaab8 100644
--- a/charts/redpanda/redpanda/values.schema.json
+++ b/charts/redpanda/redpanda/values.schema.json
@@ -194,6 +194,14 @@
         "enabled": {
           "type": "boolean"
         },
+        "service": {
+          "type": "object",
+          "properties": {
+            "enabled": {
+              "type": "boolean"
+            }
+          }
+        },
         "type": {
           "type": "string",
           "pattern": "^(LoadBalancer|NodePort)$"
diff --git a/charts/redpanda/redpanda/values.yaml b/charts/redpanda/redpanda/values.yaml
index 93e78328b..07699185f 100644
--- a/charts/redpanda/redpanda/values.yaml
+++ b/charts/redpanda/redpanda/values.yaml
@@ -196,6 +196,12 @@ tls:
 # For details,
 # see the [Networking and Connectivity documentation](https://docs.redpanda.com/docs/manage/kubernetes/networking/networking-and-connectivity/).
 external:
+  # -- Service allows you to manage the creation of an external kubernetes service object
+  service:
+    # -- Enabled if set to false will not create the external service type
+    # You can still set your cluster with external access but not create the supporting service (NodePort/LoadBalander).
+    # Set this to false if you rather manage your own service.
+    enabled: true
   # -- Enable external access for each Service.
   # You can toggle external access for each listener in
   # `listeners.<service name>.external.<listener-name>.enabled`.
diff --git a/charts/speedscale/speedscale-operator/Chart.yaml b/charts/speedscale/speedscale-operator/Chart.yaml
index 23eec1c9b..85e849a45 100644
--- a/charts/speedscale/speedscale-operator/Chart.yaml
+++ b/charts/speedscale/speedscale-operator/Chart.yaml
@@ -4,7 +4,7 @@ annotations:
   catalog.cattle.io/kube-version: '>= 1.17.0-0'
   catalog.cattle.io/release-name: speedscale-operator
 apiVersion: v1
-appVersion: 1.3.335
+appVersion: 1.3.352
 description: Stress test your APIs with real world scenarios.  Collect and replay
   traffic without scripting.
 home: https://speedscale.com
@@ -24,4 +24,4 @@ maintainers:
 - email: support@speedscale.com
   name: Speedscale Support
 name: speedscale-operator
-version: 1.3.29
+version: 1.3.30
diff --git a/charts/speedscale/speedscale-operator/README.md b/charts/speedscale/speedscale-operator/README.md
index 88da453fd..32509a2d4 100644
--- a/charts/speedscale/speedscale-operator/README.md
+++ b/charts/speedscale/speedscale-operator/README.md
@@ -101,10 +101,10 @@ _See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documen
 A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an
 incompatible breaking change needing manual actions.
 
-### Upgrade to 1.3.29
+### Upgrade to 1.3.30
 
 ```bash
-kubectl apply --server-side -f https://raw.githubusercontent.com/speedscale/operator-helm/main/1.3.29/templates/crds/trafficreplays.yaml
+kubectl apply --server-side -f https://raw.githubusercontent.com/speedscale/operator-helm/main/1.3.30/templates/crds/trafficreplays.yaml
 ```
 
 ### Upgrade to 1.1.0
diff --git a/charts/speedscale/speedscale-operator/app-readme.md b/charts/speedscale/speedscale-operator/app-readme.md
index 88da453fd..32509a2d4 100644
--- a/charts/speedscale/speedscale-operator/app-readme.md
+++ b/charts/speedscale/speedscale-operator/app-readme.md
@@ -101,10 +101,10 @@ _See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documen
 A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an
 incompatible breaking change needing manual actions.
 
-### Upgrade to 1.3.29
+### Upgrade to 1.3.30
 
 ```bash
-kubectl apply --server-side -f https://raw.githubusercontent.com/speedscale/operator-helm/main/1.3.29/templates/crds/trafficreplays.yaml
+kubectl apply --server-side -f https://raw.githubusercontent.com/speedscale/operator-helm/main/1.3.30/templates/crds/trafficreplays.yaml
 ```
 
 ### Upgrade to 1.1.0
diff --git a/charts/speedscale/speedscale-operator/values.yaml b/charts/speedscale/speedscale-operator/values.yaml
index c01bd1b68..b6f1ee91d 100644
--- a/charts/speedscale/speedscale-operator/values.yaml
+++ b/charts/speedscale/speedscale-operator/values.yaml
@@ -20,7 +20,7 @@ clusterName: "my-cluster"
 # Speedscale components image settings.
 image:
   registry: gcr.io/speedscale
-  tag: v1.3.335
+  tag: v1.3.352
   pullPolicy: Always
 
 # Log level for Speedscale components.
diff --git a/charts/sysdig/sysdig/CHANGELOG.md b/charts/sysdig/sysdig/CHANGELOG.md
index c3d895474..4fe1f0144 100644
--- a/charts/sysdig/sysdig/CHANGELOG.md
+++ b/charts/sysdig/sysdig/CHANGELOG.md
@@ -10,6 +10,9 @@ Manual edits are supported only below '## Change Log' and should be used
 exclusively to fix incorrect entries and not to add new ones.
 
 ## Change Log
+# v1.16.11
+### New Features
+* **agent,sysdig** [8aff7e6a](https://github.com/sysdiglabs/charts/commit/8aff7e6adcccd7ebbebabff7f7d89e5125fb8f46): use `updatecli` for agent version bumps during release ([#1338](https://github.com/sysdiglabs/charts/issues/1338))
 # v1.16.10
 ### Chores
 * **sysdig, node-analyzer** [6b2c2efd](https://github.com/sysdiglabs/charts/commit/6b2c2efd7eccb16ad74df29d75daef664e2df9f7): bump sysdig/vuln-runtime-scanner to v1.5.6 ([#1331](https://github.com/sysdiglabs/charts/issues/1331))
diff --git a/charts/sysdig/sysdig/Chart.yaml b/charts/sysdig/sysdig/Chart.yaml
index bf93eb656..f5b4ab228 100644
--- a/charts/sysdig/sysdig/Chart.yaml
+++ b/charts/sysdig/sysdig/Chart.yaml
@@ -19,4 +19,4 @@ name: sysdig
 sources:
 - https://app.sysdigcloud.com/#/settings/user
 - https://github.com/draios/sysdig
-version: 1.16.10
+version: 1.16.11
diff --git a/charts/sysdig/sysdig/RELEASE-NOTES.md b/charts/sysdig/sysdig/RELEASE-NOTES.md
index a144cdae0..1687d2aa9 100644
--- a/charts/sysdig/sysdig/RELEASE-NOTES.md
+++ b/charts/sysdig/sysdig/RELEASE-NOTES.md
@@ -1,5 +1,5 @@
 # What's Changed
 
-### Chores
-- **sysdig, node-analyzer** [6b2c2efd](https://github.com/sysdiglabs/charts/commit/6b2c2efd7eccb16ad74df29d75daef664e2df9f7): bump sysdig/vuln-runtime-scanner to v1.5.6 ([#1331](https://github.com/sysdiglabs/charts/issues/1331))
-#### Full diff: https://github.com/sysdiglabs/charts/compare/sysdig-deploy-1.20.2...sysdig-1.16.10
+### New Features
+- **agent,sysdig** [8aff7e6a](https://github.com/sysdiglabs/charts/commit/8aff7e6adcccd7ebbebabff7f7d89e5125fb8f46): use `updatecli` for agent version bumps during release ([#1338](https://github.com/sysdiglabs/charts/issues/1338))
+#### Full diff: https://github.com/sysdiglabs/charts/compare/sysdig-deploy-1.22.2...sysdig-1.16.11
diff --git a/charts/sysdig/sysdig/values.yaml b/charts/sysdig/sysdig/values.yaml
index 54f2fcca3..4db82130e 100644
--- a/charts/sysdig/sysdig/values.yaml
+++ b/charts/sysdig/sysdig/values.yaml
@@ -4,8 +4,7 @@ image:
   # Operators
   #
   # As long as I don't want to people to use this, I will keep it undocumented
-  overrideValue:
-
+  overrideValue: null
   registry: quay.io
   repository: sysdig/agent
   tag: 12.16.0
@@ -19,7 +18,6 @@ image:
   #
   # pullSecrets:
   #   - name: myRegistrKeySecretName
-
 # Specify a predefined resource profile.
 #
 # Available options are:
@@ -64,32 +62,25 @@ resourceProfile: small
 #   limits:
 #     cpu: <cpu limits>m
 #     memory: <memory limits>Mi
-
 gke:
   # true here enables the deployment on gke autopilot clusters
   autopilot: false
-
 rbac:
   # true here enables creation of rbac resources
   create: true
-
 scc:
   # true here enables creation of Security Context Constraints in Openshift
   create: true
-
 psp:
   # true here enables creation of Pod Security Policy to allow the agent run with the required permissions
   create: true
-
 serviceAccount:
   # Create and use serviceAccount resources
   create: true
   # Use this value as serviceAccountName
-  name:
-
+  name: null
 daemonset:
   deploy: true
-
   # Perform rolling updates by default in the DaemonSet agent
   # ref: https://kubernetes.io/docs/tasks/manage-daemon/update-daemon-set/
   updateStrategy:
@@ -118,34 +109,27 @@ daemonset:
   # Liveness and readiness probes initial delay (in seconds)
   probes:
     initialDelay: 90
-
   kmodule:
     env: {}
-
 # If is behind a proxy you can set the proxy server
 # This proxy settings apply for the App-Checks.
 # If you need to configure the agent to allow it to communicate with the Sysdig collector through an HTTP proxy check:
 # https://docs.sysdig.com/en/enable-http-proxy-for-agents.html
 proxy:
-  httpProxy:
-  httpsProxy:
-  noProxy:
-
+  httpProxy: null
+  httpsProxy: null
+  noProxy: null
 # Set daemonset timezone
-timezone:
-
+timezone: null
 # Set daemonset priorityClassName
-priorityClassName:
-
+priorityClassName: null
 ebpf:
   # Enable eBPF support for Sysdig Agent
   enabled: false
-
   settings:
     # Needed to correctly detect the kernel version for the eBPF program
     # Set to false if not running on Google COS
     mountEtcVolume: true
-
 slim:
   # Uses a slim version of the Sysdig Agent
   enabled: true
@@ -156,8 +140,7 @@ slim:
   # contains the toolchain required to build the kernel module.
   kmoduleImage:
     repository: sysdig/agent-kmodule
-    digest:
-
+    digest: null
   resources:
     # Resources required by the kernel module builder image. These are some
     # a sane defaults ones, but you can tweak or ask Sysdig Support for more
@@ -168,29 +151,23 @@ slim:
     limits:
       cpu: 1000m
       memory: 512Mi
-
 # For Sysdig On-Prem installations or for custom collector settings, set the following fields
 collectorSettings:
-  collectorHost:
-  collectorPort:
-  ssl:
-  sslVerifyCertificate:
-
+  collectorHost: null
+  collectorPort: null
+  ssl: null
+  sslVerifyCertificate: null
 # Setting a cluster name allows you to filter events from this cluster using kubernetes.cluster.name
 clusterName: ""
-
 sysdig:
   # Required: You need your Sysdig Agent access key before running agents, either specifying 'accessKey' here, or using 'existingAccessKeySecret'
   accessKey: ""
   # Alternatively, specify the name of a Kubernetes secret containing an 'access-key' entry
   existingAccessKeySecret: ""
-
   # Disable capture functionality (see https://docs.sysdig.com/en/disable-captures.html)
   disableCaptures: false
-
   # Advanced settings. Any option in here will be directly translated into dragent.yaml in the Configmap
-  settings:
-    {}
+  settings: {}
     ### Example: Agent tags
     # tags: linux:ubuntu,dept:dev,local:nyc
     ### Example: Proxy configuration (see https://docs.sysdig.com/en/enable-http-proxy-for-agents.html)
@@ -199,46 +176,38 @@ sysdig:
     #   proxy_host: squid.yourdomain.com
     #   proxy_port: 3128
     #   ssl: false
-
 secure:
   # true here enables Sysdig Secure: container run-time security & forensics
   enabled: true
   vulnerabilityManagement:
     newEngineOnly: false
-
 auditLog:
   # true here activates the K8s Audit Log feature for Sysdig Secure
   enabled: false
   auditServerUrl: 0.0.0.0
   auditServerPort: 7765
-
   dynamicBackend:
     # true here configures an AuditSink who will receive the K8s audit logs
     enabled: false
-
 nodeImageAnalyzer:
   deploy: false
   image:
     repository: sysdig/node-image-analyzer
     tag: 0.1.28
-    digest:
+    digest: null
     pullPolicy: IfNotPresent
     # pullSecrets:
     #   - name: myRegistrKeySecretName
-
   settings:
     # The Docker socket path.
     # If a custom path is specified, ensure it is correctly mounted from the host inside the container.
     # dockerSocketPath: unix:///var/run/docker.sock
-
     # The socket path to a CRI compatible runtime, such as CRI-O.
     # If a custom path is specified, ensure it is correctly mounted from the host inside the container.
     # criSocketPath: unix:///var/run/crio/crio.sock
-
     # The socket path to a CRI-Containerd daemon.
     # If a custom path is specified, ensure it is correctly mounted from the host inside the container.
     # containerdSocketPath: unix:///var/run/containerd/containerd.sock
-
     # The endpoint to the Scanning Analysis collector, specified in the following format:
     # https://<API_ENDPOINT>/internal/scanning/scanning-analysis-collector
     # * SaaS default region (US East): leave empty
@@ -246,32 +215,25 @@ nodeImageAnalyzer:
     # * SaaS European Union: https://eu1.app.sysdig.com/internal/scanning/scanning-analysis-collector
     # * On-Prem: https://sysdig.my.company.com/internal/scanning/scanning-analysis-collector
     # collectorEndpoint: https://sysdig.my.company.com/internal/scanning/scanning-analysis-collector
-
     # Can be set to false to allow insecure connections to the Sysdig backend,
     # such as for on-premise installs that use self-signed certificates.
     # By default, certificates are always verified.
     # sslVerifyCertificate: false
-
     # Can be set to true to show debug logging, useful for troubleshooting.
     debug: false
-
     # Proxy configuration variables. See also: [Running Node Image Analyzer Behind a Proxy](https://docs.sysdig.com/en/scan-running-images.html#UUID-b3b07aa6-db02-eb58-050f-15c9e053bb64_section-idm232105909710949)
-    httpProxy:
-    httpsProxy:
-    noProxy:
-
+    httpProxy: null
+    httpsProxy: null
+    noProxy: null
   # Allow sysdig Node Image Analyzer to run on Kubernetes 1.6 masters
   tolerations:
     - effect: NoSchedule
       key: node-role.kubernetes.io/master
-
   # Allow passing extra volumes to the Node Image Analyzer to mount docker socket, cri-o socket, etc.
   extraVolumes:
     volumes: []
     mounts: []
-
     # Example:
-
     # volumes:
     # - name: docker-sock
     #   hostPath:
@@ -279,7 +241,6 @@ nodeImageAnalyzer:
     # mounts:
     # - mountPath: /var/run/docker.sock
     #   name: docker-sock
-
   resources:
     requests:
       cpu: 250m
@@ -287,10 +248,8 @@ nodeImageAnalyzer:
     limits:
       cpu: 500m
       memory: 1024Mi
-
   # Set daemonset priorityClassName
-  priorityClassName:
-
+  priorityClassName: null
   # Allow the DaemonSet to schedule using affinity rules
   # Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
   affinity:
@@ -315,42 +274,33 @@ nodeImageAnalyzer:
                 operator: In
                 values:
                   - linux
-
 # Override value for the NATS service endpoint
 natsUrl: ""
-
 kspm:
   deploy: false
-
 nodeAnalyzer:
   # Create node analyzer specific serviceAccount resource
   serviceAccount:
     create: true
     # Use this value as nodeAnalyzerServiceAccountName
     name: "node-analyzer"
-
   deploy: true
-
   # The API endpoint for Sysdig Secure, specified with no protocol:
   # * SaaS default region (US East): secure.sysdig.com
   # * SaaS US Web: us2.app.sysdig.com
   # * SaaS European Union: eu1.app.sysdig.com
   # * On-Prem: sysdig.my.company.com
   apiEndpoint: ""
-
   # Can be set to false to allow insecure connections to the Sysdig backend,
   # such as for on-premise installs that use self-signed certificates.
   # By default, certificates are always verified.
   # sslVerifyCertificate: false
-
   # Can be set to true to show debug logging, useful for troubleshooting.
   debug: false
-
   # Proxy configuration variables. See also: [Running Node Analyzer Behind a Proxy](https://docs.sysdig.com/en/node-analyzer--multi-feature-installation.html#UUID-35c14c46-b327-c2a8-ed9c-82a2af995218_section-idm51621039128136)
-  httpProxy:
-  httpsProxy:
-  noProxy:
-
+  httpProxy: null
+  httpsProxy: null
+  noProxy: null
   # Allow sysdig Node Image Analyzer to run on Kubernetes 1.6 masters
   tolerations:
     - effect: NoSchedule
@@ -365,18 +315,14 @@ nodeAnalyzer:
       key: node-role.kubernetes.io/etcd
       operator: Equal
       value: "true"
-
   # Set nodeAnalyzer daemonset priorityClassName
-  priorityClassName:
-
+  priorityClassName: null
   # Allow the DaemonSet to set labels
   labels: {}
   # Use this pullSecret to pull images from a private registry
   # pullSecrets:
   #   - name: myRegistryKeySecretName
-
   nodeSelector: {}
-
   # Allow the DaemonSet to schedule using affinity rules
   # Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
   affinity:
@@ -401,34 +347,27 @@ nodeAnalyzer:
                 operator: In
                 values:
                   - linux
-
   imageAnalyzer:
     deploy: true
     image:
       repository: sysdig/node-image-analyzer
       tag: 0.1.28
-      digest:
+      digest: null
       pullPolicy: IfNotPresent
-
     # The Docker socket path.
     # If a custom path is specified, ensure it is correctly mounted from the host inside the container.
     # dockerSocketPath: unix:///var/run/docker.sock
-
     # The socket path to a CRI compatible runtime, such as CRI-O.
     # If a custom path is specified, ensure it is correctly mounted from the host inside the container.
     # criSocketPath: unix:///var/run/crio/crio.sock
-
     # The socket path to a CRI-Containerd daemon.
     # If a custom path is specified, ensure it is correctly mounted from the host inside the container.
     # containerdSocketPath: unix:///var/run/containerd/containerd.sock
-
     # Allow passing extra volumes to the Node Image Analyzer to mount docker socket, cri-o socket, etc.
     extraVolumes:
       volumes: []
       mounts: []
-
       # Example:
-
       # volumes:
       # - name: docker-sock
       #   hostPath:
@@ -436,14 +375,12 @@ nodeAnalyzer:
       # mounts:
       # - mountPath: /var/run/docker.sock
       #   name: docker-sock
-
       # example for bottlerocket
       # volumes:
       #  - name: socketpath
       #    hostPath:
       #      path: /run/dockershim.sock
       #      type: ""
-
     resources:
       requests:
         cpu: 150m
@@ -451,27 +388,22 @@ nodeAnalyzer:
       limits:
         cpu: 500m
         memory: 1536Mi
-
     env: {}
   hostAnalyzer:
     deploy: true
     image:
       repository: sysdig/host-analyzer
       tag: 0.1.16
-      digest:
+      digest: null
       pullPolicy: IfNotPresent
-
     # The scanning schedule specification for the host analyzer expressed as a crontab string such as “5 4 * * *”.
     # The default value of @dailydefault instructs the analyzer to automatically pick a schedule that will start
     # shortly after it is deployed and will perform a scan every 24 hours.
     schedule: "@dailydefault"
-
     # The list of directories to inspect during the scan, expressed as a comma separated list.
     # dirsToScan: "/etc,/var/lib/dpkg,/usr/local,/usr/lib/sysimage/rpm,/var/lib/rpm,/lib/apk/db"
-
     # The number of times the analysis collector is allowed to retry sending results if backend communication fails.
     # maxSendAttempts: 3
-
     resources:
       requests:
         cpu: 150m
@@ -479,18 +411,15 @@ nodeAnalyzer:
       limits:
         cpu: 500m
         memory: 1536Mi
-
     env: {}
   benchmarkRunner:
     deploy: true
     includeSensitivePermissions: false
-
     image:
       repository: sysdig/compliance-benchmark-runner
       tag: 1.1.0.8
-      digest:
+      digest: null
       pullPolicy: IfNotPresent
-
     resources:
       requests:
         cpu: 150m
@@ -498,23 +427,19 @@ nodeAnalyzer:
       limits:
         cpu: 500m
         memory: 256Mi
-
     env: {}
-
   runtimeScanner:
     deploy: false
     image:
       repository: sysdig/vuln-runtime-scanner
       tag: 1.5.6
-      digest:
+      digest: null
       pullPolicy: IfNotPresent
-
     extraMounts: []
     # example for bottlerocket
     # extraMounts:
     #   - name: socketpath
     #     mountPath: /var/run/containerd/containerd.sock
-
     resources:
       requests:
         cpu: 150m
@@ -524,28 +449,23 @@ nodeAnalyzer:
         cpu: 1000m
         memory: 2Gi
         ephemeral-storage: "4Gi"
-
     env: {}
-
     settings:
       eveEnabled: false
       # Threshold for which images will be skipped in the analysis.
       # Size is in bytes, default is not set (don't skip)
       # maxImageSizeAllowed: ""
-
       # Threshold for which files will be skipped in the analysis.
       # Fine tune this parameter if you have large files that needs to be analyzed (eg: big .JAR files)
       # Size is in bytes, default is 250MB
       maxFileSizeAllowed: "262144000"
-
     eveConnector:
       deploy: false
       image:
         repository: sysdig/eveclient-api
         tag: 1.1.2
-        digest:
+        digest: null
         pullPolicy: IfNotPresent
-
       resources:
         requests:
           cpu: 100m
@@ -553,18 +473,15 @@ nodeAnalyzer:
         limits:
           cpu: 1000m
           memory: 512Mi
-
       settings:
         replicas: 1
-
   kspmAnalyzer:
     debug: false
     image:
       repository: sysdig/kspm-analyzer
       tag: 1.9.0
-      digest:
+      digest: null
       pullPolicy: IfNotPresent
-
     resources:
       requests:
         cpu: 150m
@@ -572,17 +489,14 @@ nodeAnalyzer:
       limits:
         cpu: 500m
         memory: 1536Mi
-
     env: {}
-
 kspmCollector:
   debug: false
   image:
     repository: sysdig/kspm-collector
     tag: 1.9.0
-    digest:
+    digest: null
     pullPolicy: IfNotPresent
-
   settings:
     replicas: 1
     namespaces:
@@ -592,7 +506,6 @@ kspmCollector:
       included: ""
       excluded: ""
     healthIntervalMin: 5
-
   resources:
     requests:
       cpu: 150m
@@ -600,11 +513,8 @@ kspmCollector:
     limits:
       cpu: 500m
       memory: 1536Mi
-
   env: {}
-
-customAppChecks:
-  {}
+customAppChecks: {}
   # Allow passing custom app checks for Sysdig Agent.
   # Example:
   #
@@ -614,12 +524,10 @@ customAppChecks:
   #   class MyCustomCheck(AgentCheck):
   #       def check(self, instance):
   #           self.gauge("testhelm", 1)
-
 # Promscrape prometheus.yaml not configured by default
 prometheus:
   file: false
   yaml: {}
-
 extraVolumes:
   volumes: []
   mounts: []
@@ -641,9 +549,7 @@ extraVolumes:
   #       name: sysdig-new-cm
   #     - mountPath: /opt/draios/secret
   #       name: sysdig-new-secret
-
-extraSecrets:
-  []
+extraSecrets: []
   # Allow passing extra secrets that can be mounted via extraVolumes
   #
   # extraSecrets:
@@ -651,7 +557,6 @@ extraSecrets:
   #     data:
   #       sysdig-new-password-key1: bXlwYXNzd29yZA==
   #       sysdig-new-password-key2: bXlwYXNzd29yZA==
-
 # Allow sysdig to run on Kubernetes 1.6 masters.
 tolerations:
   - effect: NoSchedule
@@ -666,6 +571,5 @@ tolerations:
     key: node-role.kubernetes.io/etcd
     operator: Equal
     value: "true"
-
 leaderelection:
   enable: false
diff --git a/index.yaml b/index.yaml
index e5acde226..612ee7414 100644
--- a/index.yaml
+++ b/index.yaml
@@ -80,6 +80,63 @@ entries:
     - assets/datawiza/access-broker-0.1.1.tgz
     version: 0.1.1
   airflow:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Apache Airflow
+      catalog.cattle.io/kube-version: '>=1.19-0'
+      catalog.cattle.io/release-name: airflow
+      category: WorkFlow
+      images: |
+        - name: airflow-exporter
+          image: docker.io/bitnami/airflow-exporter:0.20220314.0-debian-11-r398
+        - name: airflow-scheduler
+          image: docker.io/bitnami/airflow-scheduler:2.7.0-debian-11-r2
+        - name: airflow-worker
+          image: docker.io/bitnami/airflow-worker:2.7.0-debian-11-r2
+        - name: airflow
+          image: docker.io/bitnami/airflow:2.7.0-debian-11-r5
+        - name: git
+          image: docker.io/bitnami/git:2.42.0-debian-11-r5
+        - name: os-shell
+          image: docker.io/bitnami/os-shell:11-debian-11-r48
+      licenses: Apache-2.0
+    apiVersion: v2
+    appVersion: 2.7.0
+    created: "2023-09-07T17:00:40.99928108Z"
+    dependencies:
+    - condition: redis.enabled
+      name: redis
+      repository: file://./charts/redis
+      version: 18.x.x
+    - condition: postgresql.enabled
+      name: postgresql
+      repository: file://./charts/postgresql
+      version: 12.x.x
+    - name: common
+      repository: file://./charts/common
+      tags:
+      - bitnami-common
+      version: 2.x.x
+    description: Apache Airflow is a tool to express and execute workflows as directed
+      acyclic graphs (DAGs). It includes utilities to schedule tasks, monitor task
+      progress and handle task dependencies.
+    digest: 889709af0834e550529d75e1246f6759aabdfec0ec00978a85ec012a66a8672a
+    home: https://bitnami.com
+    icon: https://svn.apache.org/repos/asf/comdev/project-logos/originals/airflow-1.svg
+    keywords:
+    - apache
+    - airflow
+    - workflow
+    - dag
+    maintainers:
+    - name: VMware, Inc.
+      url: https://github.com/bitnami/charts
+    name: airflow
+    sources:
+    - https://github.com/bitnami/charts/tree/main/bitnami/airflow
+    urls:
+    - assets/bitnami/airflow-15.0.3.tgz
+    version: 15.0.3
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: Apache Airflow
@@ -1552,7 +1609,7 @@ entries:
   - annotations:
       artifacthub.io/changes: |
         - kind: fixed
-          description: fixed example for configs.styles to be sidebar instead of nav-bar
+          description: do not hardcode the pathtype of the grpc ingress rule when using a single ingress resource in aws alb
       artifacthub.io/signKey: |
         fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252
         url: https://argoproj.github.io/argo-helm/pgp_keys.asc
@@ -1563,7 +1620,7 @@ entries:
       catalog.cattle.io/release-name: argo-cd
     apiVersion: v2
     appVersion: v2.8.2
-    created: "2023-09-05T12:50:22.173408403Z"
+    created: "2023-09-07T17:00:39.282679727Z"
     dependencies:
     - condition: redis-ha.enabled
       name: redis-ha
@@ -1571,7 +1628,46 @@ entries:
       version: 4.23.0
     description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery
       tool for Kubernetes.
-    digest: 0b933453c8003005e4b34763025771afa6a0e542a72be143a40c6b623ca13df1
+    digest: 60af17d4df40cbc45871fb0de0c0fa88c01d4e73e5592390b0e348ff83e90538
+    home: https://github.com/argoproj/argo-helm
+    icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png
+    keywords:
+    - argoproj
+    - argocd
+    - gitops
+    kubeVersion: '>=1.23.0-0'
+    maintainers:
+    - name: argoproj
+      url: https://argoproj.github.io/
+    name: argo-cd
+    sources:
+    - https://github.com/argoproj/argo-helm/tree/main/charts/argo-cd
+    - https://github.com/argoproj/argo-cd
+    urls:
+    - assets/argo/argo-cd-5.45.2.tgz
+    version: 5.45.2
+  - annotations:
+      artifacthub.io/changes: |
+        - kind: fixed
+          description: fixed example for configs.styles to be sidebar instead of nav-bar
+      artifacthub.io/signKey: |
+        fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252
+        url: https://argoproj.github.io/argo-helm/pgp_keys.asc
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Argo CD
+      catalog.cattle.io/kube-version: '>=1.23.0-0'
+      catalog.cattle.io/release-name: argo-cd
+    apiVersion: v2
+    appVersion: v2.8.2
+    created: "2023-09-07T17:00:10.654444003Z"
+    dependencies:
+    - condition: redis-ha.enabled
+      name: redis-ha
+      repository: file://./charts/redis-ha
+      version: 4.23.0
+    description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery
+      tool for Kubernetes.
+    digest: 248727d1d926577c85e05f484fc9d94184605d26fe7cace18957db809f751a05
     home: https://github.com/argoproj/argo-helm
     icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png
     keywords:
@@ -15007,6 +15103,43 @@ entries:
     - assets/weka/csi-wekafsplugin-0.6.400.tgz
     version: 0.6.400
   datadog:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Datadog
+      catalog.cattle.io/kube-version: '>=1.10-0'
+      catalog.cattle.io/release-name: datadog
+    apiVersion: v1
+    appVersion: "7"
+    created: "2023-09-07T17:00:45.347177756Z"
+    dependencies:
+    - condition: clusterAgent.metricsProvider.useDatadogMetrics
+      name: datadog-crds
+      repository: https://helm.datadoghq.com
+      tags:
+      - install-crds
+      version: 1.0.1
+    - condition: datadog.kubeStateMetricsEnabled
+      name: kube-state-metrics
+      repository: https://prometheus-community.github.io/helm-charts
+      version: 2.13.2
+    description: Datadog Agent
+    digest: 11a4f1247a9fe417649c66a613c48822825415c0f382e59952b03e68984af7cf
+    home: https://www.datadoghq.com
+    icon: https://datadog-live.imgix.net/img/dd_logo_70x75.png
+    keywords:
+    - monitoring
+    - alerting
+    - metric
+    maintainers:
+    - email: support@datadoghq.com
+      name: Datadog
+    name: datadog
+    sources:
+    - https://app.datadoghq.com/account/settings#agent/kubernetes
+    - https://github.com/DataDog/datadog-agent
+    urls:
+    - assets/datadog/datadog-3.35.1.tgz
+    version: 3.35.1
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: Datadog
@@ -18781,6 +18914,35 @@ entries:
     - assets/external-secrets/external-secrets-0.5.200.tgz
     version: 0.5.200
   f5-bigip-ctlr:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: F5 Container Ingress Services for Kubernetes
+        and OpenShift
+      catalog.cattle.io/kube-version: '>=1.20-0'
+      catalog.cattle.io/release-name: f5-bigip-ctlr
+    apiVersion: v1
+    created: "2023-09-07T17:00:45.729583741Z"
+    description: Deploy the F5 Networks BIG-IP Controller for Kubernetes and OpenShift
+      (k8s-bigip-ctlr).
+    digest: d1a61793a53684a8e51ebce6e436cc9ba32611c801bad89ed4ff4395d2776bcd
+    home: https://www.f5.com/products/automation-and-orchestration/container-ingress-services
+    icon: https://avatars.githubusercontent.com/u/8935905?s=200&v=4
+    keywords:
+    - F5
+    - BIG-IP
+    - Containers
+    - Kubernetes
+    - OpenShift
+    maintainers:
+    - email: f5_cis_operators@f5.com
+      name: F5CISSupport
+    name: f5-bigip-ctlr
+    sources:
+    - https://github.com/F5Networks/k8s-bigip-ctlr
+    - https://github.com/F5Networks/charts
+    urls:
+    - assets/f5/f5-bigip-ctlr-0.0.2601.tgz
+    version: 0.0.2601
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: F5 Container Ingress Services for Kubernetes
@@ -21142,6 +21304,35 @@ entries:
     - assets/gopaddle/gopaddle-4.2.5.tgz
     version: 4.2.5
   haproxy:
+  - annotations:
+      artifacthub.io/changes: |
+        - Use Ingress Controller 1.10.7 version for base image
+        - Enable new Prometheus endpoint on tcp/6060 by default
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: HAProxy Kubernetes Ingress Controller
+      catalog.cattle.io/kube-version: '>=1.22.0-0'
+      catalog.cattle.io/release-name: haproxy
+    apiVersion: v2
+    appVersion: 1.10.7
+    created: "2023-09-07T17:00:46.15197207Z"
+    description: A Helm chart for HAProxy Kubernetes Ingress Controller
+    digest: 15ec1c2a1066eb30b0ed28cc5bdecc6e190d4b4c8daddaecf9161b52f48e9eff
+    home: https://github.com/haproxytech/helm-charts/tree/main/kubernetes-ingress
+    icon: https://raw.githubusercontent.com/haproxytech/helm-charts/main/kubernetes-ingress/chart-icon.png
+    keywords:
+    - ingress
+    - haproxy
+    kubeVersion: '>=1.22.0-0'
+    maintainers:
+    - email: dkorunic@haproxy.com
+      name: Dinko Korunic
+    name: haproxy
+    sources:
+    - https://github.com/haproxytech/kubernetes-ingress
+    type: application
+    urls:
+    - assets/haproxy/haproxy-1.33.0.tgz
+    version: 1.33.0
   - annotations:
       artifacthub.io/changes: |
         - Use Ingress Controller 1.10.6 version for base image
@@ -23612,6 +23803,62 @@ entries:
     - assets/jaeger/jaeger-operator-2.36.0.tgz
     version: 2.36.0
   jenkins:
+  - annotations:
+      artifacthub.io/category: integration-delivery
+      artifacthub.io/images: |
+        - name: jenkins
+          image: jenkins/jenkins:2.414.1-jdk11
+        - name: k8s-sidecar
+          image: kiwigrid/k8s-sidecar:1.24.4
+        - name: inbound-agent
+          image: jenkins/inbound-agent:3107.v665000b_51092-15
+        - name: backup
+          image: maorfr/kube-tasks:0.2.0
+      artifacthub.io/license: Apache-2.0
+      artifacthub.io/links: |
+        - name: Chart Source
+          url: https://github.com/jenkinsci/helm-charts/tree/main/charts/jenkins
+        - name: Jenkins
+          url: https://www.jenkins.io/
+        - name: support
+          url: https://github.com/jenkinsci/helm-charts/issues
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Jenkins
+      catalog.cattle.io/kube-version: '>=1.14-0'
+      catalog.cattle.io/release-name: jenkins
+    apiVersion: v2
+    appVersion: 2.414.1
+    created: "2023-09-07T17:00:46.703801042Z"
+    description: Jenkins - Build great things at any scale! The leading open source
+      automation server, Jenkins provides over 1800 plugins to support building, deploying
+      and automating any project.
+    digest: fd746df96d96d7e60e21265c30b02ebd0ae1f206081fef43e2090683507cd899
+    home: https://jenkins.io/
+    icon: https://get.jenkins.io/art/jenkins-logo/logo.svg
+    keywords:
+    - jenkins
+    - ci
+    - devops
+    maintainers:
+    - email: maor.friedman@redhat.com
+      name: maorfr
+    - email: mail@torstenwalter.de
+      name: torstenwalter
+    - email: garridomota@gmail.com
+      name: mogaal
+    - email: wmcdona89@gmail.com
+      name: wmcdona89
+    - email: timjacomb1@gmail.com
+      name: timja
+    name: jenkins
+    sources:
+    - https://github.com/jenkinsci/jenkins
+    - https://github.com/jenkinsci/docker-inbound-agent
+    - https://github.com/maorfr/kube-tasks
+    - https://github.com/jenkinsci/configuration-as-code-plugin
+    urls:
+    - assets/jenkins/jenkins-4.6.3.tgz
+    version: 4.6.3
   - annotations:
       artifacthub.io/category: integration-delivery
       artifacthub.io/images: |
@@ -26814,6 +27061,58 @@ entries:
     - assets/kasten/k10-4.5.900.tgz
     version: 4.5.900
   kafka:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Apache Kafka
+      catalog.cattle.io/kube-version: '>=1.19-0'
+      catalog.cattle.io/release-name: kafka
+      category: Infrastructure
+      images: |
+        - name: jmx-exporter
+          image: docker.io/bitnami/jmx-exporter:0.19.0-debian-11-r66
+        - name: kafka-exporter
+          image: docker.io/bitnami/kafka-exporter:1.7.0-debian-11-r102
+        - name: kafka
+          image: docker.io/bitnami/kafka:3.5.1-debian-11-r41
+        - name: kubectl
+          image: docker.io/bitnami/kubectl:1.25.13-debian-11-r11
+        - name: os-shell
+          image: docker.io/bitnami/os-shell:11-debian-11-r60
+      licenses: Apache-2.0
+    apiVersion: v2
+    appVersion: 3.5.1
+    created: "2023-09-07T17:00:41.706609164Z"
+    dependencies:
+    - condition: zookeeper.enabled
+      name: zookeeper
+      repository: file://./charts/zookeeper
+      version: 12.x.x
+    - name: common
+      repository: file://./charts/common
+      tags:
+      - bitnami-common
+      version: 2.x.x
+    description: Apache Kafka is a distributed streaming platform designed to build
+      real-time pipelines and can be used as a message broker or as a replacement
+      for a log aggregation solution for big data applications.
+    digest: 4f418ae0ac3045375d876390a71bb104a7e145e91498be332f43d55a0acb3f78
+    home: https://bitnami.com
+    icon: https://svn.apache.org/repos/asf/comdev/project-logos/originals/kafka.svg
+    keywords:
+    - kafka
+    - zookeeper
+    - streaming
+    - producer
+    - consumer
+    maintainers:
+    - name: VMware, Inc.
+      url: https://github.com/bitnami/charts
+    name: kafka
+    sources:
+    - https://github.com/bitnami/charts/tree/main/bitnami/kafka
+    urls:
+    - assets/bitnami/kafka-25.1.8.tgz
+    version: 25.1.8
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: Apache Kafka
@@ -28859,6 +29158,33 @@ entries:
     - assets/bitnami/kafka-19.0.1.tgz
     version: 19.0.1
   kamaji:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Kamaji
+      catalog.cattle.io/kube-version: '>=1.21.0-0'
+      catalog.cattle.io/release-name: kamaji
+    apiVersion: v2
+    appVersion: v0.3.4
+    created: "2023-09-07T17:00:44.461599164Z"
+    description: Kamaji is a Kubernetes Control Plane Manager.
+    digest: 71d64663a0cf2c50894866aaff564a6b25d67881fc23de84ee600273bb13f09e
+    home: https://github.com/clastix/kamaji
+    icon: https://github.com/clastix/kamaji/raw/master/assets/logo-colored.png
+    kubeVersion: '>=1.21.0-0'
+    maintainers:
+    - email: dario@tranchitella.eu
+      name: Dario Tranchitella
+    - email: me@maxgio.it
+      name: Massimiliano Giovagnoli
+    - email: me@bsctl.io
+      name: Adriano Pezzuto
+    name: kamaji
+    sources:
+    - https://github.com/clastix/kamaji
+    type: application
+    urls:
+    - assets/clastix/kamaji-0.12.5.tgz
+    version: 0.12.5
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: Kamaji
@@ -30879,6 +31205,33 @@ entries:
     - assets/avesha/kubeslice-worker-0.4.5.tgz
     version: 0.4.5
   kuma:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Kuma
+      catalog.cattle.io/namespace: kuma-system
+      catalog.cattle.io/release-name: kuma
+    apiVersion: v2
+    appVersion: 2.4.1
+    created: "2023-09-07T17:00:49.368025309Z"
+    description: A Helm chart for the Kuma Control Plane
+    digest: 4874f5f0c2fa2c837de97597256f55cc2c2860c84273b9e78e4b4c9948feb557
+    home: https://github.com/kumahq/kuma
+    icon: https://kuma.io/assets/images/brand/kuma-logo-new.svg
+    keywords:
+    - service mesh
+    - control plane
+    maintainers:
+    - email: austin.cawley@gmail.com
+      name: austince
+    - email: jakub.dyszkiewicz@konghq.com
+      name: jakubdyszkiewicz
+    - email: nikolay.nikolaev@konghq.com
+      name: nickolaev
+    name: kuma
+    type: application
+    urls:
+    - assets/kuma/kuma-2.4.1.tgz
+    version: 2.4.1
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: Kuma
@@ -31818,6 +32171,50 @@ entries:
     - assets/elastic/logstash-7.17.3.tgz
     version: 7.17.3
   mariadb:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: MariaDB
+      catalog.cattle.io/kube-version: '>=1.19-0'
+      catalog.cattle.io/release-name: mariadb
+      category: Database
+      images: |
+        - name: mariadb
+          image: docker.io/bitnami/mariadb:11.0.3-debian-11-r5
+        - name: mysqld-exporter
+          image: docker.io/bitnami/mysqld-exporter:0.15.0-debian-11-r24
+        - name: os-shell
+          image: docker.io/bitnami/os-shell:11-debian-11-r43
+      licenses: Apache-2.0
+    apiVersion: v2
+    appVersion: 11.0.3
+    created: "2023-09-07T17:00:41.897135462Z"
+    dependencies:
+    - name: common
+      repository: file://./charts/common
+      tags:
+      - bitnami-common
+      version: 2.x.x
+    description: MariaDB is an open source, community-developed SQL database server
+      that is widely in use around the world due to its enterprise features, flexibility,
+      and collaboration with leading tech firms.
+    digest: bd1d45de40f521902b505f0470156b040be5da39b2c7b53bd2a5049c38e09c66
+    home: https://bitnami.com
+    icon: https://mariadb.com/wp-content/uploads/2019/11/mariadb-logo-vert_black-transparent.png
+    keywords:
+    - mariadb
+    - mysql
+    - database
+    - sql
+    - prometheus
+    maintainers:
+    - name: VMware, Inc.
+      url: https://github.com/bitnami/charts
+    name: mariadb
+    sources:
+    - https://github.com/bitnami/charts/tree/main/bitnami/mariadb
+    urls:
+    - assets/bitnami/mariadb-13.1.3.tgz
+    version: 13.1.3
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: MariaDB
@@ -33255,6 +33652,32 @@ entries:
     - assets/metallb/metallb-0.13.7.tgz
     version: 0.13.7
   minio-operator:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Minio Operator
+      catalog.cattle.io/kube-version: '>=1.19-0'
+      catalog.cattle.io/release-name: minio-operator
+    apiVersion: v2
+    appVersion: v5.0.8
+    created: "2023-09-07T17:00:49.431021567Z"
+    description: A Helm chart for MinIO Operator
+    digest: 033fbdddf820538f460ec4db22c152c87779cccff0e080047b5ce2387d812fff
+    home: https://min.io
+    icon: https://min.io/resources/img/logo/MINIO_wordmark.png
+    keywords:
+    - storage
+    - object-storage
+    - S3
+    maintainers:
+    - email: dev@minio.io
+      name: MinIO, Inc
+    name: minio-operator
+    sources:
+    - https://github.com/minio/operator
+    type: application
+    urls:
+    - assets/minio/minio-operator-5.0.8.tgz
+    version: 5.0.8
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: Minio Operator
@@ -38445,6 +38868,71 @@ entries:
     - assets/ondat/ondat-operator-0.5.200.tgz
     version: 0.5.200
   openebs:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: OpenEBS
+      catalog.cattle.io/release-name: openebs
+    apiVersion: v2
+    appVersion: 3.9.0
+    created: "2023-09-07T17:00:50.577538417Z"
+    dependencies:
+    - condition: openebs-ndm.enabled
+      name: openebs-ndm
+      repository: file://./charts/openebs-ndm
+      version: 2.1.0
+    - condition: localpv-provisioner.enabled
+      name: localpv-provisioner
+      repository: file://./charts/localpv-provisioner
+      version: 3.4.1
+    - condition: cstor.enabled
+      name: cstor
+      repository: file://./charts/cstor
+      version: 3.5.0
+    - condition: jiva.enabled
+      name: jiva
+      repository: file://./charts/jiva
+      version: 3.5.1
+    - condition: zfs-localpv.enabled
+      name: zfs-localpv
+      repository: file://./charts/zfs-localpv
+      version: 2.3.1
+    - condition: lvm-localpv.enabled
+      name: lvm-localpv
+      repository: file://./charts/lvm-localpv
+      version: 1.3.0
+    - condition: nfs-provisioner.enabled
+      name: nfs-provisioner
+      repository: file://./charts/nfs-provisioner
+      version: 0.10.0
+    - condition: mayastor.enabled
+      name: mayastor
+      repository: file://./charts/mayastor
+      version: 2.4.0
+    description: Containerized Attached Storage for Kubernetes
+    digest: c7be2703957f13c514a4c7dc41351d4cb772c484c772115e75c3a5ba500d7c55
+    home: http://www.openebs.io/
+    icon: https://raw.githubusercontent.com/cncf/artwork/HEAD/projects/openebs/icon/color/openebs-icon-color.png
+    keywords:
+    - cloud-native-storage
+    - block-storage
+    - local-storage
+    - iSCSI
+    - NVMe
+    - storage
+    - kubernetes
+    maintainers:
+    - email: kiran.mova@mayadata.io
+      name: kmova
+    - email: prateek.pandey@mayadata.io
+      name: prateekpandey14
+    - email: shovan.maity@mayadata.io
+      name: shovanmaity
+    name: openebs
+    sources:
+    - https://github.com/openebs/openebs
+    urls:
+    - assets/openebs/openebs-3.9.0.tgz
+    version: 3.9.0
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: OpenEBS
@@ -39714,6 +40202,51 @@ entries:
     - assets/portworx/portworx-essentials-2.9.100.tgz
     version: 2.9.100
   postgresql:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: PostgreSQL
+      catalog.cattle.io/kube-version: '>=1.19-0'
+      catalog.cattle.io/release-name: postgresql
+      category: Database
+      images: |
+        - name: os-shell
+          image: docker.io/bitnami/os-shell:11-debian-11-r43
+        - name: postgres-exporter
+          image: docker.io/bitnami/postgres-exporter:0.13.2-debian-11-r25
+        - name: postgresql
+          image: docker.io/bitnami/postgresql:15.4.0-debian-11-r10
+      licenses: Apache-2.0
+    apiVersion: v2
+    appVersion: 15.4.0
+    created: "2023-09-07T17:00:42.170134325Z"
+    dependencies:
+    - name: common
+      repository: file://./charts/common
+      tags:
+      - bitnami-common
+      version: 2.x.x
+    description: PostgreSQL (Postgres) is an open source object-relational database
+      known for reliability and data integrity. ACID-compliant, it supports foreign
+      keys, joins, views, triggers and stored procedures.
+    digest: 11f311614f20766b6d1e1cb31838a81244bd32a79b8cc4d71e06d76a38c4e42b
+    home: https://bitnami.com
+    icon: https://wiki.postgresql.org/images/a/a4/PostgreSQL_logo.3colors.svg
+    keywords:
+    - postgresql
+    - postgres
+    - database
+    - sql
+    - replication
+    - cluster
+    maintainers:
+    - name: VMware, Inc.
+      url: https://github.com/bitnami/charts
+    name: postgresql
+    sources:
+    - https://github.com/bitnami/charts/tree/main/bitnami/postgresql
+    urls:
+    - assets/bitnami/postgresql-12.11.0.tgz
+    version: 12.11.0
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: PostgreSQL
@@ -44005,6 +44538,50 @@ entries:
     - assets/bitnami/redis-17.3.7.tgz
     version: 17.3.7
   redpanda:
+  - annotations:
+      artifacthub.io/images: |
+        - name: redpanda
+          image: docker.redpanda.com/redpandadata/redpanda:v23.2.7
+        - name: busybox
+          image: busybox:latest
+        - name: mintel/docker-alpine-bash-curl-jq
+          image: mintel/docker-alpine-bash-curl-jq:latest
+      artifacthub.io/license: Apache-2.0
+      artifacthub.io/links: |
+        - name: Documentation
+          url: https://docs.redpanda.com
+        - name: "Helm (>= 3.6.0)"
+          url: https://helm.sh/docs/intro/install/
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Redpanda
+      catalog.cattle.io/kube-version: '>=1.21-0'
+      catalog.cattle.io/release-name: redpanda
+    apiVersion: v2
+    appVersion: v23.2.8
+    created: "2023-09-07T17:00:51.162367211Z"
+    dependencies:
+    - condition: console.enabled
+      name: console
+      repository: file://./charts/console
+      version: '>=0.5 <1.0'
+    - condition: connectors.enabled
+      name: connectors
+      repository: file://./charts/connectors
+      version: '>=0.1.2 <1.0'
+    description: Redpanda is the real-time engine for modern apps.
+    digest: e3b86895b1223ddfdcc04b793b2918bc7425cf01f7edced102dbd3755a8d806a
+    icon: https://images.ctfassets.net/paqvtpyf8rwu/3cYHw5UzhXCbKuR24GDFGO/73fb682e6157d11c10d5b2b5da1d5af0/skate-stand-panda.svg
+    kubeVersion: '>=1.21-0'
+    maintainers:
+    - name: redpanda-data
+      url: https://github.com/orgs/redpanda-data/people
+    name: redpanda
+    sources:
+    - https://github.com/redpanda-data/helm-charts
+    type: application
+    urls:
+    - assets/redpanda/redpanda-5.3.3.tgz
+    version: 5.3.3
   - annotations:
       artifacthub.io/images: |
         - name: redpanda
@@ -47721,6 +48298,43 @@ entries:
     - assets/shipa/shipa-1.4.0.tgz
     version: 1.4.0
   spark:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Apache Spark
+      catalog.cattle.io/kube-version: '>=1.19-0'
+      catalog.cattle.io/release-name: spark
+      category: Infrastructure
+      images: |
+        - name: spark
+          image: docker.io/bitnami/spark:3.4.1-debian-11-r48
+      licenses: Apache-2.0
+    apiVersion: v2
+    appVersion: 3.4.1
+    created: "2023-09-07T17:00:42.949404466Z"
+    dependencies:
+    - name: common
+      repository: file://./charts/common
+      tags:
+      - bitnami-common
+      version: 2.x.x
+    description: Apache Spark is a high-performance engine for large-scale computing
+      tasks, such as data processing, machine learning and real-time data streaming.
+      It includes APIs for Java, Python, Scala and R.
+    digest: 7e47c63f251771ef1b4ce8b63972b17af1bfe58bb6b6726ce11c9718324d8ea8
+    home: https://bitnami.com
+    icon: https://www.apache.org/logos/res/spark/default.png
+    keywords:
+    - apache
+    - spark
+    maintainers:
+    - name: VMware, Inc.
+      url: https://github.com/bitnami/charts
+    name: spark
+    sources:
+    - https://github.com/bitnami/charts/tree/main/bitnami/spark
+    urls:
+    - assets/bitnami/spark-7.2.1.tgz
+    version: 7.2.1
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: Apache Spark
@@ -48764,6 +49378,37 @@ entries:
     - assets/bitnami/spark-6.3.8.tgz
     version: 6.3.8
   speedscale-operator:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Speedscale Operator
+      catalog.cattle.io/kube-version: '>= 1.17.0-0'
+      catalog.cattle.io/release-name: speedscale-operator
+    apiVersion: v1
+    appVersion: 1.3.352
+    created: "2023-09-07T17:00:51.290522312Z"
+    description: Stress test your APIs with real world scenarios.  Collect and replay
+      traffic without scripting.
+    digest: 996fcf0f53c8dc2eb532174278d64ac1dcb6a8588535b3e03d42dcc2cb4d26c6
+    home: https://speedscale.com
+    icon: https://raw.githubusercontent.com/speedscale/assets/main/logo/gold_logo_only.png
+    keywords:
+    - speedscale
+    - test
+    - testing
+    - regression
+    - reliability
+    - load
+    - replay
+    - network
+    - traffic
+    kubeVersion: '>= 1.17.0-0'
+    maintainers:
+    - email: support@speedscale.com
+      name: Speedscale Support
+    name: speedscale-operator
+    urls:
+    - assets/speedscale/speedscale-operator-1.3.30.tgz
+    version: 1.3.30
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: Speedscale Operator
@@ -50583,6 +51228,32 @@ entries:
     - assets/sumologic/sumologic-2.17.0.tgz
     version: 2.17.0
   sysdig:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Sysdig
+      catalog.cattle.io/release-name: sysdig
+    apiVersion: v1
+    appVersion: 12.16.0
+    created: "2023-09-07T17:00:51.675717807Z"
+    deprecated: true
+    description: Sysdig Monitor and Secure agent
+    digest: 10a9f4572bdd7dd2c296e6da481505c1fcdc6cb69ce38f243d1b8030263c99b0
+    home: https://www.sysdig.com/
+    icon: https://avatars.githubusercontent.com/u/5068817?s=200&v=4
+    keywords:
+    - monitoring
+    - security
+    - alerting
+    - metric
+    - troubleshooting
+    - run-time
+    name: sysdig
+    sources:
+    - https://app.sysdigcloud.com/#/settings/user
+    - https://github.com/draios/sysdig
+    urls:
+    - assets/sysdig/sysdig-1.16.11.tgz
+    version: 1.16.11
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: Sysdig
@@ -51986,6 +52657,51 @@ entries:
     - assets/intel/tcs-issuer-0.1.0.tgz
     version: 0.1.0
   tomcat:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: Apache Tomcat
+      catalog.cattle.io/kube-version: '>=1.19-0'
+      catalog.cattle.io/release-name: tomcat
+      category: ApplicationServer
+      images: |
+        - name: jmx-exporter
+          image: docker.io/bitnami/jmx-exporter:0.19.0-debian-11-r54
+        - name: os-shell
+          image: docker.io/bitnami/os-shell:11-debian-11-r48
+        - name: tomcat
+          image: docker.io/bitnami/tomcat:10.1.13-debian-11-r0
+      licenses: Apache-2.0
+    apiVersion: v2
+    appVersion: 10.1.13
+    created: "2023-09-07T17:00:42.96134836Z"
+    dependencies:
+    - name: common
+      repository: file://./charts/common
+      tags:
+      - bitnami-common
+      version: 2.x.x
+    description: Apache Tomcat is an open-source web server designed to host and run
+      Java-based web applications. It is a lightweight server with a good performance
+      for applications running in production environments.
+    digest: 1c9e1240da1d2342221f7b1ae1ce4caf68a03a412e9aefdb6918ef6c879f0c28
+    home: https://bitnami.com
+    icon: https://svn.apache.org/repos/asf/comdev/project-logos/originals/tomcat.svg
+    keywords:
+    - tomcat
+    - java
+    - http
+    - web
+    - application server
+    - jsp
+    maintainers:
+    - name: VMware, Inc.
+      url: https://github.com/bitnami/charts
+    name: tomcat
+    sources:
+    - https://github.com/bitnami/charts/tree/main/bitnami/tomcat
+    urls:
+    - assets/bitnami/tomcat-10.10.3.tgz
+    version: 10.10.3
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: Apache Tomcat
@@ -55256,6 +55972,60 @@ entries:
     - assets/hashicorp/vault-0.22.0.tgz
     version: 0.22.0
   wordpress:
+  - annotations:
+      catalog.cattle.io/certified: partner
+      catalog.cattle.io/display-name: WordPress
+      catalog.cattle.io/kube-version: '>=1.19-0'
+      catalog.cattle.io/release-name: wordpress
+      category: CMS
+      images: |
+        - name: apache-exporter
+          image: docker.io/bitnami/apache-exporter:1.0.1-debian-11-r32
+        - name: os-shell
+          image: docker.io/bitnami/os-shell:11-debian-11-r54
+        - name: wordpress
+          image: docker.io/bitnami/wordpress:6.3.1-debian-11-r2
+      licenses: Apache-2.0
+    apiVersion: v2
+    appVersion: 6.3.1
+    created: "2023-09-07T17:00:44.171480254Z"
+    dependencies:
+    - condition: memcached.enabled
+      name: memcached
+      repository: file://./charts/memcached
+      version: 6.x.x
+    - condition: mariadb.enabled
+      name: mariadb
+      repository: file://./charts/mariadb
+      version: 13.x.x
+    - name: common
+      repository: file://./charts/common
+      tags:
+      - bitnami-common
+      version: 2.x.x
+    description: WordPress is the world's most popular blogging and content management
+      platform. Powerful yet simple, everyone from students to global corporations
+      use it to build beautiful, functional websites.
+    digest: 7d6d5310736e8e7946fad5dd0307c1ceaed7d0dad9f16fabe65775cc1567172d
+    home: https://bitnami.com
+    icon: https://s.w.org/style/images/about/WordPress-logotype-simplified.png
+    keywords:
+    - application
+    - blog
+    - cms
+    - http
+    - php
+    - web
+    - wordpress
+    maintainers:
+    - name: VMware, Inc.
+      url: https://github.com/bitnami/charts
+    name: wordpress
+    sources:
+    - https://github.com/bitnami/charts/tree/main/bitnami/wordpress
+    urls:
+    - assets/bitnami/wordpress-17.1.7.tgz
+    version: 17.1.7
   - annotations:
       catalog.cattle.io/certified: partner
       catalog.cattle.io/display-name: WordPress