diff --git a/integration/testdata/rawdata-consul.json b/integration/testdata/rawdata-consul.json index 84132ed45..9b652ab75 100644 --- a/integration/testdata/rawdata-consul.json +++ b/integration/testdata/rawdata-consul.json @@ -12,6 +12,11 @@ "rule": "Host(`kv1.localhost`)", "priority": 42, "tls": {}, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -42,6 +47,11 @@ } ] }, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -55,6 +65,11 @@ "rule": "PathPrefix(`/api`)", "ruleSyntax": "v3", "priority": 9223372036854775806, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -72,6 +87,11 @@ "rule": "PathPrefix(`/`)", "ruleSyntax": "v3", "priority": 9223372036854775805, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" diff --git a/integration/testdata/rawdata-crd-label-selector.json b/integration/testdata/rawdata-crd-label-selector.json index 445a7daf3..63cfd1a4c 100644 --- a/integration/testdata/rawdata-crd-label-selector.json +++ b/integration/testdata/rawdata-crd-label-selector.json @@ -7,6 +7,11 @@ "service": "api@internal", "rule": "PathPrefix(`/api`)", "priority": 18, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -22,6 +27,11 @@ "tls": { "options": "default-mytlsoption" }, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" diff --git a/integration/testdata/rawdata-crd.json b/integration/testdata/rawdata-crd.json index 5724a7126..580ca3622 100644 --- a/integration/testdata/rawdata-crd.json +++ b/integration/testdata/rawdata-crd.json @@ -7,6 +7,11 @@ "service": "api@internal", "rule": "PathPrefix(`/api`)", "priority": 18, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -22,6 +27,11 @@ "tls": { "options": "default-mytlsoption" }, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -37,6 +47,11 @@ "service": "default-test2-route-23c7f4c450289ee29016", "rule": "Host(`foo.com`) \u0026\u0026 PathPrefix(`/tobestripped`)", "priority": 46, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -49,6 +64,11 @@ "service": "default-wrr1", "rule": "Host(`foo.com`) \u0026\u0026 PathPrefix(`/wrr1`)", "priority": 38, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -61,6 +81,11 @@ "service": "default-testst-route-60ad45fcb5fc1f5f3629", "rule": "Host(`foo.com`) \u0026\u0026 PathPrefix(`/serverstransport`)", "priority": 50, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -73,6 +98,11 @@ "service": "other-ns-wrr3", "rule": "Host(`foo.com`) \u0026\u0026 PathPrefix(`/c`)", "priority": 35, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "error": [ "the service \"other-ns-wrr3@kubernetescrd\" does not exist" ], diff --git a/integration/testdata/rawdata-etcd.json b/integration/testdata/rawdata-etcd.json index ffb03d9ac..8aa27be8d 100644 --- a/integration/testdata/rawdata-etcd.json +++ b/integration/testdata/rawdata-etcd.json @@ -12,6 +12,11 @@ "rule": "Host(`kv1.localhost`)", "priority": 42, "tls": {}, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -42,6 +47,11 @@ } ] }, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -55,6 +65,11 @@ "rule": "PathPrefix(`/api`)", "ruleSyntax": "v3", "priority": 9223372036854775806, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -72,6 +87,11 @@ "rule": "PathPrefix(`/`)", "ruleSyntax": "v3", "priority": 9223372036854775805, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" diff --git a/integration/testdata/rawdata-gateway.json b/integration/testdata/rawdata-gateway.json index 6ed949440..abdafc211 100644 --- a/integration/testdata/rawdata-gateway.json +++ b/integration/testdata/rawdata-gateway.json @@ -8,6 +8,11 @@ "rule": "PathPrefix(`/api`)", "ruleSyntax": "v3", "priority": 9223372036854775806, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -25,6 +30,11 @@ "rule": "PathPrefix(`/`)", "ruleSyntax": "v3", "priority": 9223372036854775805, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -38,6 +48,11 @@ "rule": "Host(`foo.com`) \u0026\u0026 Path(`/bar`)", "ruleSyntax": "v3", "priority": 100008, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -52,6 +67,11 @@ "ruleSyntax": "v3", "priority": 100008, "tls": {}, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "websecure" diff --git a/integration/testdata/rawdata-ingress-label-selector.json b/integration/testdata/rawdata-ingress-label-selector.json index e0351ce0e..0ec80080d 100644 --- a/integration/testdata/rawdata-ingress-label-selector.json +++ b/integration/testdata/rawdata-ingress-label-selector.json @@ -8,6 +8,11 @@ "rule": "PathPrefix(`/api`)", "ruleSyntax": "v3", "priority": 9223372036854775806, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -25,6 +30,11 @@ "rule": "PathPrefix(`/`)", "ruleSyntax": "v3", "priority": 9223372036854775805, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -37,6 +47,11 @@ "service": "default-whoami-http", "rule": "Host(`whoami.test`) \u0026\u0026 PathPrefix(`/whoami`)", "priority": 44, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" diff --git a/integration/testdata/rawdata-ingress.json b/integration/testdata/rawdata-ingress.json index febc172d4..115e3530d 100644 --- a/integration/testdata/rawdata-ingress.json +++ b/integration/testdata/rawdata-ingress.json @@ -8,6 +8,11 @@ "rule": "PathPrefix(`/api`)", "ruleSyntax": "v3", "priority": 9223372036854775806, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -25,6 +30,11 @@ "rule": "PathPrefix(`/`)", "ruleSyntax": "v3", "priority": 9223372036854775805, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -37,6 +47,11 @@ "service": "default-whoami-http", "rule": "Host(`whoami.test.https`) \u0026\u0026 PathPrefix(`/whoami`)", "priority": 50, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -49,6 +64,11 @@ "service": "default-whoami-http", "rule": "Host(`whoami.test`) \u0026\u0026 PathPrefix(`/whoami`)", "priority": 44, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -61,6 +81,11 @@ "service": "default-whoami-80", "rule": "Host(`whoami.test.drop`) \u0026\u0026 PathPrefix(`/drop`)", "priority": 47, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -73,6 +98,11 @@ "service": "default-whoami-80", "rule": "Host(`whoami.test.keep`) \u0026\u0026 PathPrefix(`/keep`)", "priority": 47, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" diff --git a/integration/testdata/rawdata-ingressclass-disabled.json b/integration/testdata/rawdata-ingressclass-disabled.json index bbf4d6141..f5eb3a7fe 100644 --- a/integration/testdata/rawdata-ingressclass-disabled.json +++ b/integration/testdata/rawdata-ingressclass-disabled.json @@ -8,6 +8,11 @@ "rule": "PathPrefix(`/api`)", "ruleSyntax": "v3", "priority": 9223372036854775806, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -25,6 +30,11 @@ "rule": "PathPrefix(`/`)", "ruleSyntax": "v3", "priority": 9223372036854775805, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" diff --git a/integration/testdata/rawdata-ingressclass.json b/integration/testdata/rawdata-ingressclass.json index 3fe8333e1..dd7d8de68 100644 --- a/integration/testdata/rawdata-ingressclass.json +++ b/integration/testdata/rawdata-ingressclass.json @@ -8,6 +8,11 @@ "rule": "PathPrefix(`/api`)", "ruleSyntax": "v3", "priority": 9223372036854775806, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -25,6 +30,11 @@ "rule": "PathPrefix(`/`)", "ruleSyntax": "v3", "priority": 9223372036854775805, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -37,6 +47,11 @@ "service": "default-whoami-80", "rule": "Host(`whoami.test.keep`) \u0026\u0026 PathPrefix(`/keep`)", "priority": 47, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" diff --git a/integration/testdata/rawdata-redis.json b/integration/testdata/rawdata-redis.json index 4f8e8498a..ef34971d1 100644 --- a/integration/testdata/rawdata-redis.json +++ b/integration/testdata/rawdata-redis.json @@ -12,6 +12,11 @@ "rule": "Host(`kv1.localhost`)", "priority": 42, "tls": {}, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -42,6 +47,11 @@ } ] }, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -55,6 +65,11 @@ "rule": "PathPrefix(`/api`)", "ruleSyntax": "v3", "priority": 9223372036854775806, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -72,6 +87,11 @@ "rule": "PathPrefix(`/`)", "ruleSyntax": "v3", "priority": 9223372036854775805, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" diff --git a/integration/testdata/rawdata-zk.json b/integration/testdata/rawdata-zk.json index b06c6974c..064036472 100644 --- a/integration/testdata/rawdata-zk.json +++ b/integration/testdata/rawdata-zk.json @@ -12,6 +12,11 @@ "rule": "Host(`kv1.localhost`)", "priority": 42, "tls": {}, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -42,6 +47,11 @@ } ] }, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "web" @@ -55,6 +65,11 @@ "rule": "PathPrefix(`/api`)", "ruleSyntax": "v3", "priority": 9223372036854775806, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" @@ -72,6 +87,11 @@ "rule": "PathPrefix(`/`)", "ruleSyntax": "v3", "priority": 9223372036854775805, + "observability": { + "accessLogs": true, + "tracing": true, + "metrics": true + }, "status": "enabled", "using": [ "traefik" diff --git a/pkg/provider/traefik/internal.go b/pkg/provider/traefik/internal.go index 39c0e9294..47f822321 100644 --- a/pkg/provider/traefik/internal.go +++ b/pkg/provider/traefik/internal.go @@ -229,16 +229,17 @@ func (i *Provider) entryPointModels(cfg *dynamic.Configuration) { } } - if len(ep.HTTP.Middlewares) == 0 && ep.HTTP.TLS == nil && defaultRuleSyntax == "" { + if len(ep.HTTP.Middlewares) == 0 && ep.HTTP.TLS == nil && defaultRuleSyntax == "" && ep.Observability == nil { continue } - m := &dynamic.Model{ - Middlewares: ep.HTTP.Middlewares, + httpModel := &dynamic.Model{ + DefaultRuleSyntax: defaultRuleSyntax, + Middlewares: ep.HTTP.Middlewares, } if ep.Observability != nil { - m.Observability = dynamic.RouterObservabilityConfig{ + httpModel.Observability = dynamic.RouterObservabilityConfig{ AccessLogs: &ep.Observability.AccessLogs, Tracing: &ep.Observability.Tracing, Metrics: &ep.Observability.Metrics, @@ -246,16 +247,14 @@ func (i *Provider) entryPointModels(cfg *dynamic.Configuration) { } if ep.HTTP.TLS != nil { - m.TLS = &dynamic.RouterTLSConfig{ + httpModel.TLS = &dynamic.RouterTLSConfig{ Options: ep.HTTP.TLS.Options, CertResolver: ep.HTTP.TLS.CertResolver, Domains: ep.HTTP.TLS.Domains, } } - m.DefaultRuleSyntax = defaultRuleSyntax - - cfg.HTTP.Models[name] = m + cfg.HTTP.Models[name] = httpModel } }