add default path if nothing present
This commit is contained in:
parent
df55c24cb5
commit
22ee8700ca
2 changed files with 45 additions and 1 deletions
|
@ -43,6 +43,7 @@ const (
|
|||
traefikDefaultIngressClass = "traefik"
|
||||
defaultBackendName = "global-default-backend"
|
||||
defaultFrontendName = "global-default-frontend"
|
||||
defaultFrontendRule = "PathPrefix:/"
|
||||
allowedProtocolHTTPS = "https"
|
||||
allowedProtocolH2C = "h2c"
|
||||
)
|
||||
|
@ -238,6 +239,11 @@ func (p *Provider) loadIngresses(k8sClient Client) (*types.Configuration, error)
|
|||
}
|
||||
|
||||
baseName := r.Host + pa.Path
|
||||
|
||||
if len(baseName) == 0 {
|
||||
baseName = pa.Backend.ServiceName
|
||||
}
|
||||
|
||||
if priority > 0 {
|
||||
baseName = strconv.Itoa(priority) + "-" + baseName
|
||||
}
|
||||
|
@ -319,6 +325,12 @@ func (p *Provider) loadIngresses(k8sClient Client) (*types.Configuration, error)
|
|||
}
|
||||
}
|
||||
|
||||
if len(frontend.Routes) == 0 {
|
||||
frontend.Routes["/"] = types.Route{
|
||||
Rule: defaultFrontendRule,
|
||||
}
|
||||
}
|
||||
|
||||
templateObjects.Frontends[baseName] = frontend
|
||||
templateObjects.Backends[baseName].CircuitBreaker = getCircuitBreaker(service)
|
||||
templateObjects.Backends[baseName].LoadBalancer = getLoadBalancer(service)
|
||||
|
@ -539,7 +551,7 @@ func (p *Provider) addGlobalBackend(cl Client, i *extensionsv1beta1.Ingress, tem
|
|||
}
|
||||
|
||||
templateObjects.Frontends[defaultFrontendName].Routes["/"] = types.Route{
|
||||
Rule: "PathPrefix:/",
|
||||
Rule: defaultFrontendRule,
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@ -578,6 +590,7 @@ func getRuleForPath(pa extensionsv1beta1.HTTPIngressPath, i *extensionsv1beta1.I
|
|||
|
||||
rules = append(rules, rule)
|
||||
}
|
||||
|
||||
return strings.Join(rules, ";"), nil
|
||||
}
|
||||
|
||||
|
|
|
@ -50,6 +50,11 @@ func TestLoadIngresses(t *testing.T) {
|
|||
onePath(iBackend("service7", intstr.FromInt(80))),
|
||||
),
|
||||
),
|
||||
iRule(iHost(""),
|
||||
iPaths(
|
||||
onePath(iBackend("service8", intstr.FromInt(80))),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
}
|
||||
|
@ -118,6 +123,14 @@ func TestLoadIngresses(t *testing.T) {
|
|||
clusterIP("10.0.0.7"),
|
||||
sPorts(sPort(80, ""))),
|
||||
),
|
||||
buildService(
|
||||
sName("service8"),
|
||||
sNamespace("testing"),
|
||||
sUID("8"),
|
||||
sSpec(
|
||||
clusterIP("10.0.0.8"),
|
||||
sPorts(sPort(80, ""))),
|
||||
),
|
||||
}
|
||||
|
||||
endpoints := []*corev1.Endpoints{
|
||||
|
@ -165,6 +178,14 @@ func TestLoadIngresses(t *testing.T) {
|
|||
eAddresses(eAddress("10.10.0.7")),
|
||||
ePorts(ePort(80, ""))),
|
||||
),
|
||||
buildEndpoint(
|
||||
eNamespace("testing"),
|
||||
eName("service8"),
|
||||
eUID("8"),
|
||||
subset(
|
||||
eAddresses(eAddress("10.10.0.8")),
|
||||
ePorts(ePort(80, ""))),
|
||||
),
|
||||
}
|
||||
|
||||
watchChan := make(chan interface{})
|
||||
|
@ -218,6 +239,12 @@ func TestLoadIngresses(t *testing.T) {
|
|||
server("http://10.10.0.7:80", weight(1)),
|
||||
),
|
||||
),
|
||||
backend("service8",
|
||||
lbMethod("wrr"),
|
||||
servers(
|
||||
server("http://10.10.0.8:80", weight(1)),
|
||||
),
|
||||
),
|
||||
),
|
||||
frontends(
|
||||
frontend("foo/bar",
|
||||
|
@ -248,6 +275,10 @@ func TestLoadIngresses(t *testing.T) {
|
|||
passHostHeader(),
|
||||
routes(route("*.service7", "HostRegexp:{subdomain:[A-Za-z0-9-_]+}.service7")),
|
||||
),
|
||||
frontend("service8",
|
||||
passHostHeader(),
|
||||
routes(route("/", "PathPrefix:/")),
|
||||
),
|
||||
),
|
||||
)
|
||||
assert.Equal(t, expected, actual)
|
||||
|
|
Loading…
Reference in a new issue