From 4db0dd9a7f27a3ab8d5380d94c923d4886c6ea11 Mon Sep 17 00:00:00 2001 From: Daniel Tomcej Date: Wed, 26 Dec 2018 04:52:03 -0600 Subject: [PATCH] Allow empty path with App-root annotation --- provider/kubernetes/kubernetes.go | 2 +- provider/kubernetes/kubernetes_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/provider/kubernetes/kubernetes.go b/provider/kubernetes/kubernetes.go index 6ca62e069..9d09a6051 100644 --- a/provider/kubernetes/kubernetes.go +++ b/provider/kubernetes/kubernetes.go @@ -939,7 +939,7 @@ func loadAuthTLSSecret(namespace, secretName string, k8sClient Client) (string, func getFrontendRedirect(i *extensionsv1beta1.Ingress, baseName, path string) *types.Redirect { permanent := getBoolValue(i.Annotations, annotationKubernetesRedirectPermanent, false) - if appRoot := getStringValue(i.Annotations, annotationKubernetesAppRoot, ""); appRoot != "" && path == "/" { + if appRoot := getStringValue(i.Annotations, annotationKubernetesAppRoot, ""); appRoot != "" && (path == "/" || path == "") { return &types.Redirect{ Regex: fmt.Sprintf("%s$", baseName), Replacement: fmt.Sprintf("%s/%s", strings.TrimRight(baseName, "/"), strings.TrimLeft(appRoot, "/")), diff --git a/provider/kubernetes/kubernetes_test.go b/provider/kubernetes/kubernetes_test.go index 47fea5f2d..3bc0c74ce 100644 --- a/provider/kubernetes/kubernetes_test.go +++ b/provider/kubernetes/kubernetes_test.go @@ -1299,6 +1299,18 @@ rateset: ), ), ), + buildIngress( + iNamespace("testing"), + iAnnotation(annotationKubernetesAppRoot, "/root"), + iRules( + iRule( + iHost("root3"), + iPaths( + onePath(iBackend("service1", intstr.FromInt(80))), + ), + ), + ), + ), buildIngress( iNamespace("testing"), iAnnotation(annotationKubernetesIngressClass, "traefik"), @@ -1503,6 +1515,11 @@ rateset: servers(), lbMethod("wrr"), ), + backend("root3", + servers( + server("http://example.com", weight(1))), + lbMethod("wrr"), + ), backend("protocol/valid", servers( server("h2c://example.com", weight(1)), @@ -1658,6 +1675,13 @@ rateset: route("root", "Host:root"), ), ), + frontend("root3", + passHostHeader(), + redirectRegex("root3$", "root3/root"), + routes( + route("root3", "Host:root3"), + ), + ), frontend("protocol/valid", passHostHeader(), routes(