From 9480cde724d167c3246563586b5aaae86d26de00 Mon Sep 17 00:00:00 2001 From: Marco Ebert Date: Tue, 12 Mar 2024 14:43:51 +0100 Subject: [PATCH] Chart: Align HPA & KEDA conditions. (#11110) --- .../templates/controller-deployment.yaml | 2 +- .../templates/controller-keda.yaml | 2 +- .../controller-poddisruptionbudget.yaml | 8 +++++-- .../tests/controller-deployment_test.yaml | 22 +++++++++++++++++++ .../tests/controller-hpa_test.yaml | 18 +++++++++++++-- .../tests/controller-keda_test.yaml | 18 +++++++++++++-- .../controller-poddisruptionbudget_test.yaml | 8 +++++++ 7 files changed, 70 insertions(+), 8 deletions(-) diff --git a/charts/ingress-nginx/templates/controller-deployment.yaml b/charts/ingress-nginx/templates/controller-deployment.yaml index 5ff45585b..879802779 100644 --- a/charts/ingress-nginx/templates/controller-deployment.yaml +++ b/charts/ingress-nginx/templates/controller-deployment.yaml @@ -19,7 +19,7 @@ spec: matchLabels: {{- include "ingress-nginx.selectorLabels" . | nindent 6 }} app.kubernetes.io/component: controller - {{- if not (or .Values.controller.autoscaling.enabled .Values.controller.keda.enabled) }} + {{- if eq .Values.controller.autoscaling.enabled .Values.controller.keda.enabled }} replicas: {{ .Values.controller.replicaCount }} {{- end }} revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} diff --git a/charts/ingress-nginx/templates/controller-keda.yaml b/charts/ingress-nginx/templates/controller-keda.yaml index 6ff9c0b22..24d30fa0a 100644 --- a/charts/ingress-nginx/templates/controller-keda.yaml +++ b/charts/ingress-nginx/templates/controller-keda.yaml @@ -1,4 +1,4 @@ -{{- if and .Values.controller.keda.enabled (eq .Values.controller.kind "Deployment") -}} +{{- if and (eq .Values.controller.kind "Deployment") .Values.controller.keda.enabled (not .Values.controller.autoscaling.enabled) -}} apiVersion: {{ .Values.controller.keda.apiVersion }} kind: ScaledObject metadata: diff --git a/charts/ingress-nginx/templates/controller-poddisruptionbudget.yaml b/charts/ingress-nginx/templates/controller-poddisruptionbudget.yaml index fe142a346..8e0181f9f 100644 --- a/charts/ingress-nginx/templates/controller-poddisruptionbudget.yaml +++ b/charts/ingress-nginx/templates/controller-poddisruptionbudget.yaml @@ -1,7 +1,10 @@ +# PDB is not supported for DaemonSets. +# https://github.com/kubernetes/kubernetes/issues/108124 +{{- if eq .Values.controller.kind "Deployment" }} {{- $replicas := .Values.controller.replicaCount }} -{{- if .Values.controller.autoscaling.enabled }} +{{- if and .Values.controller.autoscaling.enabled (not .Values.controller.keda.enabled) }} {{- $replicas = .Values.controller.autoscaling.minReplicas }} -{{- else if .Values.controller.keda.enabled }} +{{- else if and .Values.controller.keda.enabled (not .Values.controller.autoscaling.enabled) }} {{- $replicas = .Values.controller.keda.minReplicas }} {{- end }} {{- if gt ($replicas | int) 1 }} @@ -30,3 +33,4 @@ spec: maxUnavailable: {{ .Values.controller.maxUnavailable }} {{- end }} {{- end }} +{{- end }} diff --git a/charts/ingress-nginx/tests/controller-deployment_test.yaml b/charts/ingress-nginx/tests/controller-deployment_test.yaml index 86d5828c0..3af5ba981 100644 --- a/charts/ingress-nginx/tests/controller-deployment_test.yaml +++ b/charts/ingress-nginx/tests/controller-deployment_test.yaml @@ -21,6 +21,28 @@ tests: path: spec.replicas value: 3 + - it: should create a Deployment without replicas if `controller.autoscaling.enabled` is true + set: + controller.autoscaling.enabled: true + asserts: + - notExists: + path: spec.replicas + + - it: should create a Deployment without replicas if `controller.keda.enabled` is true + set: + controller.keda.enabled: true + asserts: + - notExists: + path: spec.replicas + + - it: should create a Deployment with replicas if `controller.autoscaling.enabled` is true and `controller.keda.enabled` is true + set: + controller.autoscaling.enabled: true + controller.keda.enabled: true + asserts: + - exists: + path: spec.replicas + - it: should create a Deployment with argument `--enable-metrics=false` if `controller.metrics.enabled` is false set: controller.metrics.enabled: false diff --git a/charts/ingress-nginx/tests/controller-hpa_test.yaml b/charts/ingress-nginx/tests/controller-hpa_test.yaml index 7cd668509..869d3a690 100644 --- a/charts/ingress-nginx/tests/controller-hpa_test.yaml +++ b/charts/ingress-nginx/tests/controller-hpa_test.yaml @@ -3,9 +3,8 @@ templates: - controller-hpa.yaml tests: - - it: should create a HPA if `controller.kind` is "Deployment" and `controller.autoscaling.enabled` is true + - it: should create an HPA if `controller.autoscaling.enabled` is true set: - controller.kind: Deployment controller.autoscaling.enabled: true asserts: - hasDocuments: @@ -15,3 +14,18 @@ tests: - equal: path: metadata.name value: RELEASE-NAME-ingress-nginx-controller + + - it: should not create an HPA if `controller.autoscaling.enabled` is true and `controller.keda.enabled` is true + set: + controller.autoscaling.enabled: true + controller.keda.enabled: true + asserts: + - hasDocuments: + count: 0 + + - it: should not create an HPA if `controller.kind` is "DaemonSet" + set: + controller.kind: DaemonSet + asserts: + - hasDocuments: + count: 0 diff --git a/charts/ingress-nginx/tests/controller-keda_test.yaml b/charts/ingress-nginx/tests/controller-keda_test.yaml index e6ca8dbfe..800283483 100644 --- a/charts/ingress-nginx/tests/controller-keda_test.yaml +++ b/charts/ingress-nginx/tests/controller-keda_test.yaml @@ -3,9 +3,8 @@ templates: - controller-keda.yaml tests: - - it: should create a ScaledObject if `controller.kind` is "Deployment" and `controller.keda.enabled` is true + - it: should create a ScaledObject if `controller.keda.enabled` is true set: - controller.kind: Deployment controller.keda.enabled: true asserts: - hasDocuments: @@ -15,3 +14,18 @@ tests: - equal: path: metadata.name value: RELEASE-NAME-ingress-nginx-controller + + - it: should not create a ScaledObject if `controller.keda.enabled` is true and `controller.autoscaling.enabled` is true + set: + controller.keda.enabled: true + controller.autoscaling.enabled: true + asserts: + - hasDocuments: + count: 0 + + - it: should not create a ScaledObject if `controller.kind` is "DaemonSet" + set: + controller.kind: DaemonSet + asserts: + - hasDocuments: + count: 0 diff --git a/charts/ingress-nginx/tests/controller-poddisruptionbudget_test.yaml b/charts/ingress-nginx/tests/controller-poddisruptionbudget_test.yaml index 3055d5351..48b4fafcc 100644 --- a/charts/ingress-nginx/tests/controller-poddisruptionbudget_test.yaml +++ b/charts/ingress-nginx/tests/controller-poddisruptionbudget_test.yaml @@ -63,3 +63,11 @@ tests: asserts: - hasDocuments: count: 0 + + - it: should not create a PodDisruptionBudget if `controller.autoscaling.enabled` is true and `controller.keda.enabled` is true + set: + controller.autoscaling.enabled: true + controller.keda.enabled: true + asserts: + - hasDocuments: + count: 0