From c6602ee829f7c6e86fa0271b8832a8551d51d49f Mon Sep 17 00:00:00 2001 From: TheRealNoob Date: Wed, 12 Jun 2024 16:03:47 -0500 Subject: [PATCH] update formatting of unittests + add README examples --- .../tests/controller-daemonset_test.yaml | 30 +++++------ .../tests/controller-deployment_test.yaml | 50 ++++++++++--------- .../default-backend-deployment_test.yaml | 50 ++++++++++--------- charts/ingress-nginx/values.yaml | 42 +++++++++++++++- 4 files changed, 110 insertions(+), 62 deletions(-) diff --git a/charts/ingress-nginx/tests/controller-daemonset_test.yaml b/charts/ingress-nginx/tests/controller-daemonset_test.yaml index a77ac1051..95be5892d 100644 --- a/charts/ingress-nginx/tests/controller-daemonset_test.yaml +++ b/charts/ingress-nginx/tests/controller-daemonset_test.yaml @@ -102,21 +102,21 @@ tests: controller.affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/name - operator: In - values: - - '{{ include "ingress-nginx.name" . }}' - - key: app.kubernetes.io/instance - operator: In - values: - - "{{ .Release.Name }}" - - key: app.kubernetes.io/component - operator: In - values: - - controller - topologyKey: "kubernetes.io/hostname" + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - '{{ include "ingress-nginx.name" . }}' + - key: app.kubernetes.io/instance + operator: In + values: + - '{{ .Release.Name }}' + - key: app.kubernetes.io/component + operator: In + values: + - controller + topologyKey: "kubernetes.io/hostname" asserts: - equal: path: spec.template.spec.affinity diff --git a/charts/ingress-nginx/tests/controller-deployment_test.yaml b/charts/ingress-nginx/tests/controller-deployment_test.yaml index daa3d587e..895fdf835 100644 --- a/charts/ingress-nginx/tests/controller-deployment_test.yaml +++ b/charts/ingress-nginx/tests/controller-deployment_test.yaml @@ -121,38 +121,42 @@ tests: - it: should create a Deployment with affinity if `controller.affinity` is set set: - controller.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/name - operator: In - values: - - '{{ include "ingress-nginx.name" . }}' - - key: app.kubernetes.io/instance - operator: In - values: - - "{{ .Release.Name }}" - - key: app.kubernetes.io/component - operator: In - values: - - controller - topologyKey: "kubernetes.io/hostname" - asserts: - - equal: - path: spec.template.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution - value: + controller.affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - - ingress-nginx + - '{{ include "ingress-nginx.name" . }}' - key: app.kubernetes.io/instance operator: In values: - - RELEASE-NAME + - '{{ .Release.Name }}' - key: app.kubernetes.io/component operator: In values: - controller - topologyKey: kubernetes.io/hostname + topologyKey: "kubernetes.io/hostname" + asserts: + - equal: + path: spec.template.spec.affinity + value: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - ingress-nginx + - key: app.kubernetes.io/instance + operator: In + values: + - RELEASE-NAME + - key: app.kubernetes.io/component + operator: In + values: + - controller + topologyKey: kubernetes.io/hostname diff --git a/charts/ingress-nginx/tests/default-backend-deployment_test.yaml b/charts/ingress-nginx/tests/default-backend-deployment_test.yaml index 9a325a61c..14bf23752 100644 --- a/charts/ingress-nginx/tests/default-backend-deployment_test.yaml +++ b/charts/ingress-nginx/tests/default-backend-deployment_test.yaml @@ -96,38 +96,42 @@ tests: - it: should create a Deployment with affinity if `defaultBackend.affinity` is set set: defaultBackend.enabled: true - defaultBackend.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/name - operator: In - values: - - '{{ include "ingress-nginx.name" . }}' - - key: app.kubernetes.io/instance - operator: In - values: - - "{{ .Release.Name }}" - - key: app.kubernetes.io/component - operator: In - values: - - controller - topologyKey: "kubernetes.io/hostname" - asserts: - - equal: - path: spec.template.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution - value: + defaultBackend.affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - - ingress-nginx + - '{{ include "ingress-nginx.name" . }}' - key: app.kubernetes.io/instance operator: In values: - - RELEASE-NAME + - '{{ .Release.Name }}' - key: app.kubernetes.io/component operator: In values: - controller - topologyKey: kubernetes.io/hostname + topologyKey: "kubernetes.io/hostname" + asserts: + - equal: + path: spec.template.spec.affinity + value: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - ingress-nginx + - key: app.kubernetes.io/instance + operator: In + values: + - RELEASE-NAME + - key: app.kubernetes.io/component + operator: In + values: + - controller + topologyKey: kubernetes.io/hostname diff --git a/charts/ingress-nginx/values.yaml b/charts/ingress-nginx/values.yaml index df911b3dd..a1cb54149 100644 --- a/charts/ingress-nginx/values.yaml +++ b/charts/ingress-nginx/values.yaml @@ -264,7 +264,7 @@ controller: # - key: app.kubernetes.io/instance # operator: In # values: - # - "{{ .Release.Name }}" + # - '{{ .Release.Name }}' # - key: app.kubernetes.io/component # operator: In # values: @@ -1014,6 +1014,46 @@ defaultBackend: # -- Affinity and anti-affinity rules for server scheduling to nodes ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity affinity: {} + # # An example of preferred pod anti-affinity, weight is in the range 1-100 + # podAntiAffinity: + # preferredDuringSchedulingIgnoredDuringExecution: + # - weight: 100 + # podAffinityTerm: + # labelSelector: + # matchExpressions: + # - key: app.kubernetes.io/name + # operator: In + # values: + # - '{{ include "ingress-nginx.name" . }}' + # - key: app.kubernetes.io/instance + # operator: In + # values: + # - '{{ .Release.Name }}' + # - key: app.kubernetes.io/component + # operator: In + # values: + # - controller + # topologyKey: kubernetes.io/hostname + + # # An example of required pod anti-affinity + # podAntiAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # - labelSelector: + # matchExpressions: + # - key: app.kubernetes.io/name + # operator: In + # values: + # - '{{ include "ingress-nginx.name" . }}' + # - key: app.kubernetes.io/instance + # operator: In + # values: + # - '{{ .Release.Name }}' + # - key: app.kubernetes.io/component + # operator: In + # values: + # - controller + # topologyKey: "kubernetes.io/hostname" + # -- Topology spread constraints rely on node labels to identify the topology domain(s) that each Node is in. # Ref.: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ topologySpreadConstraints: []