From d3b7989ccbe24f276a68869ad2c7b0eb00609f39 Mon Sep 17 00:00:00 2001 From: Kyrre Havik Date: Mon, 7 Jul 2025 12:33:09 +0200 Subject: [PATCH 1/2] feat: run extraVolumes through templating We wanted to add custom error pages for our load balancer, and since each load balancer depence on their own ingress-nginx we need to be able to template the volume configmap. ``` extraVolumes: - name: custom-error-pages configMap: name: "{{ .Release.Name }}-custom-error-pages" ``` Now gives us: ``` volumes: - configMap: name: '{{ .Release.Name }}-custom-error-pages' ``` --- .../templates/default-backend-deployment.yaml | 2 +- .../default-backend-deployment_test.yaml | 29 +++++++++++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/charts/ingress-nginx/templates/default-backend-deployment.yaml b/charts/ingress-nginx/templates/default-backend-deployment.yaml index 75c3d09cbf..a25dd4e247 100644 --- a/charts/ingress-nginx/templates/default-backend-deployment.yaml +++ b/charts/ingress-nginx/templates/default-backend-deployment.yaml @@ -118,6 +118,6 @@ spec: {{- end }} terminationGracePeriodSeconds: 60 {{- if .Values.defaultBackend.extraVolumes }} - volumes: {{ toYaml .Values.defaultBackend.extraVolumes | nindent 8 }} + volumes: {{ tpl (toYaml .Values.defaultBackend.extraVolumes) $ | nindent 8 }} {{- end }} {{- end }} diff --git a/charts/ingress-nginx/tests/default-backend-deployment_test.yaml b/charts/ingress-nginx/tests/default-backend-deployment_test.yaml index 11d400c462..6804cb7945 100644 --- a/charts/ingress-nginx/tests/default-backend-deployment_test.yaml +++ b/charts/ingress-nginx/tests/default-backend-deployment_test.yaml @@ -59,7 +59,7 @@ tests: - labelSelector: matchLabels: app.kubernetes.io/name: '{{ include "ingress-nginx.name" . }}' - app.kubernetes.io/instance: '{{ .Release.Name }}' + app.kubernetes.io/instance: "{{ .Release.Name }}" app.kubernetes.io/component: default-backend topologyKey: topology.kubernetes.io/zone maxSkew: 1 @@ -67,7 +67,7 @@ tests: - labelSelector: matchLabels: app.kubernetes.io/name: '{{ include "ingress-nginx.name" . }}' - app.kubernetes.io/instance: '{{ .Release.Name }}' + app.kubernetes.io/instance: "{{ .Release.Name }}" app.kubernetes.io/component: default-backend topologyKey: kubernetes.io/hostname maxSkew: 1 @@ -108,7 +108,7 @@ tests: - key: app.kubernetes.io/instance operator: In values: - - '{{ .Release.Name }}' + - "{{ .Release.Name }}" - key: app.kubernetes.io/component operator: In values: @@ -196,3 +196,26 @@ tests: - equal: path: spec.template.spec.automountServiceAccountToken value: false + + - it: should create a Deployment with extra volumes if `defaultBackend.extraVolumes` is set + set: + defaultBackend.enabled: true + defaultBackend.extraVolumes: + - name: extra-volume + configMap: + name: "{{ .Release.Name }}" + defaultBackend.extraVolumeMounts: + - name: extra-volume + mountPath: /extra + asserts: + - equal: + path: spec.template.spec.volumes + value: + - name: extra-volume + configMap: + name: RELEASE-NAME + - equal: + path: spec.template.spec.containers[0].volumeMounts + value: + - name: extra-volume + mountPath: /extra From 46fd00f9eb31bb3560129ed007c4c3704053b7fc Mon Sep 17 00:00:00 2001 From: Kyrre Havik Date: Mon, 7 Jul 2025 13:24:26 +0200 Subject: [PATCH 2/2] format: switched to single quote --- .../tests/default-backend-deployment_test.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/charts/ingress-nginx/tests/default-backend-deployment_test.yaml b/charts/ingress-nginx/tests/default-backend-deployment_test.yaml index 6804cb7945..ed3bb87417 100644 --- a/charts/ingress-nginx/tests/default-backend-deployment_test.yaml +++ b/charts/ingress-nginx/tests/default-backend-deployment_test.yaml @@ -59,7 +59,7 @@ tests: - labelSelector: matchLabels: app.kubernetes.io/name: '{{ include "ingress-nginx.name" . }}' - app.kubernetes.io/instance: "{{ .Release.Name }}" + app.kubernetes.io/instance: '{{ .Release.Name }}' app.kubernetes.io/component: default-backend topologyKey: topology.kubernetes.io/zone maxSkew: 1 @@ -67,7 +67,7 @@ tests: - labelSelector: matchLabels: app.kubernetes.io/name: '{{ include "ingress-nginx.name" . }}' - app.kubernetes.io/instance: "{{ .Release.Name }}" + app.kubernetes.io/instance: '{{ .Release.Name }}' app.kubernetes.io/component: default-backend topologyKey: kubernetes.io/hostname maxSkew: 1 @@ -108,7 +108,7 @@ tests: - key: app.kubernetes.io/instance operator: In values: - - "{{ .Release.Name }}" + - '{{ .Release.Name }}' - key: app.kubernetes.io/component operator: In values: @@ -203,7 +203,7 @@ tests: defaultBackend.extraVolumes: - name: extra-volume configMap: - name: "{{ .Release.Name }}" + name: '{{ .Release.Name }}' defaultBackend.extraVolumeMounts: - name: extra-volume mountPath: /extra