feature(ingress_nginx) Add ingressclass for ingress_nginx (#10091)

Add option to configure class as the default class
Add option to disable wathcing for ingresses without class

Remove redundant if that always evaluates to true

Fix default value missing for ingress_nginx_default
pull/10128/head
Mathias Petermann 2023-05-24 13:12:50 +02:00 committed by GitHub
parent 4014a1cccb
commit 862fd2c5c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 22 additions and 5 deletions

View File

@ -125,6 +125,8 @@ ingress_publish_status_address: ""
# - --default-ssl-certificate=default/foo-tls # - --default-ssl-certificate=default/foo-tls
# ingress_nginx_termination_grace_period_seconds: 300 # ingress_nginx_termination_grace_period_seconds: 300
# ingress_nginx_class: nginx # ingress_nginx_class: nginx
# ingress_nginx_without_class: true
# ingress_nginx_default: false
# ALB ingress controller deployment # ALB ingress controller deployment
ingress_alb_enabled: false ingress_alb_enabled: false

View File

@ -13,7 +13,9 @@ ingress_nginx_configmap_tcp_services: {}
ingress_nginx_configmap_udp_services: {} ingress_nginx_configmap_udp_services: {}
ingress_nginx_extra_args: [] ingress_nginx_extra_args: []
ingress_nginx_termination_grace_period_seconds: 300 ingress_nginx_termination_grace_period_seconds: 300
# ingress_nginx_class: nginx ingress_nginx_class: nginx
ingress_nginx_without_class: true
ingress_nginx_default: false
ingress_nginx_webhook_enabled: false ingress_nginx_webhook_enabled: false
ingress_nginx_webhook_job_ttl: 1800 ingress_nginx_webhook_job_ttl: 1800

View File

@ -22,6 +22,7 @@
- { name: clusterrolebinding-ingress-nginx, file: clusterrolebinding-ingress-nginx.yml, type: clusterrolebinding } - { name: clusterrolebinding-ingress-nginx, file: clusterrolebinding-ingress-nginx.yml, type: clusterrolebinding }
- { name: role-ingress-nginx, file: role-ingress-nginx.yml, type: role } - { name: role-ingress-nginx, file: role-ingress-nginx.yml, type: role }
- { name: rolebinding-ingress-nginx, file: rolebinding-ingress-nginx.yml, type: rolebinding } - { name: rolebinding-ingress-nginx, file: rolebinding-ingress-nginx.yml, type: rolebinding }
- { name: ingressclass-nginx, file: ingressclass-nginx.yml, type: ingressclass }
- { name: ds-ingress-nginx-controller, file: ds-ingress-nginx-controller.yml, type: ds } - { name: ds-ingress-nginx-controller, file: ds-ingress-nginx-controller.yml, type: ds }
ingress_nginx_templates_for_webhook: ingress_nginx_templates_for_webhook:
- { name: admission-webhook-configuration, file: admission-webhook-configuration.yml, type: sa } - { name: admission-webhook-configuration, file: admission-webhook-configuration.yml, type: sa }

View File

@ -51,9 +51,8 @@ spec:
- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services - --udp-services-configmap=$(POD_NAMESPACE)/udp-services
- --annotations-prefix=nginx.ingress.kubernetes.io - --annotations-prefix=nginx.ingress.kubernetes.io
{% if ingress_nginx_class is defined %}
- --ingress-class={{ ingress_nginx_class }} - --ingress-class={{ ingress_nginx_class }}
{% else %} {% if ingress_nginx_without_class %}
- --watch-ingress-without-class=true - --watch-ingress-without-class=true
{% endif %} {% endif %}
{% if ingress_nginx_host_network %} {% if ingress_nginx_host_network %}

View File

@ -0,0 +1,13 @@
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: {{ ingress_nginx_class }}
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
{% if ingress_nginx_default %}
annotations:
ingressclass.kubernetes.io/is-default-class: "true"
{%- endif %}
spec:
controller: k8s.io/ingress-nginx

View File

@ -32,7 +32,7 @@ rules:
# Here: "<ingress-controller-leader>-<nginx>" # Here: "<ingress-controller-leader>-<nginx>"
# This has to be adapted if you change either parameter # This has to be adapted if you change either parameter
# when launching the nginx-ingress-controller. # when launching the nginx-ingress-controller.
resourceNames: [{% if ingress_class is defined %}"ingress-controller-leader-{{ ingress_nginx_class | default('nginx') }}"{% else %}"ingress-controller-leader"{% endif %}] resourceNames: ["ingress-controller-leader-{{ ingress_nginx_class }}"]
verbs: ["get", "update"] verbs: ["get", "update"]
- apiGroups: [""] - apiGroups: [""]
resources: ["events"] resources: ["events"]
@ -43,7 +43,7 @@ rules:
# Here: "<ingress-controller-leader>-<nginx>" # Here: "<ingress-controller-leader>-<nginx>"
# This has to be adapted if you change either parameter # This has to be adapted if you change either parameter
# when launching the nginx-ingress-controller. # when launching the nginx-ingress-controller.
resourceNames: [{% if ingress_class is defined %}"ingress-controller-leader-{{ ingress_nginx_class | default('nginx') }}"{% else %}"ingress-controller-leader"{% endif %}] resourceNames: ["ingress-controller-leader-{{ ingress_nginx_class }}"]
verbs: ["get", "update"] verbs: ["get", "update"]
- apiGroups: ["coordination.k8s.io"] - apiGroups: ["coordination.k8s.io"]
resources: ["leases"] resources: ["leases"]