From 5f1cf09f0e0fc98f4b9f54a5832b0dcfc3d682ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Werner?= Date: Fri, 16 Dec 2022 09:09:04 +0100 Subject: [PATCH] Admission webhook: properly check that there is no overlapping ingress MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes https://github.com/kubernetes/ingress-nginx/issues/8972 Signed-off-by: Hervé Werner --- internal/ingress/controller/controller.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/internal/ingress/controller/controller.go b/internal/ingress/controller/controller.go index a77d2ff37..0e908c9ed 100644 --- a/internal/ingress/controller/controller.go +++ b/internal/ingress/controller/controller.go @@ -1738,6 +1738,7 @@ func checkOverlap(ing *networking.Ingress, ingresses []*ingress.Ingress, servers rule.Host = defServerName } + OUTER: for _, path := range rule.HTTP.Paths { if path.Backend.Service == nil { // skip non-service backends @@ -1759,7 +1760,7 @@ func checkOverlap(ing *networking.Ingress, ingresses []*ingress.Ingress, servers // same ingress for _, existing := range existingIngresses { if existing.ObjectMeta.Namespace == ing.ObjectMeta.Namespace && existing.ObjectMeta.Name == ing.ObjectMeta.Name { - return nil + continue OUTER } } @@ -1776,9 +1777,6 @@ func checkOverlap(ing *networking.Ingress, ingresses []*ingress.Ingress, servers return fmt.Errorf(`host "%s" and path "%s" is already defined in ingress %s/%s`, rule.Host, path.Path, existing.Namespace, existing.Name) } } - - // no overlap - return nil } }