1
0
Fork 0

config: deal with multiple errors and their criticality

Co-authored-by: Julien Salleyron <julien.salleyron@gmail.com>
This commit is contained in:
mpl 2019-07-15 17:04:04 +02:00 committed by Traefiker Bot
parent 62800116d3
commit 6fdd48509e
45 changed files with 725 additions and 412 deletions

View file

@ -0,0 +1,45 @@
[global]
checkNewVersion = false
sendAnonymousUsage = false
[log]
level = "DEBUG"
[entryPoints]
[entryPoints.web-secure]
address = ":4443"
[api]
[providers.file]
filename = "{{ .SelfFilename }}"
## dynamic configuration ##
[http.routers]
[http.routers.router4]
service = "service1"
rule = "Host(`snitest.net`)"
[http.routers.router4.tls]
options = "foo"
[http.routers.router5]
service = "service1"
rule = "Host(`snitest.net`)"
middlewares = [ "unknown" ]
[http.routers.router5.tls]
options = "baz"
[http.services]
[http.services.service1]
[http.services.service1.loadBalancer]
[[http.services.service1.loadBalancer.servers]]
url = "http://127.0.0.1:9010"
[tls.options]
[tls.options.foo]
minversion = "VersionTLS11"
[tls.options.baz]
minversion = "VersionTLS11"

View file

@ -0,0 +1,34 @@
[global]
checkNewVersion = false
sendAnonymousUsage = false
[log]
level = "DEBUG"
[entryPoints]
[entryPoints.web-secure]
address = ":4443"
[api]
[providers.file]
filename = "{{ .SelfFilename }}"
## dynamic configuration ##
[http.routers]
[http.routers.router4]
service = "service1"
rule = "Host(`snitest.net`)"
[http.routers.router5]
service = "service2"
rule = "Host(`snitest.com`)"
[http.services]
[http.services.service1]
[http.services.service2]
[http.services.service2.loadBalancer]
[[http.services.service2.loadBalancer.servers]]
url = "http://127.0.0.1:9010"

View file

@ -524,3 +524,48 @@ func (s *SimpleSuite) TestSimpleConfigurationHostRequestTrailingPeriod(c *check.
}
}
}
func (s *SimpleSuite) TestRouterConfigErrors(c *check.C) {
file := s.adaptFile(c, "fixtures/router_errors.toml", struct{}{})
defer os.Remove(file)
cmd, output := s.traefikCmd(withConfigFile(file))
defer output(c)
err := cmd.Start()
c.Assert(err, checker.IsNil)
defer cmd.Process.Kill()
// All errors
err = try.GetRequest("http://127.0.0.1:8080/api/http/routers", 1000*time.Millisecond, try.BodyContains(`["middleware \"unknown@file\" does not exist","found different TLS options for routers on the same host snitest.net, so using the default TLS option instead"]`))
c.Assert(err, checker.IsNil)
// router4 is enabled, but in warning state because its tls options conf was messed up
err = try.GetRequest("http://127.0.0.1:8080/api/http/routers/router4@file", 1000*time.Millisecond, try.BodyContains(`"status":"warning"`))
c.Assert(err, checker.IsNil)
// router5 is disabled because its middleware conf is broken
err = try.GetRequest("http://127.0.0.1:8080/api/http/routers/router5@file", 1000*time.Millisecond, try.BodyContains())
c.Assert(err, checker.IsNil)
}
func (s *SimpleSuite) TestServiceConfigErrors(c *check.C) {
file := s.adaptFile(c, "fixtures/service_errors.toml", struct{}{})
defer os.Remove(file)
cmd, output := s.traefikCmd(withConfigFile(file))
defer output(c)
err := cmd.Start()
c.Assert(err, checker.IsNil)
defer cmd.Process.Kill()
err = try.GetRequest("http://127.0.0.1:8080/api/http/services", 1000*time.Millisecond, try.BodyContains(`["the service \"service1@file\" doesn't have any load balancer"]`))
c.Assert(err, checker.IsNil)
err = try.GetRequest("http://127.0.0.1:8080/api/http/services/service1@file", 1000*time.Millisecond, try.BodyContains(`"status":"disabled"`))
c.Assert(err, checker.IsNil)
err = try.GetRequest("http://127.0.0.1:8080/api/http/services/service2@file", 1000*time.Millisecond, try.BodyContains(`"status":"enabled"`))
c.Assert(err, checker.IsNil)
}

View file

@ -9,7 +9,8 @@
"priority": 12,
"tls": {
"options": "default/mytlsoption"
}
},
"status": "enabled"
},
"default/test2.route-23c7f4c450289ee29016@kubernetescrd": {
"entryPoints": [
@ -19,7 +20,8 @@
"default/stripprefix"
],
"service": "default/test2.route-23c7f4c450289ee29016",
"rule": "Host(`foo.com`) \u0026\u0026 PathPrefix(`/tobestripped`)"
"rule": "Host(`foo.com`) \u0026\u0026 PathPrefix(`/tobestripped`)",
"status": "enabled"
}
},
"middlewares": {
@ -39,7 +41,7 @@
"loadBalancer": {
"servers": [
{
"url": "http://10.42.0.3:80"
"url": "http://10.42.0.4:80"
},
{
"url": "http://10.42.0.5:80"
@ -47,11 +49,12 @@
],
"passHostHeader": true
},
"status": "enabled",
"usedBy": [
"default/test.route-6b204d94623b3df4370c@kubernetescrd"
],
"serverStatus": {
"http://10.42.0.3:80": "UP",
"http://10.42.0.4:80": "UP",
"http://10.42.0.5:80": "UP"
}
},
@ -59,7 +62,7 @@
"loadBalancer": {
"servers": [
{
"url": "http://10.42.0.3:80"
"url": "http://10.42.0.4:80"
},
{
"url": "http://10.42.0.5:80"
@ -67,11 +70,12 @@
],
"passHostHeader": true
},
"status": "enabled",
"usedBy": [
"default/test2.route-23c7f4c450289ee29016@kubernetescrd"
],
"serverStatus": {
"http://10.42.0.3:80": "UP",
"http://10.42.0.4:80": "UP",
"http://10.42.0.5:80": "UP"
}
}
@ -86,7 +90,8 @@
"tls": {
"passthrough": false,
"options": "default/mytlsoption"
}
},
"status": "enabled"
}
},
"tcpServices": {
@ -94,13 +99,14 @@
"loadBalancer": {
"servers": [
{
"address": "10.42.0.4:8080"
"address": "10.42.0.3:8080"
},
{
"address": "10.42.0.6:8080"
}
]
},
"status": "enabled",
"usedBy": [
"default/test3.crd-673acf455cb2dab0b43a@kubernetescrd"
]

View file

@ -2,7 +2,8 @@
"routers": {
"whoami-test/whoami@kubernetes": {
"service": "default/whoami/http",
"rule": "Host(`whoami.test`) \u0026\u0026 PathPrefix(`/whoami`)"
"rule": "Host(`whoami.test`) \u0026\u0026 PathPrefix(`/whoami`)",
"status": "enabled"
}
},
"services": {
@ -10,7 +11,7 @@
"loadBalancer": {
"servers": [
{
"url": "http://10.42.0.2:80"
"url": "http://10.42.0.4:80"
},
{
"url": "http://10.42.0.5:80"
@ -18,11 +19,12 @@
],
"passHostHeader": true
},
"status": "enabled",
"usedBy": [
"whoami-test/whoami@kubernetes"
],
"serverStatus": {
"http://10.42.0.2:80": "UP",
"http://10.42.0.4:80": "UP",
"http://10.42.0.5:80": "UP"
}
}