From ef03ed5875f5ad24f8aa1900dbf4ae1d4c674522 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 3 Dec 2025 16:06:06 +0100 Subject: [PATCH] Fix the service name for ingress-nginx provider --- .../kubernetes/ingress-nginx/kubernetes.go | 2 +- .../ingress-nginx/kubernetes_test.go | 68 ++++++++++++++----- 2 files changed, 52 insertions(+), 18 deletions(-) diff --git a/pkg/provider/kubernetes/ingress-nginx/kubernetes.go b/pkg/provider/kubernetes/ingress-nginx/kubernetes.go index 15de19cc3..c15b4d594 100644 --- a/pkg/provider/kubernetes/ingress-nginx/kubernetes.go +++ b/pkg/provider/kubernetes/ingress-nginx/kubernetes.go @@ -453,7 +453,7 @@ func (p *Provider) loadConfiguration(ctx context.Context) *dynamic.Configuration } // TODO: if no service, do not add middlewares and 503. - serviceName := provider.Normalize(ingress.Namespace + "-" + pa.Backend.Service.Name + "-" + portString) + serviceName := provider.Normalize(ingress.Namespace + "-" + ingress.Name + "-" + pa.Backend.Service.Name + "-" + portString) service, err := p.buildService(ingress.Namespace, pa.Backend, ingressConfig) if err != nil { diff --git a/pkg/provider/kubernetes/ingress-nginx/kubernetes_test.go b/pkg/provider/kubernetes/ingress-nginx/kubernetes_test.go index b153064c7..8faba81fb 100644 --- a/pkg/provider/kubernetes/ingress-nginx/kubernetes_test.go +++ b/pkg/provider/kubernetes/ingress-nginx/kubernetes_test.go @@ -64,7 +64,7 @@ func TestLoadIngresses(t *testing.T) { Rule: "Host(`whoami.localhost`) && Path(`/basicauth`)", RuleSyntax: "default", Middlewares: []string{"default-ingress-with-basicauth-rule-0-path-0-basic-auth"}, - Service: "default-whoami-80", + Service: "default-ingress-with-basicauth-whoami-80", }, }, Middlewares: map[string]*dynamic.Middleware{ @@ -78,7 +78,7 @@ func TestLoadIngresses(t *testing.T) { }, }, Services: map[string]*dynamic.Service{ - "default-whoami-80": { + "default-ingress-with-basicauth-whoami-80": { LoadBalancer: &dynamic.ServersLoadBalancer{ Servers: []dynamic.Server{ { @@ -119,7 +119,7 @@ func TestLoadIngresses(t *testing.T) { Rule: "Host(`whoami.localhost`) && Path(`/forwardauth`)", RuleSyntax: "default", Middlewares: []string{"default-ingress-with-forwardauth-rule-0-path-0-forward-auth"}, - Service: "default-whoami-80", + Service: "default-ingress-with-forwardauth-whoami-80", }, }, Middlewares: map[string]*dynamic.Middleware{ @@ -131,7 +131,7 @@ func TestLoadIngresses(t *testing.T) { }, }, Services: map[string]*dynamic.Service{ - "default-whoami-80": { + "default-ingress-with-forwardauth-whoami-80": { LoadBalancer: &dynamic.ServersLoadBalancer{ Servers: []dynamic.Server{ { @@ -173,7 +173,7 @@ func TestLoadIngresses(t *testing.T) { Rule: "Host(`sslredirect.localhost`) && Path(`/`)", RuleSyntax: "default", TLS: &dynamic.RouterTLSConfig{}, - Service: "default-whoami-80", + Service: "default-ingress-with-ssl-redirect-whoami-80", }, "default-ingress-with-ssl-redirect-rule-0-path-0-redirect": { Rule: "Host(`sslredirect.localhost`) && Path(`/`)", @@ -184,18 +184,18 @@ func TestLoadIngresses(t *testing.T) { "default-ingress-without-ssl-redirect-rule-0-path-0-http": { Rule: "Host(`withoutsslredirect.localhost`) && Path(`/`)", RuleSyntax: "default", - Service: "default-whoami-80", + Service: "default-ingress-without-ssl-redirect-whoami-80", }, "default-ingress-without-ssl-redirect-rule-0-path-0": { Rule: "Host(`withoutsslredirect.localhost`) && Path(`/`)", RuleSyntax: "default", TLS: &dynamic.RouterTLSConfig{}, - Service: "default-whoami-80", + Service: "default-ingress-without-ssl-redirect-whoami-80", }, "default-ingress-with-force-ssl-redirect-rule-0-path-0": { Rule: "Host(`forcesslredirect.localhost`) && Path(`/`)", RuleSyntax: "default", - Service: "default-whoami-80", + Service: "default-ingress-with-force-ssl-redirect-whoami-80", }, "default-ingress-with-force-ssl-redirect-rule-0-path-0-redirect": { Rule: "Host(`forcesslredirect.localhost`) && Path(`/`)", @@ -219,7 +219,41 @@ func TestLoadIngresses(t *testing.T) { }, }, Services: map[string]*dynamic.Service{ - "default-whoami-80": { + "default-ingress-with-ssl-redirect-whoami-80": { + LoadBalancer: &dynamic.ServersLoadBalancer{ + Servers: []dynamic.Server{ + { + URL: "http://10.10.0.1:80", + }, + { + URL: "http://10.10.0.2:80", + }, + }, + Strategy: "wrr", + PassHostHeader: ptr.To(true), + ResponseForwarding: &dynamic.ResponseForwarding{ + FlushInterval: dynamic.DefaultFlushInterval, + }, + }, + }, + "default-ingress-without-ssl-redirect-whoami-80": { + LoadBalancer: &dynamic.ServersLoadBalancer{ + Servers: []dynamic.Server{ + { + URL: "http://10.10.0.1:80", + }, + { + URL: "http://10.10.0.2:80", + }, + }, + Strategy: "wrr", + PassHostHeader: ptr.To(true), + ResponseForwarding: &dynamic.ResponseForwarding{ + FlushInterval: dynamic.DefaultFlushInterval, + }, + }, + }, + "default-ingress-with-force-ssl-redirect-whoami-80": { LoadBalancer: &dynamic.ServersLoadBalancer{ Servers: []dynamic.Server{ { @@ -313,12 +347,12 @@ func TestLoadIngresses(t *testing.T) { "default-ingress-with-sticky-rule-0-path-0": { Rule: "Host(`sticky.localhost`) && Path(`/`)", RuleSyntax: "default", - Service: "default-whoami-80", + Service: "default-ingress-with-sticky-whoami-80", }, }, Middlewares: map[string]*dynamic.Middleware{}, Services: map[string]*dynamic.Service{ - "default-whoami-80": { + "default-ingress-with-sticky-whoami-80": { LoadBalancer: &dynamic.ServersLoadBalancer{ Servers: []dynamic.Server{ { @@ -370,12 +404,12 @@ func TestLoadIngresses(t *testing.T) { "default-ingress-with-proxy-ssl-rule-0-path-0": { Rule: "Host(`proxy-ssl.localhost`) && Path(`/`)", RuleSyntax: "default", - Service: "default-whoami-tls-443", + Service: "default-ingress-with-proxy-ssl-whoami-tls-443", }, }, Middlewares: map[string]*dynamic.Middleware{}, Services: map[string]*dynamic.Service{ - "default-whoami-tls-443": { + "default-ingress-with-proxy-ssl-whoami-tls-443": { LoadBalancer: &dynamic.ServersLoadBalancer{ Servers: []dynamic.Server{ { @@ -423,7 +457,7 @@ func TestLoadIngresses(t *testing.T) { Rule: "Host(`cors.localhost`) && Path(`/`)", RuleSyntax: "default", Middlewares: []string{"default-ingress-with-cors-rule-0-path-0-cors"}, - Service: "default-whoami-80", + Service: "default-ingress-with-cors-whoami-80", }, }, Middlewares: map[string]*dynamic.Middleware{ @@ -439,7 +473,7 @@ func TestLoadIngresses(t *testing.T) { }, }, Services: map[string]*dynamic.Service{ - "default-whoami-80": { + "default-ingress-with-cors-whoami-80": { LoadBalancer: &dynamic.ServersLoadBalancer{ Servers: []dynamic.Server{ { @@ -479,12 +513,12 @@ func TestLoadIngresses(t *testing.T) { "default-ingress-with-service-upstream-rule-0-path-0": { Rule: "Host(`service-upstream.localhost`) && Path(`/`)", RuleSyntax: "default", - Service: "default-whoami-80", + Service: "default-ingress-with-service-upstream-whoami-80", }, }, Middlewares: map[string]*dynamic.Middleware{}, Services: map[string]*dynamic.Service{ - "default-whoami-80": { + "default-ingress-with-service-upstream-whoami-80": { LoadBalancer: &dynamic.ServersLoadBalancer{ Servers: []dynamic.Server{ {