From cec3c0af3d713319749641a4b714688d610c8b9e Mon Sep 17 00:00:00 2001 From: Christian Rebischke Date: Sat, 19 Jun 2021 01:16:42 +0200 Subject: [PATCH] helm: add new ingressClass resource (#6882) * helm: add new ingressClass resource * add ingress parameters support This commit adds ingress parameters support. Credits go to Ariel Vinas: ariel@craftech.io --- charts/ingress-nginx/templates/_helpers.tpl | 10 ++++++++ .../templates/controller-ingressclass.yaml | 23 +++++++++++++++++++ charts/ingress-nginx/values.yaml | 11 +++++++++ 3 files changed, 44 insertions(+) create mode 100644 charts/ingress-nginx/templates/controller-ingressclass.yaml diff --git a/charts/ingress-nginx/templates/_helpers.tpl b/charts/ingress-nginx/templates/_helpers.tpl index b48bf4a4a..8b1fd0951 100644 --- a/charts/ingress-nginx/templates/_helpers.tpl +++ b/charts/ingress-nginx/templates/_helpers.tpl @@ -122,3 +122,13 @@ Check the ingress controller version tag is at most three versions behind the la {{- fail "Controller container image tag should be 0.27.0 or higher" -}} {{- end -}} {{- end -}} + +{{/* +IngressClass parameters. +*/}} +{{- define "ingressClass.parameters" -}} + {{- if .Values.controller.ingressClassResource.parameters -}} + parameters: +{{ toYaml .Values.controller.ingressClassResource.parameters | indent 4}} + {{ end }} +{{- end -}} diff --git a/charts/ingress-nginx/templates/controller-ingressclass.yaml b/charts/ingress-nginx/templates/controller-ingressclass.yaml new file mode 100644 index 000000000..f94b9590d --- /dev/null +++ b/charts/ingress-nginx/templates/controller-ingressclass.yaml @@ -0,0 +1,23 @@ +{{- if and (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) (.Values.controller.ingressClassResource.enabled) -}} +{{- if and (semverCompare "=1.18-0" .Capabilities.KubeVersion.GitVersion) }} +apiVersion: networking.k8s.io/v1beta1 +{{- else }} +apiVersion: networking.k8s.io/v1 +{{- end }} +kind: IngressClass +metadata: + labels: + {{- include "ingress-nginx.labels" . | nindent 4 }} + app.kubernetes.io/component: controller + {{- with .Values.controller.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + name: {{ .Values.controller.ingressClass }} +{{- if .Values.controller.ingressClassResource.default }} + annotations: + ingressclass.kubernetes.io/is-default-class: "true" +{{- end }} +spec: + controller: k8s.io/ingress-nginx + {{ template "ingressClass.parameters" . }} +{{- end }} diff --git a/charts/ingress-nginx/values.yaml b/charts/ingress-nginx/values.yaml index 42fe0c77e..460b19884 100644 --- a/charts/ingress-nginx/values.yaml +++ b/charts/ingress-nginx/values.yaml @@ -80,6 +80,17 @@ controller: ## ingressClass: nginx + # This section refers to the creation of the IngressClass resource + # IngressClass resources are supported since k8s >= 1.18 + ingressClassResource: + enabled: false + default: false + + # Parameters is a link to a custom resource containing additional + # configuration for the controller. This is optional if the controller + # does not require extra parameters. + parameters: {} + # labels to add to the pod container metadata podLabels: {} # key: value