From f7c6c562a5d17261c0c007c5c9c4bc79dffd97f5 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 --- old/provider/kubernetes/kubernetes.go | 2 +- old/provider/kubernetes/kubernetes_test.go | 24 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/old/provider/kubernetes/kubernetes.go b/old/provider/kubernetes/kubernetes.go index 9016e8ec8..b8fefb7f3 100644 --- a/old/provider/kubernetes/kubernetes.go +++ b/old/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/old/provider/kubernetes/kubernetes_test.go b/old/provider/kubernetes/kubernetes_test.go index a4eab689a..4062a8555 100644 --- a/old/provider/kubernetes/kubernetes_test.go +++ b/old/provider/kubernetes/kubernetes_test.go @@ -1308,6 +1308,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"), @@ -1518,6 +1530,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)), @@ -1684,6 +1701,13 @@ rateset: route("root", "Host:root"), ), ), + frontend("root3", + passHostHeader(), + redirectRegex("root3$", "root3/root"), + routes( + route("root3", "Host:root3"), + ), + ), frontend("protocol/valid", passHostHeader(), routes(