From e78374aa29c2c61c1f6ce21623578ce07e45ed40 Mon Sep 17 00:00:00 2001 From: Oliver Dvorski Date: Wed, 10 Jan 2024 15:12:07 +0100 Subject: [PATCH 1/3] docs: slightly rewords the documentation --- docs/content/getting-started/concepts.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/content/getting-started/concepts.md b/docs/content/getting-started/concepts.md index 10e1787e4..21e1817f7 100644 --- a/docs/content/getting-started/concepts.md +++ b/docs/content/getting-started/concepts.md @@ -25,7 +25,7 @@ The main features include dynamic configuration, automatic service discovery, an ## Edge Router -Traefik is an *Edge Router*, it means that it's the door to your platform, and that it intercepts and routes every incoming request: +Traefik is an *Edge Router*; this means that it's the door to your platform, and that it intercepts and routes every incoming request: it knows all the logic and every [rule](../routing/routers/index.md#rule "Link to docs about routing rules") that determine which services handle which requests (based on the *path*, the *host*, *headers*, etc.). ![The Door to Your Infrastructure](../assets/img/traefik-concepts-1.png "Picture explaining the infrastructure") @@ -38,7 +38,7 @@ Deploying your services, you attach information that tells Traefik the character ![Decentralized Configuration](../assets/img/traefik-concepts-2.png "Picture about Decentralized Configuration") -It means that when a service is deployed, Traefik detects it immediately and updates the routing rules in real time. +This means that when a service is deployed, Traefik detects it immediately and updates the routing rules in real time. Similarly, when a service is removed from the infrastructure, the corresponding route is deleted accordingly. You no longer need to create and synchronize configuration files cluttered with IP addresses or other rules. From 3a461d2f237375a20db8053a8ee251983c1c908f Mon Sep 17 00:00:00 2001 From: James Rasell Date: Fri, 12 Jan 2024 14:22:05 +0100 Subject: [PATCH 2/3] deps: update the Nomad API dependency to v1.7.2 --- go.mod | 4 ++-- go.sum | 13 ++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 81c2de9a8..d5a59d96f 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/hashicorp/go-hclog v1.5.0 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/go-version v1.6.0 - github.com/hashicorp/nomad/api v0.0.0-20220506174431-b5665129cd1f + github.com/hashicorp/nomad/api v0.0.0-20231213195942-64e3dca9274b github.com/influxdata/influxdb-client-go/v2 v2.7.0 github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d github.com/instana/go-sensor v1.38.3 @@ -193,7 +193,7 @@ require ( github.com/gophercloud/gophercloud v1.0.0 // indirect github.com/gophercloud/utils v0.0.0-20210216074907-f6de111f2eae // indirect github.com/gravitational/trace v1.1.16-0.20220114165159-14a9a7dd6aaf // indirect - github.com/hashicorp/cronexpr v1.1.1 // indirect + github.com/hashicorp/cronexpr v1.1.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect diff --git a/go.sum b/go.sum index dc194e29d..dfa028007 100644 --- a/go.sum +++ b/go.sum @@ -385,6 +385,8 @@ github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= +github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= @@ -626,8 +628,8 @@ github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyN github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.15.0 h1:2qK9nDrr4tiJKRoxPGhm6B7xJjLVIQqkjiab2M4aKjU= github.com/hashicorp/consul/sdk v0.15.0/go.mod h1:r/OmRRPbHOe0yxNahLw7G9x5WG17E1BIECMtCjcPSNo= -github.com/hashicorp/cronexpr v1.1.1 h1:NJZDd87hGXjoZBdvyCF9mX4DCq5Wy7+A/w+A7q0wn6c= -github.com/hashicorp/cronexpr v1.1.1/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= +github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= +github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -679,8 +681,8 @@ github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= -github.com/hashicorp/nomad/api v0.0.0-20220506174431-b5665129cd1f h1:jSBbBJcPca465gK6XfwdXRQnFCd63e0oJmqllZTsawI= -github.com/hashicorp/nomad/api v0.0.0-20220506174431-b5665129cd1f/go.mod h1:b/AoT79m3PEpb6tKCFKva/M+q1rKJNUk5mdu1S8DymM= +github.com/hashicorp/nomad/api v0.0.0-20231213195942-64e3dca9274b h1:R1UDhkwGltpSPY9bCBBxIMQd+NY9BkN0vFHnJo/8o8w= +github.com/hashicorp/nomad/api v0.0.0-20231213195942-64e3dca9274b/go.mod h1:ijDwa6o1uG1jFSq6kERiX2PamKGpZzTmo0XOFNeFZgw= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= @@ -1150,8 +1152,9 @@ github.com/shirou/gopsutil/v3 v3.23.11 h1:i3jP9NjCPUz7FiZKxlMnODZkdSIp2gnzfrvsu9 github.com/shirou/gopsutil/v3 v3.23.11/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= -github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/shoenig/test v1.7.0 h1:eWcHtTXa6QLnBvm0jgEabMRN/uJ4DMV3M8xUGgRkZmk= +github.com/shoenig/test v1.7.0/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= From 34d2a816c229f2861d1a5c6f8160a533d155ea11 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 16 Jan 2024 10:32:05 +0100 Subject: [PATCH 3/3] Enhance gendoc for Generating Static and Dynamic Reference Configuration Files --- .../dynamic-configuration/docker-labels.yml | 321 ++++++++------- .../reference/dynamic-configuration/file.toml | 201 ++++----- .../reference/dynamic-configuration/file.yaml | 110 ++--- .../reference/dynamic-configuration/kv-ref.md | 385 +++++++++--------- .../marathon-labels.json | 321 ++++++++------- .../reference/static-configuration/file.toml | 38 +- .../reference/static-configuration/file.yaml | 118 +++--- internal/gendoc.go | 221 ++++++++++ internal/parser.go | 66 +++ pkg/collector/collector_test.go | 3 +- .../hydration.go} | 11 +- pkg/config/dynamic/config.go | 2 +- 12 files changed, 1061 insertions(+), 736 deletions(-) create mode 100644 internal/parser.go rename pkg/collector/{hydration_test.go => hydratation/hydration.go} (94%) diff --git a/docs/content/reference/dynamic-configuration/docker-labels.yml b/docs/content/reference/dynamic-configuration/docker-labels.yml index 723d4b049..300c4febe 100644 --- a/docs/content/reference/dynamic-configuration/docker-labels.yml +++ b/docs/content/reference/dynamic-configuration/docker-labels.yml @@ -1,129 +1,136 @@ -- "traefik.http.middlewares.middleware00.addprefix.prefix=foobar" -- "traefik.http.middlewares.middleware01.basicauth.headerfield=foobar" -- "traefik.http.middlewares.middleware01.basicauth.realm=foobar" -- "traefik.http.middlewares.middleware01.basicauth.removeheader=true" -- "traefik.http.middlewares.middleware01.basicauth.users=foobar, foobar" -- "traefik.http.middlewares.middleware01.basicauth.usersfile=foobar" -- "traefik.http.middlewares.middleware02.buffering.maxrequestbodybytes=42" -- "traefik.http.middlewares.middleware02.buffering.maxresponsebodybytes=42" -- "traefik.http.middlewares.middleware02.buffering.memrequestbodybytes=42" -- "traefik.http.middlewares.middleware02.buffering.memresponsebodybytes=42" -- "traefik.http.middlewares.middleware02.buffering.retryexpression=foobar" -- "traefik.http.middlewares.middleware03.chain.middlewares=foobar, foobar" -- "traefik.http.middlewares.middleware04.circuitbreaker.expression=foobar" -- "traefik.http.middlewares.middleware04.circuitbreaker.checkperiod=42s" -- "traefik.http.middlewares.middleware04.circuitbreaker.fallbackduration=42s" -- "traefik.http.middlewares.middleware04.circuitbreaker.recoveryduration=42s" -- "traefik.http.middlewares.middleware05.compress=true" -- "traefik.http.middlewares.middleware05.compress.excludedcontenttypes=foobar, foobar" -- "traefik.http.middlewares.middleware05.compress.minresponsebodybytes=42" -- "traefik.http.middlewares.middleware06.contenttype.autodetect=true" -- "traefik.http.middlewares.middleware07.digestauth.headerfield=foobar" -- "traefik.http.middlewares.middleware07.digestauth.realm=foobar" -- "traefik.http.middlewares.middleware07.digestauth.removeheader=true" -- "traefik.http.middlewares.middleware07.digestauth.users=foobar, foobar" -- "traefik.http.middlewares.middleware07.digestauth.usersfile=foobar" -- "traefik.http.middlewares.middleware08.errors.query=foobar" -- "traefik.http.middlewares.middleware08.errors.service=foobar" -- "traefik.http.middlewares.middleware08.errors.status=foobar, foobar" -- "traefik.http.middlewares.middleware09.forwardauth.address=foobar" -- "traefik.http.middlewares.middleware09.forwardauth.authresponseheaders=foobar, foobar" -- "traefik.http.middlewares.middleware09.forwardauth.authresponseheadersregex=foobar" -- "traefik.http.middlewares.middleware09.forwardauth.authrequestheaders=foobar, foobar" -- "traefik.http.middlewares.middleware09.forwardauth.tls.ca=foobar" -- "traefik.http.middlewares.middleware09.forwardauth.tls.caoptional=true" -- "traefik.http.middlewares.middleware09.forwardauth.tls.cert=foobar" -- "traefik.http.middlewares.middleware09.forwardauth.tls.insecureskipverify=true" -- "traefik.http.middlewares.middleware09.forwardauth.tls.key=foobar" -- "traefik.http.middlewares.middleware09.forwardauth.trustforwardheader=true" -- "traefik.http.middlewares.middleware10.headers.accesscontrolallowcredentials=true" -- "traefik.http.middlewares.middleware10.headers.accesscontrolallowheaders=foobar, foobar" -- "traefik.http.middlewares.middleware10.headers.accesscontrolallowmethods=foobar, foobar" -- "traefik.http.middlewares.middleware10.headers.accesscontrolalloworiginlist=foobar, foobar" -- "traefik.http.middlewares.middleware10.headers.accesscontrolalloworiginlistregex=foobar, foobar" -- "traefik.http.middlewares.middleware10.headers.accesscontrolexposeheaders=foobar, foobar" -- "traefik.http.middlewares.middleware10.headers.accesscontrolmaxage=42" -- "traefik.http.middlewares.middleware10.headers.addvaryheader=true" -- "traefik.http.middlewares.middleware10.headers.allowedhosts=foobar, foobar" -- "traefik.http.middlewares.middleware10.headers.browserxssfilter=true" -- "traefik.http.middlewares.middleware10.headers.contentsecuritypolicy=foobar" -- "traefik.http.middlewares.middleware10.headers.contenttypenosniff=true" -- "traefik.http.middlewares.middleware10.headers.custombrowserxssvalue=foobar" -- "traefik.http.middlewares.middleware10.headers.customframeoptionsvalue=foobar" -- "traefik.http.middlewares.middleware10.headers.customrequestheaders.name0=foobar" -- "traefik.http.middlewares.middleware10.headers.customrequestheaders.name1=foobar" -- "traefik.http.middlewares.middleware10.headers.customresponseheaders.name0=foobar" -- "traefik.http.middlewares.middleware10.headers.customresponseheaders.name1=foobar" -- "traefik.http.middlewares.middleware10.headers.featurepolicy=foobar" -- "traefik.http.middlewares.middleware10.headers.forcestsheader=true" -- "traefik.http.middlewares.middleware10.headers.framedeny=true" -- "traefik.http.middlewares.middleware10.headers.hostsproxyheaders=foobar, foobar" -- "traefik.http.middlewares.middleware10.headers.isdevelopment=true" -- "traefik.http.middlewares.middleware10.headers.permissionspolicy=foobar" -- "traefik.http.middlewares.middleware10.headers.publickey=foobar" -- "traefik.http.middlewares.middleware10.headers.referrerpolicy=foobar" -- "traefik.http.middlewares.middleware10.headers.sslforcehost=true" -- "traefik.http.middlewares.middleware10.headers.sslhost=foobar" -- "traefik.http.middlewares.middleware10.headers.sslproxyheaders.name0=foobar" -- "traefik.http.middlewares.middleware10.headers.sslproxyheaders.name1=foobar" -- "traefik.http.middlewares.middleware10.headers.sslredirect=true" -- "traefik.http.middlewares.middleware10.headers.ssltemporaryredirect=true" -- "traefik.http.middlewares.middleware10.headers.stsincludesubdomains=true" -- "traefik.http.middlewares.middleware10.headers.stspreload=true" -- "traefik.http.middlewares.middleware10.headers.stsseconds=42" -- "traefik.http.middlewares.middleware11.ipwhitelist.ipstrategy.depth=42" -- "traefik.http.middlewares.middleware11.ipwhitelist.ipstrategy.excludedips=foobar, foobar" -- "traefik.http.middlewares.middleware11.ipwhitelist.sourcerange=foobar, foobar" -- "traefik.http.middlewares.middleware12.inflightreq.amount=42" -- "traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.ipstrategy.depth=42" -- "traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.ipstrategy.excludedips=foobar, foobar" -- "traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.requestheadername=foobar" -- "traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.requesthost=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.commonname=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.country=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.domaincomponent=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.locality=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.organization=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.province=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.serialnumber=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.notafter=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.notbefore=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.sans=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.serialnumber=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.commonname=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.country=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.domaincomponent=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.locality=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.organization=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.organizationalunit=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.province=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.serialnumber=true" -- "traefik.http.middlewares.middleware13.passtlsclientcert.pem=true" -- "traefik.http.middlewares.middleware14.plugin.foobar.foo=bar" -- "traefik.http.middlewares.middleware15.ratelimit.average=42" -- "traefik.http.middlewares.middleware15.ratelimit.burst=42" -- "traefik.http.middlewares.middleware15.ratelimit.period=42" -- "traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.ipstrategy.depth=42" -- "traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.ipstrategy.excludedips=foobar, foobar" -- "traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.requestheadername=foobar" -- "traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.requesthost=true" -- "traefik.http.middlewares.middleware16.redirectregex.permanent=true" -- "traefik.http.middlewares.middleware16.redirectregex.regex=foobar" -- "traefik.http.middlewares.middleware16.redirectregex.replacement=foobar" -- "traefik.http.middlewares.middleware17.redirectscheme.permanent=true" -- "traefik.http.middlewares.middleware17.redirectscheme.port=foobar" -- "traefik.http.middlewares.middleware17.redirectscheme.scheme=foobar" -- "traefik.http.middlewares.middleware18.replacepath.path=foobar" -- "traefik.http.middlewares.middleware19.replacepathregex.regex=foobar" -- "traefik.http.middlewares.middleware19.replacepathregex.replacement=foobar" -- "traefik.http.middlewares.middleware20.retry.attempts=42" -- "traefik.http.middlewares.middleware20.retry.initialinterval=42" -- "traefik.http.middlewares.middleware21.stripprefix.forceslash=true" -- "traefik.http.middlewares.middleware21.stripprefix.prefixes=foobar, foobar" -- "traefik.http.middlewares.middleware22.stripprefixregex.regex=foobar, foobar" -- "traefik.http.middlewares.middleware23.ipallowlist.ipstrategy.depth=42" -- "traefik.http.middlewares.middleware23.ipallowlist.ipstrategy.excludedips=foobar, foobar" -- "traefik.http.middlewares.middleware23.ipallowlist.sourcerange=foobar, foobar" +## CODE GENERATED AUTOMATICALLY +## THIS FILE MUST NOT BE EDITED BY HAND +- "traefik.http.middlewares.middleware01.addprefix.prefix=foobar" +- "traefik.http.middlewares.middleware02.basicauth.headerfield=foobar" +- "traefik.http.middlewares.middleware02.basicauth.realm=foobar" +- "traefik.http.middlewares.middleware02.basicauth.removeheader=true" +- "traefik.http.middlewares.middleware02.basicauth.users=foobar, foobar" +- "traefik.http.middlewares.middleware02.basicauth.usersfile=foobar" +- "traefik.http.middlewares.middleware03.buffering.maxrequestbodybytes=42" +- "traefik.http.middlewares.middleware03.buffering.maxresponsebodybytes=42" +- "traefik.http.middlewares.middleware03.buffering.memrequestbodybytes=42" +- "traefik.http.middlewares.middleware03.buffering.memresponsebodybytes=42" +- "traefik.http.middlewares.middleware03.buffering.retryexpression=foobar" +- "traefik.http.middlewares.middleware04.chain.middlewares=foobar, foobar" +- "traefik.http.middlewares.middleware05.circuitbreaker.checkperiod=42s" +- "traefik.http.middlewares.middleware05.circuitbreaker.expression=foobar" +- "traefik.http.middlewares.middleware05.circuitbreaker.fallbackduration=42s" +- "traefik.http.middlewares.middleware05.circuitbreaker.recoveryduration=42s" +- "traefik.http.middlewares.middleware06.compress=true" +- "traefik.http.middlewares.middleware06.compress.excludedcontenttypes=foobar, foobar" +- "traefik.http.middlewares.middleware06.compress.minresponsebodybytes=42" +- "traefik.http.middlewares.middleware07.contenttype.autodetect=true" +- "traefik.http.middlewares.middleware08.digestauth.headerfield=foobar" +- "traefik.http.middlewares.middleware08.digestauth.realm=foobar" +- "traefik.http.middlewares.middleware08.digestauth.removeheader=true" +- "traefik.http.middlewares.middleware08.digestauth.users=foobar, foobar" +- "traefik.http.middlewares.middleware08.digestauth.usersfile=foobar" +- "traefik.http.middlewares.middleware09.errors.query=foobar" +- "traefik.http.middlewares.middleware09.errors.service=foobar" +- "traefik.http.middlewares.middleware09.errors.status=foobar, foobar" +- "traefik.http.middlewares.middleware10.forwardauth.address=foobar" +- "traefik.http.middlewares.middleware10.forwardauth.authrequestheaders=foobar, foobar" +- "traefik.http.middlewares.middleware10.forwardauth.authresponseheaders=foobar, foobar" +- "traefik.http.middlewares.middleware10.forwardauth.authresponseheadersregex=foobar" +- "traefik.http.middlewares.middleware10.forwardauth.tls.ca=foobar" +- "traefik.http.middlewares.middleware10.forwardauth.tls.caoptional=true" +- "traefik.http.middlewares.middleware10.forwardauth.tls.cert=foobar" +- "traefik.http.middlewares.middleware10.forwardauth.tls.insecureskipverify=true" +- "traefik.http.middlewares.middleware10.forwardauth.tls.key=foobar" +- "traefik.http.middlewares.middleware10.forwardauth.trustforwardheader=true" +- "traefik.http.middlewares.middleware11.headers.accesscontrolallowcredentials=true" +- "traefik.http.middlewares.middleware11.headers.accesscontrolallowheaders=foobar, foobar" +- "traefik.http.middlewares.middleware11.headers.accesscontrolallowmethods=foobar, foobar" +- "traefik.http.middlewares.middleware11.headers.accesscontrolalloworiginlist=foobar, foobar" +- "traefik.http.middlewares.middleware11.headers.accesscontrolalloworiginlistregex=foobar, foobar" +- "traefik.http.middlewares.middleware11.headers.accesscontrolexposeheaders=foobar, foobar" +- "traefik.http.middlewares.middleware11.headers.accesscontrolmaxage=42" +- "traefik.http.middlewares.middleware11.headers.addvaryheader=true" +- "traefik.http.middlewares.middleware11.headers.allowedhosts=foobar, foobar" +- "traefik.http.middlewares.middleware11.headers.browserxssfilter=true" +- "traefik.http.middlewares.middleware11.headers.contentsecuritypolicy=foobar" +- "traefik.http.middlewares.middleware11.headers.contenttypenosniff=true" +- "traefik.http.middlewares.middleware11.headers.custombrowserxssvalue=foobar" +- "traefik.http.middlewares.middleware11.headers.customframeoptionsvalue=foobar" +- "traefik.http.middlewares.middleware11.headers.customrequestheaders.name0=foobar" +- "traefik.http.middlewares.middleware11.headers.customrequestheaders.name1=foobar" +- "traefik.http.middlewares.middleware11.headers.customresponseheaders.name0=foobar" +- "traefik.http.middlewares.middleware11.headers.customresponseheaders.name1=foobar" +- "traefik.http.middlewares.middleware11.headers.featurepolicy=foobar" +- "traefik.http.middlewares.middleware11.headers.forcestsheader=true" +- "traefik.http.middlewares.middleware11.headers.framedeny=true" +- "traefik.http.middlewares.middleware11.headers.hostsproxyheaders=foobar, foobar" +- "traefik.http.middlewares.middleware11.headers.isdevelopment=true" +- "traefik.http.middlewares.middleware11.headers.permissionspolicy=foobar" +- "traefik.http.middlewares.middleware11.headers.publickey=foobar" +- "traefik.http.middlewares.middleware11.headers.referrerpolicy=foobar" +- "traefik.http.middlewares.middleware11.headers.sslforcehost=true" +- "traefik.http.middlewares.middleware11.headers.sslhost=foobar" +- "traefik.http.middlewares.middleware11.headers.sslproxyheaders.name0=foobar" +- "traefik.http.middlewares.middleware11.headers.sslproxyheaders.name1=foobar" +- "traefik.http.middlewares.middleware11.headers.sslredirect=true" +- "traefik.http.middlewares.middleware11.headers.ssltemporaryredirect=true" +- "traefik.http.middlewares.middleware11.headers.stsincludesubdomains=true" +- "traefik.http.middlewares.middleware11.headers.stspreload=true" +- "traefik.http.middlewares.middleware11.headers.stsseconds=42" +- "traefik.http.middlewares.middleware12.ipallowlist.ipstrategy=true" +- "traefik.http.middlewares.middleware12.ipallowlist.ipstrategy.depth=42" +- "traefik.http.middlewares.middleware12.ipallowlist.ipstrategy.excludedips=foobar, foobar" +- "traefik.http.middlewares.middleware12.ipallowlist.sourcerange=foobar, foobar" +- "traefik.http.middlewares.middleware13.ipwhitelist.ipstrategy=true" +- "traefik.http.middlewares.middleware13.ipwhitelist.ipstrategy.depth=42" +- "traefik.http.middlewares.middleware13.ipwhitelist.ipstrategy.excludedips=foobar, foobar" +- "traefik.http.middlewares.middleware13.ipwhitelist.sourcerange=foobar, foobar" +- "traefik.http.middlewares.middleware14.inflightreq.amount=42" +- "traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.ipstrategy.depth=42" +- "traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.ipstrategy.excludedips=foobar, foobar" +- "traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.requestheadername=foobar" +- "traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.requesthost=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.commonname=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.country=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.domaincomponent=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.locality=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.organization=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.province=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.serialnumber=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.notafter=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.notbefore=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.sans=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.serialnumber=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.commonname=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.country=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.domaincomponent=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.locality=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.organization=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.organizationalunit=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.province=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.serialnumber=true" +- "traefik.http.middlewares.middleware15.passtlsclientcert.pem=true" +- "traefik.http.middlewares.middleware16.plugin.pluginconf0.name0=foobar" +- "traefik.http.middlewares.middleware16.plugin.pluginconf0.name1=foobar" +- "traefik.http.middlewares.middleware16.plugin.pluginconf1.name0=foobar" +- "traefik.http.middlewares.middleware16.plugin.pluginconf1.name1=foobar" +- "traefik.http.middlewares.middleware17.ratelimit.average=42" +- "traefik.http.middlewares.middleware17.ratelimit.burst=42" +- "traefik.http.middlewares.middleware17.ratelimit.period=42s" +- "traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.ipstrategy.depth=42" +- "traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.ipstrategy.excludedips=foobar, foobar" +- "traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.requestheadername=foobar" +- "traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.requesthost=true" +- "traefik.http.middlewares.middleware18.redirectregex.permanent=true" +- "traefik.http.middlewares.middleware18.redirectregex.regex=foobar" +- "traefik.http.middlewares.middleware18.redirectregex.replacement=foobar" +- "traefik.http.middlewares.middleware19.redirectscheme.permanent=true" +- "traefik.http.middlewares.middleware19.redirectscheme.port=foobar" +- "traefik.http.middlewares.middleware19.redirectscheme.scheme=foobar" +- "traefik.http.middlewares.middleware20.replacepath.path=foobar" +- "traefik.http.middlewares.middleware21.replacepathregex.regex=foobar" +- "traefik.http.middlewares.middleware21.replacepathregex.replacement=foobar" +- "traefik.http.middlewares.middleware22.retry.attempts=42" +- "traefik.http.middlewares.middleware22.retry.initialinterval=42s" +- "traefik.http.middlewares.middleware23.stripprefix.forceslash=true" +- "traefik.http.middlewares.middleware23.stripprefix.prefixes=foobar, foobar" +- "traefik.http.middlewares.middleware24.stripprefixregex.regex=foobar, foobar" - "traefik.http.routers.router0.entrypoints=foobar, foobar" - "traefik.http.routers.router0.middlewares=foobar, foobar" - "traefik.http.routers.router0.priority=42" @@ -148,33 +155,34 @@ - "traefik.http.routers.router1.tls.domains[1].main=foobar" - "traefik.http.routers.router1.tls.domains[1].sans=foobar, foobar" - "traefik.http.routers.router1.tls.options=foobar" -- "traefik.http.services.service01.loadbalancer.healthcheck.followredirects=true" -- "traefik.http.services.service01.loadbalancer.healthcheck.headers.name0=foobar" -- "traefik.http.services.service01.loadbalancer.healthcheck.headers.name1=foobar" -- "traefik.http.services.service01.loadbalancer.healthcheck.hostname=foobar" -- "traefik.http.services.service01.loadbalancer.healthcheck.interval=foobar" -- "traefik.http.services.service01.loadbalancer.healthcheck.path=foobar" -- "traefik.http.services.service01.loadbalancer.healthcheck.method=foobar" -- "traefik.http.services.service01.loadbalancer.healthcheck.port=42" -- "traefik.http.services.service01.loadbalancer.healthcheck.scheme=foobar" -- "traefik.http.services.service01.loadbalancer.healthcheck.timeout=foobar" -- "traefik.http.services.service01.loadbalancer.passhostheader=true" -- "traefik.http.services.service01.loadbalancer.responseforwarding.flushinterval=foobar" -- "traefik.http.services.service01.loadbalancer.serverstransport=foobar" -- "traefik.http.services.service01.loadbalancer.sticky.cookie=true" -- "traefik.http.services.service01.loadbalancer.sticky.cookie.httponly=true" -- "traefik.http.services.service01.loadbalancer.sticky.cookie.name=foobar" -- "traefik.http.services.service01.loadbalancer.sticky.cookie.samesite=foobar" -- "traefik.http.services.service01.loadbalancer.sticky.cookie.secure=true" -- "traefik.http.services.service01.loadbalancer.server.port=foobar" -- "traefik.http.services.service01.loadbalancer.server.scheme=foobar" -- "traefik.tcp.middlewares.tcpmiddleware00.ipwhitelist.sourcerange=foobar, foobar" -- "traefik.tcp.middlewares.tcpmiddleware01.inflightconn.amount=42" -- "traefik.tcp.middlewares.tcpmiddleware02.ipallowlist.sourcerange=foobar, foobar" +- "traefik.http.services.service02.loadbalancer.healthcheck.followredirects=true" +- "traefik.http.services.service02.loadbalancer.healthcheck.headers.name0=foobar" +- "traefik.http.services.service02.loadbalancer.healthcheck.headers.name1=foobar" +- "traefik.http.services.service02.loadbalancer.healthcheck.hostname=foobar" +- "traefik.http.services.service02.loadbalancer.healthcheck.interval=foobar" +- "traefik.http.services.service02.loadbalancer.healthcheck.method=foobar" +- "traefik.http.services.service02.loadbalancer.healthcheck.path=foobar" +- "traefik.http.services.service02.loadbalancer.healthcheck.port=42" +- "traefik.http.services.service02.loadbalancer.healthcheck.scheme=foobar" +- "traefik.http.services.service02.loadbalancer.healthcheck.timeout=foobar" +- "traefik.http.services.service02.loadbalancer.passhostheader=true" +- "traefik.http.services.service02.loadbalancer.responseforwarding.flushinterval=foobar" +- "traefik.http.services.service02.loadbalancer.serverstransport=foobar" +- "traefik.http.services.service02.loadbalancer.sticky=true" +- "traefik.http.services.service02.loadbalancer.sticky.cookie=true" +- "traefik.http.services.service02.loadbalancer.sticky.cookie.httponly=true" +- "traefik.http.services.service02.loadbalancer.sticky.cookie.name=foobar" +- "traefik.http.services.service02.loadbalancer.sticky.cookie.samesite=foobar" +- "traefik.http.services.service02.loadbalancer.sticky.cookie.secure=true" +- "traefik.http.services.service02.loadbalancer.server.port=foobar" +- "traefik.http.services.service02.loadbalancer.server.scheme=foobar" +- "traefik.tcp.middlewares.tcpmiddleware01.ipallowlist.sourcerange=foobar, foobar" +- "traefik.tcp.middlewares.tcpmiddleware02.ipwhitelist.sourcerange=foobar, foobar" +- "traefik.tcp.middlewares.tcpmiddleware03.inflightconn.amount=42" - "traefik.tcp.routers.tcprouter0.entrypoints=foobar, foobar" - "traefik.tcp.routers.tcprouter0.middlewares=foobar, foobar" -- "traefik.tcp.routers.tcprouter0.rule=foobar" - "traefik.tcp.routers.tcprouter0.priority=42" +- "traefik.tcp.routers.tcprouter0.rule=foobar" - "traefik.tcp.routers.tcprouter0.service=foobar" - "traefik.tcp.routers.tcprouter0.tls=true" - "traefik.tcp.routers.tcprouter0.tls.certresolver=foobar" @@ -186,8 +194,8 @@ - "traefik.tcp.routers.tcprouter0.tls.passthrough=true" - "traefik.tcp.routers.tcprouter1.entrypoints=foobar, foobar" - "traefik.tcp.routers.tcprouter1.middlewares=foobar, foobar" -- "traefik.tcp.routers.tcprouter1.rule=foobar" - "traefik.tcp.routers.tcprouter1.priority=42" +- "traefik.tcp.routers.tcprouter1.rule=foobar" - "traefik.tcp.routers.tcprouter1.service=foobar" - "traefik.tcp.routers.tcprouter1.tls=true" - "traefik.tcp.routers.tcprouter1.tls.certresolver=foobar" @@ -197,6 +205,7 @@ - "traefik.tcp.routers.tcprouter1.tls.domains[1].sans=foobar, foobar" - "traefik.tcp.routers.tcprouter1.tls.options=foobar" - "traefik.tcp.routers.tcprouter1.tls.passthrough=true" +- "traefik.tcp.services.tcpservice01.loadbalancer.proxyprotocol=true" - "traefik.tcp.services.tcpservice01.loadbalancer.proxyprotocol.version=42" - "traefik.tcp.services.tcpservice01.loadbalancer.terminationdelay=42" - "traefik.tcp.services.tcpservice01.loadbalancer.server.port=foobar" @@ -205,13 +214,3 @@ - "traefik.udp.routers.udprouter1.entrypoints=foobar, foobar" - "traefik.udp.routers.udprouter1.service=foobar" - "traefik.udp.services.udpservice01.loadbalancer.server.port=foobar" -- "traefik.tls.stores.Store0.defaultcertificate.certfile=foobar" -- "traefik.tls.stores.Store0.defaultcertificate.keyfile=foobar" -- "traefik.tls.stores.Store0.defaultgeneratedcert.domain.main=foobar" -- "traefik.tls.stores.Store0.defaultgeneratedcert.domain.sans=foobar, foobar" -- "traefik.tls.stores.Store0.defaultgeneratedcert.resolver=foobar" -- "traefik.tls.stores.Store1.defaultcertificate.certfile=foobar" -- "traefik.tls.stores.Store1.defaultcertificate.keyfile=foobar" -- "traefik.tls.stores.Store1.defaultgeneratedcert.domain.main=foobar" -- "traefik.tls.stores.Store1.defaultgeneratedcert.domain.sans=foobar, foobar" -- "traefik.tls.stores.Store1.defaultgeneratedcert.resolver=foobar" diff --git a/docs/content/reference/dynamic-configuration/file.toml b/docs/content/reference/dynamic-configuration/file.toml index 7b00cffa2..fc04a29c6 100644 --- a/docs/content/reference/dynamic-configuration/file.toml +++ b/docs/content/reference/dynamic-configuration/file.toml @@ -1,3 +1,5 @@ +## CODE GENERATED AUTOMATICALLY +## THIS FILE MUST NOT BE EDITED BY HAND [http] [http.routers] [http.routers.Router0] @@ -36,22 +38,27 @@ sans = ["foobar", "foobar"] [http.services] [http.services.Service01] - [http.services.Service01.loadBalancer] + [http.services.Service01.failover] + service = "foobar" + fallback = "foobar" + [http.services.Service01.failover.healthCheck] + [http.services.Service02] + [http.services.Service02.loadBalancer] passHostHeader = true serversTransport = "foobar" - [http.services.Service01.loadBalancer.sticky] - [http.services.Service01.loadBalancer.sticky.cookie] + [http.services.Service02.loadBalancer.sticky] + [http.services.Service02.loadBalancer.sticky.cookie] name = "foobar" secure = true httpOnly = true sameSite = "foobar" - [[http.services.Service01.loadBalancer.servers]] + [[http.services.Service02.loadBalancer.servers]] url = "foobar" - [[http.services.Service01.loadBalancer.servers]] + [[http.services.Service02.loadBalancer.servers]] url = "foobar" - [http.services.Service01.loadBalancer.healthCheck] + [http.services.Service02.loadBalancer.healthCheck] scheme = "foobar" path = "foobar" method = "foobar" @@ -60,109 +67,102 @@ timeout = "foobar" hostname = "foobar" followRedirects = true - [http.services.Service01.loadBalancer.healthCheck.headers] + [http.services.Service02.loadBalancer.healthCheck.headers] name0 = "foobar" name1 = "foobar" - [http.services.Service01.loadBalancer.responseForwarding] + [http.services.Service02.loadBalancer.responseForwarding] flushInterval = "foobar" - [http.services.Service02] - [http.services.Service02.mirroring] + [http.services.Service03] + [http.services.Service03.mirroring] service = "foobar" maxBodySize = 42 - [http.services.Service02.mirroring.healthCheck] - - [[http.services.Service02.mirroring.mirrors]] + [[http.services.Service03.mirroring.mirrors]] name = "foobar" percent = 42 - [[http.services.Service02.mirroring.mirrors]] + [[http.services.Service03.mirroring.mirrors]] name = "foobar" percent = 42 - [http.services.Service03] - [http.services.Service03.weighted] - [http.services.Service03.weighted.healthCheck] + [http.services.Service03.mirroring.healthCheck] + [http.services.Service04] + [http.services.Service04.weighted] - [[http.services.Service03.weighted.services]] + [[http.services.Service04.weighted.services]] name = "foobar" weight = 42 - [[http.services.Service03.weighted.services]] + [[http.services.Service04.weighted.services]] name = "foobar" weight = 42 - [http.services.Service03.weighted.sticky] - [http.services.Service03.weighted.sticky.cookie] + [http.services.Service04.weighted.sticky] + [http.services.Service04.weighted.sticky.cookie] name = "foobar" secure = true httpOnly = true sameSite = "foobar" - [http.services.Service04] - [http.services.Service04.failover] - service = "foobar" - fallback = "foobar" - - [http.services.Service04.failover.healthCheck] + [http.services.Service04.weighted.healthCheck] [http.middlewares] - [http.middlewares.Middleware00] - [http.middlewares.Middleware00.addPrefix] - prefix = "foobar" [http.middlewares.Middleware01] - [http.middlewares.Middleware01.basicAuth] + [http.middlewares.Middleware01.addPrefix] + prefix = "foobar" + [http.middlewares.Middleware02] + [http.middlewares.Middleware02.basicAuth] users = ["foobar", "foobar"] usersFile = "foobar" realm = "foobar" removeHeader = true headerField = "foobar" - [http.middlewares.Middleware02] - [http.middlewares.Middleware02.buffering] + [http.middlewares.Middleware03] + [http.middlewares.Middleware03.buffering] maxRequestBodyBytes = 42 memRequestBodyBytes = 42 maxResponseBodyBytes = 42 memResponseBodyBytes = 42 retryExpression = "foobar" - [http.middlewares.Middleware03] - [http.middlewares.Middleware03.chain] - middlewares = ["foobar", "foobar"] [http.middlewares.Middleware04] - [http.middlewares.Middleware04.circuitBreaker] + [http.middlewares.Middleware04.chain] + middlewares = ["foobar", "foobar"] + [http.middlewares.Middleware05] + [http.middlewares.Middleware05.circuitBreaker] expression = "foobar" checkPeriod = "42s" fallbackDuration = "42s" recoveryDuration = "42s" - [http.middlewares.Middleware05] - [http.middlewares.Middleware05.compress] + [http.middlewares.Middleware06] + [http.middlewares.Middleware06.compress] excludedContentTypes = ["foobar", "foobar"] minResponseBodyBytes = 42 - [http.middlewares.Middleware06] - [http.middlewares.Middleware06.contentType] - autoDetect = true [http.middlewares.Middleware07] - [http.middlewares.Middleware07.digestAuth] + [http.middlewares.Middleware07.contentType] + autoDetect = true + [http.middlewares.Middleware08] + [http.middlewares.Middleware08.digestAuth] users = ["foobar", "foobar"] usersFile = "foobar" removeHeader = true realm = "foobar" headerField = "foobar" - [http.middlewares.Middleware08] - [http.middlewares.Middleware08.errors] + [http.middlewares.Middleware09] + [http.middlewares.Middleware09.errors] status = ["foobar", "foobar"] service = "foobar" query = "foobar" - [http.middlewares.Middleware09] - [http.middlewares.Middleware09.forwardAuth] + [http.middlewares.Middleware10] + [http.middlewares.Middleware10.forwardAuth] address = "foobar" trustForwardHeader = true authResponseHeaders = ["foobar", "foobar"] authResponseHeadersRegex = "foobar" authRequestHeaders = ["foobar", "foobar"] - [http.middlewares.Middleware09.forwardAuth.tls] + [http.middlewares.Middleware10.forwardAuth.tls] ca = "foobar" caOptional = true cert = "foobar" key = "foobar" insecureSkipVerify = true - [http.middlewares.Middleware10] - [http.middlewares.Middleware10.headers] + [http.middlewares.Middleware11] + [http.middlewares.Middleware11.headers] accessControlAllowCredentials = true accessControlAllowHeaders = ["foobar", "foobar"] accessControlAllowMethods = ["foobar", "foobar"] @@ -192,39 +192,45 @@ featurePolicy = "foobar" permissionsPolicy = "foobar" isDevelopment = true - [http.middlewares.Middleware10.headers.customRequestHeaders] + [http.middlewares.Middleware11.headers.customRequestHeaders] name0 = "foobar" name1 = "foobar" - [http.middlewares.Middleware10.headers.customResponseHeaders] + [http.middlewares.Middleware11.headers.customResponseHeaders] name0 = "foobar" name1 = "foobar" - [http.middlewares.Middleware10.headers.sslProxyHeaders] + [http.middlewares.Middleware11.headers.sslProxyHeaders] name0 = "foobar" name1 = "foobar" - [http.middlewares.Middleware11] - [http.middlewares.Middleware11.ipWhiteList] + [http.middlewares.Middleware12] + [http.middlewares.Middleware12.ipAllowList] sourceRange = ["foobar", "foobar"] - [http.middlewares.Middleware11.ipWhiteList.ipStrategy] + [http.middlewares.Middleware12.ipAllowList.ipStrategy] depth = 42 excludedIPs = ["foobar", "foobar"] - [http.middlewares.Middleware12] - [http.middlewares.Middleware12.inFlightReq] + [http.middlewares.Middleware13] + [http.middlewares.Middleware13.ipWhiteList] + sourceRange = ["foobar", "foobar"] + [http.middlewares.Middleware13.ipWhiteList.ipStrategy] + depth = 42 + excludedIPs = ["foobar", "foobar"] + [http.middlewares.Middleware14] + [http.middlewares.Middleware14.inFlightReq] amount = 42 - [http.middlewares.Middleware12.inFlightReq.sourceCriterion] + [http.middlewares.Middleware14.inFlightReq.sourceCriterion] requestHeaderName = "foobar" requestHost = true - [http.middlewares.Middleware12.inFlightReq.sourceCriterion.ipStrategy] + [http.middlewares.Middleware14.inFlightReq.sourceCriterion.ipStrategy] depth = 42 excludedIPs = ["foobar", "foobar"] - [http.middlewares.Middleware13] - [http.middlewares.Middleware13.passTLSClientCert] + [http.middlewares.Middleware15] + [http.middlewares.Middleware15.passTLSClientCert] pem = true - [http.middlewares.Middleware13.passTLSClientCert.info] + [http.middlewares.Middleware15.passTLSClientCert.info] notAfter = true notBefore = true sans = true serialNumber = true - [http.middlewares.Middleware13.passTLSClientCert.info.subject] + [http.middlewares.Middleware15.passTLSClientCert.info.subject] country = true province = true locality = true @@ -233,7 +239,7 @@ commonName = true serialNumber = true domainComponent = true - [http.middlewares.Middleware13.passTLSClientCert.info.issuer] + [http.middlewares.Middleware15.passTLSClientCert.info.issuer] country = true province = true locality = true @@ -241,55 +247,53 @@ commonName = true serialNumber = true domainComponent = true - [http.middlewares.Middleware14] - [http.middlewares.Middleware14.plugin] - [http.middlewares.Middleware14.plugin.PluginConf] - foo = "bar" - [http.middlewares.Middleware15] - [http.middlewares.Middleware15.rateLimit] + [http.middlewares.Middleware16] + [http.middlewares.Middleware16.plugin] + [http.middlewares.Middleware16.plugin.PluginConf0] + name0 = "foobar" + name1 = "foobar" + [http.middlewares.Middleware16.plugin.PluginConf1] + name0 = "foobar" + name1 = "foobar" + [http.middlewares.Middleware17] + [http.middlewares.Middleware17.rateLimit] average = 42 period = "42s" burst = 42 - [http.middlewares.Middleware15.rateLimit.sourceCriterion] + [http.middlewares.Middleware17.rateLimit.sourceCriterion] requestHeaderName = "foobar" requestHost = true - [http.middlewares.Middleware15.rateLimit.sourceCriterion.ipStrategy] + [http.middlewares.Middleware17.rateLimit.sourceCriterion.ipStrategy] depth = 42 excludedIPs = ["foobar", "foobar"] - [http.middlewares.Middleware16] - [http.middlewares.Middleware16.redirectRegex] + [http.middlewares.Middleware18] + [http.middlewares.Middleware18.redirectRegex] regex = "foobar" replacement = "foobar" permanent = true - [http.middlewares.Middleware17] - [http.middlewares.Middleware17.redirectScheme] + [http.middlewares.Middleware19] + [http.middlewares.Middleware19.redirectScheme] scheme = "foobar" port = "foobar" permanent = true - [http.middlewares.Middleware18] - [http.middlewares.Middleware18.replacePath] + [http.middlewares.Middleware20] + [http.middlewares.Middleware20.replacePath] path = "foobar" - [http.middlewares.Middleware19] - [http.middlewares.Middleware19.replacePathRegex] + [http.middlewares.Middleware21] + [http.middlewares.Middleware21.replacePathRegex] regex = "foobar" replacement = "foobar" - [http.middlewares.Middleware20] - [http.middlewares.Middleware20.retry] + [http.middlewares.Middleware22] + [http.middlewares.Middleware22.retry] attempts = 42 initialInterval = "42s" - [http.middlewares.Middleware21] - [http.middlewares.Middleware21.stripPrefix] + [http.middlewares.Middleware23] + [http.middlewares.Middleware23.stripPrefix] prefixes = ["foobar", "foobar"] forceSlash = true - [http.middlewares.Middleware22] - [http.middlewares.Middleware22.stripPrefixRegex] + [http.middlewares.Middleware24] + [http.middlewares.Middleware24.stripPrefixRegex] regex = ["foobar", "foobar"] - [http.middlewares.Middleware23] - [http.middlewares.Middleware23.ipAllowList] - sourceRange = ["foobar", "foobar"] - [http.middlewares.Middleware23.ipAllowList.ipStrategy] - depth = 42 - excludedIPs = ["foobar", "foobar"] [http.serversTransports] [http.serversTransports.ServersTransport0] serverName = "foobar" @@ -395,11 +399,14 @@ name = "foobar" weight = 42 [tcp.middlewares] - [tcp.middlewares.TCPMiddleware00] - [tcp.middlewares.TCPMiddleware00.ipWhiteList] - sourceRange = ["foobar", "foobar"] [tcp.middlewares.TCPMiddleware01] - [tcp.middlewares.TCPMiddleware01.inFlightConn] + [tcp.middlewares.TCPMiddleware01.ipAllowList] + sourceRange = ["foobar", "foobar"] + [tcp.middlewares.TCPMiddleware02] + [tcp.middlewares.TCPMiddleware02.ipWhiteList] + sourceRange = ["foobar", "foobar"] + [tcp.middlewares.TCPMiddleware03] + [tcp.middlewares.TCPMiddleware03.inFlightConn] amount = 42 [udp] diff --git a/docs/content/reference/dynamic-configuration/file.yaml b/docs/content/reference/dynamic-configuration/file.yaml index a19859e0b..ec861d0a2 100644 --- a/docs/content/reference/dynamic-configuration/file.yaml +++ b/docs/content/reference/dynamic-configuration/file.yaml @@ -1,3 +1,5 @@ +## CODE GENERATED AUTOMATICALLY +## THIS FILE MUST NOT BE EDITED BY HAND http: routers: Router0: @@ -46,6 +48,11 @@ http: - foobar services: Service01: + failover: + service: foobar + fallback: foobar + healthCheck: {} + Service02: loadBalancer: sticky: cookie: @@ -72,19 +79,18 @@ http: responseForwarding: flushInterval: foobar serversTransport: foobar - Service02: + Service03: mirroring: service: foobar maxBodySize: 42 - healthCheck: {} mirrors: - name: foobar percent: 42 - name: foobar percent: 42 - Service03: - weighted: healthCheck: {} + Service04: + weighted: services: - name: foobar weight: 42 @@ -96,16 +102,12 @@ http: secure: true httpOnly: true sameSite: foobar - Service04: - failover: - service: foobar - fallback: foobar healthCheck: {} middlewares: - Middleware00: + Middleware01: addPrefix: prefix: foobar - Middleware01: + Middleware02: basicAuth: users: - foobar @@ -114,34 +116,34 @@ http: realm: foobar removeHeader: true headerField: foobar - Middleware02: + Middleware03: buffering: maxRequestBodyBytes: 42 memRequestBodyBytes: 42 maxResponseBodyBytes: 42 memResponseBodyBytes: 42 retryExpression: foobar - Middleware03: + Middleware04: chain: middlewares: - foobar - foobar - Middleware04: + Middleware05: circuitBreaker: expression: foobar checkPeriod: 42s fallbackDuration: 42s recoveryDuration: 42s - Middleware05: + Middleware06: compress: excludedContentTypes: - foobar - foobar minResponseBodyBytes: 42 - Middleware06: + Middleware07: contentType: autoDetect: true - Middleware07: + Middleware08: digestAuth: users: - foobar @@ -150,14 +152,14 @@ http: removeHeader: true realm: foobar headerField: foobar - Middleware08: + Middleware09: errors: status: - foobar - foobar service: foobar query: foobar - Middleware09: + Middleware10: forwardAuth: address: foobar tls: @@ -174,7 +176,7 @@ http: authRequestHeaders: - foobar - foobar - Middleware10: + Middleware11: headers: customRequestHeaders: name0: foobar @@ -228,7 +230,17 @@ http: featurePolicy: foobar permissionsPolicy: foobar isDevelopment: true - Middleware11: + Middleware12: + ipAllowList: + sourceRange: + - foobar + - foobar + ipStrategy: + depth: 42 + excludedIPs: + - foobar + - foobar + Middleware13: ipWhiteList: sourceRange: - foobar @@ -238,7 +250,7 @@ http: excludedIPs: - foobar - foobar - Middleware12: + Middleware14: inFlightReq: amount: 42 sourceCriterion: @@ -249,13 +261,14 @@ http: - foobar requestHeaderName: foobar requestHost: true - Middleware13: + Middleware15: passTLSClientCert: pem: true info: notAfter: true notBefore: true sans: true + serialNumber: true subject: country: true province: true @@ -273,12 +286,15 @@ http: commonName: true serialNumber: true domainComponent: true - serialNumber: true - Middleware14: + Middleware16: plugin: - PluginConf: - foo: bar - Middleware15: + PluginConf0: + name0: foobar + name1: foobar + PluginConf1: + name0: foobar + name1: foobar + Middleware17: rateLimit: average: 42 period: 42s @@ -291,48 +307,38 @@ http: - foobar requestHeaderName: foobar requestHost: true - Middleware16: + Middleware18: redirectRegex: regex: foobar replacement: foobar permanent: true - Middleware17: + Middleware19: redirectScheme: scheme: foobar port: foobar permanent: true - Middleware18: + Middleware20: replacePath: path: foobar - Middleware19: + Middleware21: replacePathRegex: regex: foobar replacement: foobar - Middleware20: + Middleware22: retry: attempts: 42 initialInterval: 42s - Middleware21: + Middleware23: stripPrefix: prefixes: - foobar - foobar forceSlash: true - Middleware22: + Middleware24: stripPrefixRegex: regex: - foobar - foobar - Middleware23: - ipAllowList: - sourceRange: - - foobar - - foobar - ipStrategy: - depth: 42 - excludedIPs: - - foobar - - foobar serversTransports: ServersTransport0: serverName: foobar @@ -439,19 +445,19 @@ tcp: - name: foobar weight: 42 middlewares: - TCPMiddleware00: - ipWhiteList: - sourceRange: - - foobar - - foobar TCPMiddleware01: - inFlightConn: - amount: 42 - TCPMiddleware02: ipAllowList: sourceRange: - foobar - foobar + TCPMiddleware02: + ipWhiteList: + sourceRange: + - foobar + - foobar + TCPMiddleware03: + inFlightConn: + amount: 42 udp: routers: UDPRouter0: diff --git a/docs/content/reference/dynamic-configuration/kv-ref.md b/docs/content/reference/dynamic-configuration/kv-ref.md index 13029dd50..b39dc96ab 100644 --- a/docs/content/reference/dynamic-configuration/kv-ref.md +++ b/docs/content/reference/dynamic-configuration/kv-ref.md @@ -1,150 +1,157 @@ -| `traefik/http/middlewares/Middleware00/addPrefix/prefix` | `foobar` | -| `traefik/http/middlewares/Middleware01/basicAuth/headerField` | `foobar` | -| `traefik/http/middlewares/Middleware01/basicAuth/realm` | `foobar` | -| `traefik/http/middlewares/Middleware01/basicAuth/removeHeader` | `true` | -| `traefik/http/middlewares/Middleware01/basicAuth/users/0` | `foobar` | -| `traefik/http/middlewares/Middleware01/basicAuth/users/1` | `foobar` | -| `traefik/http/middlewares/Middleware01/basicAuth/usersFile` | `foobar` | -| `traefik/http/middlewares/Middleware02/buffering/maxRequestBodyBytes` | `42` | -| `traefik/http/middlewares/Middleware02/buffering/maxResponseBodyBytes` | `42` | -| `traefik/http/middlewares/Middleware02/buffering/memRequestBodyBytes` | `42` | -| `traefik/http/middlewares/Middleware02/buffering/memResponseBodyBytes` | `42` | -| `traefik/http/middlewares/Middleware02/buffering/retryExpression` | `foobar` | -| `traefik/http/middlewares/Middleware03/chain/middlewares/0` | `foobar` | -| `traefik/http/middlewares/Middleware03/chain/middlewares/1` | `foobar` | -| `traefik/http/middlewares/Middleware04/circuitBreaker/checkPeriod` | `42s` | -| `traefik/http/middlewares/Middleware04/circuitBreaker/expression` | `foobar` | -| `traefik/http/middlewares/Middleware04/circuitBreaker/fallbackDuration` | `42s` | -| `traefik/http/middlewares/Middleware04/circuitBreaker/recoveryDuration` | `42s` | -| `traefik/http/middlewares/Middleware05/compress/excludedContentTypes/0` | `foobar` | -| `traefik/http/middlewares/Middleware05/compress/excludedContentTypes/1` | `foobar` | -| `traefik/http/middlewares/Middleware05/compress/minResponseBodyBytes` | `42` | -| `traefik/http/middlewares/Middleware06/contentType/autoDetect` | `true` | -| `traefik/http/middlewares/Middleware07/digestAuth/headerField` | `foobar` | -| `traefik/http/middlewares/Middleware07/digestAuth/realm` | `foobar` | -| `traefik/http/middlewares/Middleware07/digestAuth/removeHeader` | `true` | -| `traefik/http/middlewares/Middleware07/digestAuth/users/0` | `foobar` | -| `traefik/http/middlewares/Middleware07/digestAuth/users/1` | `foobar` | -| `traefik/http/middlewares/Middleware07/digestAuth/usersFile` | `foobar` | -| `traefik/http/middlewares/Middleware08/errors/query` | `foobar` | -| `traefik/http/middlewares/Middleware08/errors/service` | `foobar` | -| `traefik/http/middlewares/Middleware08/errors/status/0` | `foobar` | -| `traefik/http/middlewares/Middleware08/errors/status/1` | `foobar` | -| `traefik/http/middlewares/Middleware09/forwardAuth/address` | `foobar` | -| `traefik/http/middlewares/Middleware09/forwardAuth/authRequestHeaders/0` | `foobar` | -| `traefik/http/middlewares/Middleware09/forwardAuth/authRequestHeaders/1` | `foobar` | -| `traefik/http/middlewares/Middleware09/forwardAuth/authResponseHeaders/0` | `foobar` | -| `traefik/http/middlewares/Middleware09/forwardAuth/authResponseHeaders/1` | `foobar` | -| `traefik/http/middlewares/Middleware09/forwardAuth/authResponseHeadersRegex` | `foobar` | -| `traefik/http/middlewares/Middleware09/forwardAuth/tls/ca` | `foobar` | -| `traefik/http/middlewares/Middleware09/forwardAuth/tls/caOptional` | `true` | -| `traefik/http/middlewares/Middleware09/forwardAuth/tls/cert` | `foobar` | -| `traefik/http/middlewares/Middleware09/forwardAuth/tls/insecureSkipVerify` | `true` | -| `traefik/http/middlewares/Middleware09/forwardAuth/tls/key` | `foobar` | -| `traefik/http/middlewares/Middleware09/forwardAuth/trustForwardHeader` | `true` | -| `traefik/http/middlewares/Middleware10/headers/accessControlAllowCredentials` | `true` | -| `traefik/http/middlewares/Middleware10/headers/accessControlAllowHeaders/0` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/accessControlAllowHeaders/1` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/accessControlAllowMethods/0` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/accessControlAllowMethods/1` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/accessControlAllowOriginList/0` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/accessControlAllowOriginList/1` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/accessControlAllowOriginListRegex/0` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/accessControlAllowOriginListRegex/1` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/accessControlExposeHeaders/0` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/accessControlExposeHeaders/1` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/accessControlMaxAge` | `42` | -| `traefik/http/middlewares/Middleware10/headers/addVaryHeader` | `true` | -| `traefik/http/middlewares/Middleware10/headers/allowedHosts/0` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/allowedHosts/1` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/browserXssFilter` | `true` | -| `traefik/http/middlewares/Middleware10/headers/contentSecurityPolicy` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/contentTypeNosniff` | `true` | -| `traefik/http/middlewares/Middleware10/headers/customBrowserXSSValue` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/customFrameOptionsValue` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/customRequestHeaders/name0` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/customRequestHeaders/name1` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/customResponseHeaders/name0` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/customResponseHeaders/name1` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/featurePolicy` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/forceSTSHeader` | `true` | -| `traefik/http/middlewares/Middleware10/headers/frameDeny` | `true` | -| `traefik/http/middlewares/Middleware10/headers/hostsProxyHeaders/0` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/hostsProxyHeaders/1` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/isDevelopment` | `true` | -| `traefik/http/middlewares/Middleware10/headers/permissionsPolicy` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/publicKey` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/referrerPolicy` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/sslForceHost` | `true` | -| `traefik/http/middlewares/Middleware10/headers/sslHost` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/sslProxyHeaders/name0` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/sslProxyHeaders/name1` | `foobar` | -| `traefik/http/middlewares/Middleware10/headers/sslRedirect` | `true` | -| `traefik/http/middlewares/Middleware10/headers/sslTemporaryRedirect` | `true` | -| `traefik/http/middlewares/Middleware10/headers/stsIncludeSubdomains` | `true` | -| `traefik/http/middlewares/Middleware10/headers/stsPreload` | `true` | -| `traefik/http/middlewares/Middleware10/headers/stsSeconds` | `42` | -| `traefik/http/middlewares/Middleware11/ipWhiteList/ipStrategy/depth` | `42` | -| `traefik/http/middlewares/Middleware11/ipWhiteList/ipStrategy/excludedIPs/0` | `foobar` | -| `traefik/http/middlewares/Middleware11/ipWhiteList/ipStrategy/excludedIPs/1` | `foobar` | -| `traefik/http/middlewares/Middleware11/ipWhiteList/sourceRange/0` | `foobar` | -| `traefik/http/middlewares/Middleware11/ipWhiteList/sourceRange/1` | `foobar` | -| `traefik/http/middlewares/Middleware12/inFlightReq/amount` | `42` | -| `traefik/http/middlewares/Middleware12/inFlightReq/sourceCriterion/ipStrategy/depth` | `42` | -| `traefik/http/middlewares/Middleware12/inFlightReq/sourceCriterion/ipStrategy/excludedIPs/0` | `foobar` | -| `traefik/http/middlewares/Middleware12/inFlightReq/sourceCriterion/ipStrategy/excludedIPs/1` | `foobar` | -| `traefik/http/middlewares/Middleware12/inFlightReq/sourceCriterion/requestHeaderName` | `foobar` | -| `traefik/http/middlewares/Middleware12/inFlightReq/sourceCriterion/requestHost` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/commonName` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/country` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/domainComponent` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/locality` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/organization` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/province` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/serialNumber` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/notAfter` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/notBefore` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/sans` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/serialNumber` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/commonName` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/country` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/domainComponent` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/locality` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/organization` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/organizationalUnit` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/province` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/serialNumber` | `true` | -| `traefik/http/middlewares/Middleware13/passTLSClientCert/pem` | `true` | -| `traefik/http/middlewares/Middleware14/plugin/PluginConf/foo` | `bar` | -| `traefik/http/middlewares/Middleware15/rateLimit/average` | `42` | -| `traefik/http/middlewares/Middleware15/rateLimit/burst` | `42` | -| `traefik/http/middlewares/Middleware15/rateLimit/period` | `42s` | -| `traefik/http/middlewares/Middleware15/rateLimit/sourceCriterion/ipStrategy/depth` | `42` | -| `traefik/http/middlewares/Middleware15/rateLimit/sourceCriterion/ipStrategy/excludedIPs/0` | `foobar` | -| `traefik/http/middlewares/Middleware15/rateLimit/sourceCriterion/ipStrategy/excludedIPs/1` | `foobar` | -| `traefik/http/middlewares/Middleware15/rateLimit/sourceCriterion/requestHeaderName` | `foobar` | -| `traefik/http/middlewares/Middleware15/rateLimit/sourceCriterion/requestHost` | `true` | -| `traefik/http/middlewares/Middleware16/redirectRegex/permanent` | `true` | -| `traefik/http/middlewares/Middleware16/redirectRegex/regex` | `foobar` | -| `traefik/http/middlewares/Middleware16/redirectRegex/replacement` | `foobar` | -| `traefik/http/middlewares/Middleware17/redirectScheme/permanent` | `true` | -| `traefik/http/middlewares/Middleware17/redirectScheme/port` | `foobar` | -| `traefik/http/middlewares/Middleware17/redirectScheme/scheme` | `foobar` | -| `traefik/http/middlewares/Middleware18/replacePath/path` | `foobar` | -| `traefik/http/middlewares/Middleware19/replacePathRegex/regex` | `foobar` | -| `traefik/http/middlewares/Middleware19/replacePathRegex/replacement` | `foobar` | -| `traefik/http/middlewares/Middleware20/retry/attempts` | `42` | -| `traefik/http/middlewares/Middleware20/retry/initialInterval` | `42s` | -| `traefik/http/middlewares/Middleware21/stripPrefix/forceSlash` | `true` | -| `traefik/http/middlewares/Middleware21/stripPrefix/prefixes/0` | `foobar` | -| `traefik/http/middlewares/Middleware21/stripPrefix/prefixes/1` | `foobar` | -| `traefik/http/middlewares/Middleware22/stripPrefixRegex/regex/0` | `foobar` | -| `traefik/http/middlewares/Middleware22/stripPrefixRegex/regex/1` | `foobar` | -| `traefik/http/middlewares/Middleware23/ipAllowList/ipStrategy/depth` | `42` | -| `traefik/http/middlewares/Middleware23/ipAllowList/ipStrategy/excludedIPs/0` | `foobar` | -| `traefik/http/middlewares/Middleware23/ipAllowList/ipStrategy/excludedIPs/1` | `foobar` | -| `traefik/http/middlewares/Middleware23/ipAllowList/sourceRange/0` | `foobar` | -| `traefik/http/middlewares/Middleware23/ipAllowList/sourceRange/1` | `foobar` | + +| `traefik/http/middlewares/Middleware01/addPrefix/prefix` | `foobar` | +| `traefik/http/middlewares/Middleware02/basicAuth/headerField` | `foobar` | +| `traefik/http/middlewares/Middleware02/basicAuth/realm` | `foobar` | +| `traefik/http/middlewares/Middleware02/basicAuth/removeHeader` | `true` | +| `traefik/http/middlewares/Middleware02/basicAuth/users/0` | `foobar` | +| `traefik/http/middlewares/Middleware02/basicAuth/users/1` | `foobar` | +| `traefik/http/middlewares/Middleware02/basicAuth/usersFile` | `foobar` | +| `traefik/http/middlewares/Middleware03/buffering/maxRequestBodyBytes` | `42` | +| `traefik/http/middlewares/Middleware03/buffering/maxResponseBodyBytes` | `42` | +| `traefik/http/middlewares/Middleware03/buffering/memRequestBodyBytes` | `42` | +| `traefik/http/middlewares/Middleware03/buffering/memResponseBodyBytes` | `42` | +| `traefik/http/middlewares/Middleware03/buffering/retryExpression` | `foobar` | +| `traefik/http/middlewares/Middleware04/chain/middlewares/0` | `foobar` | +| `traefik/http/middlewares/Middleware04/chain/middlewares/1` | `foobar` | +| `traefik/http/middlewares/Middleware05/circuitBreaker/checkPeriod` | `42s` | +| `traefik/http/middlewares/Middleware05/circuitBreaker/expression` | `foobar` | +| `traefik/http/middlewares/Middleware05/circuitBreaker/fallbackDuration` | `42s` | +| `traefik/http/middlewares/Middleware05/circuitBreaker/recoveryDuration` | `42s` | +| `traefik/http/middlewares/Middleware06/compress/excludedContentTypes/0` | `foobar` | +| `traefik/http/middlewares/Middleware06/compress/excludedContentTypes/1` | `foobar` | +| `traefik/http/middlewares/Middleware06/compress/minResponseBodyBytes` | `42` | +| `traefik/http/middlewares/Middleware07/contentType/autoDetect` | `true` | +| `traefik/http/middlewares/Middleware08/digestAuth/headerField` | `foobar` | +| `traefik/http/middlewares/Middleware08/digestAuth/realm` | `foobar` | +| `traefik/http/middlewares/Middleware08/digestAuth/removeHeader` | `true` | +| `traefik/http/middlewares/Middleware08/digestAuth/users/0` | `foobar` | +| `traefik/http/middlewares/Middleware08/digestAuth/users/1` | `foobar` | +| `traefik/http/middlewares/Middleware08/digestAuth/usersFile` | `foobar` | +| `traefik/http/middlewares/Middleware09/errors/query` | `foobar` | +| `traefik/http/middlewares/Middleware09/errors/service` | `foobar` | +| `traefik/http/middlewares/Middleware09/errors/status/0` | `foobar` | +| `traefik/http/middlewares/Middleware09/errors/status/1` | `foobar` | +| `traefik/http/middlewares/Middleware10/forwardAuth/address` | `foobar` | +| `traefik/http/middlewares/Middleware10/forwardAuth/authRequestHeaders/0` | `foobar` | +| `traefik/http/middlewares/Middleware10/forwardAuth/authRequestHeaders/1` | `foobar` | +| `traefik/http/middlewares/Middleware10/forwardAuth/authResponseHeaders/0` | `foobar` | +| `traefik/http/middlewares/Middleware10/forwardAuth/authResponseHeaders/1` | `foobar` | +| `traefik/http/middlewares/Middleware10/forwardAuth/authResponseHeadersRegex` | `foobar` | +| `traefik/http/middlewares/Middleware10/forwardAuth/tls/ca` | `foobar` | +| `traefik/http/middlewares/Middleware10/forwardAuth/tls/caOptional` | `true` | +| `traefik/http/middlewares/Middleware10/forwardAuth/tls/cert` | `foobar` | +| `traefik/http/middlewares/Middleware10/forwardAuth/tls/insecureSkipVerify` | `true` | +| `traefik/http/middlewares/Middleware10/forwardAuth/tls/key` | `foobar` | +| `traefik/http/middlewares/Middleware10/forwardAuth/trustForwardHeader` | `true` | +| `traefik/http/middlewares/Middleware11/headers/accessControlAllowCredentials` | `true` | +| `traefik/http/middlewares/Middleware11/headers/accessControlAllowHeaders/0` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/accessControlAllowHeaders/1` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/accessControlAllowMethods/0` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/accessControlAllowMethods/1` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/accessControlAllowOriginList/0` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/accessControlAllowOriginList/1` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/accessControlAllowOriginListRegex/0` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/accessControlAllowOriginListRegex/1` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/accessControlExposeHeaders/0` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/accessControlExposeHeaders/1` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/accessControlMaxAge` | `42` | +| `traefik/http/middlewares/Middleware11/headers/addVaryHeader` | `true` | +| `traefik/http/middlewares/Middleware11/headers/allowedHosts/0` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/allowedHosts/1` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/browserXssFilter` | `true` | +| `traefik/http/middlewares/Middleware11/headers/contentSecurityPolicy` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/contentTypeNosniff` | `true` | +| `traefik/http/middlewares/Middleware11/headers/customBrowserXSSValue` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/customFrameOptionsValue` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/customRequestHeaders/name0` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/customRequestHeaders/name1` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/customResponseHeaders/name0` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/customResponseHeaders/name1` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/featurePolicy` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/forceSTSHeader` | `true` | +| `traefik/http/middlewares/Middleware11/headers/frameDeny` | `true` | +| `traefik/http/middlewares/Middleware11/headers/hostsProxyHeaders/0` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/hostsProxyHeaders/1` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/isDevelopment` | `true` | +| `traefik/http/middlewares/Middleware11/headers/permissionsPolicy` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/publicKey` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/referrerPolicy` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/sslForceHost` | `true` | +| `traefik/http/middlewares/Middleware11/headers/sslHost` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/sslProxyHeaders/name0` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/sslProxyHeaders/name1` | `foobar` | +| `traefik/http/middlewares/Middleware11/headers/sslRedirect` | `true` | +| `traefik/http/middlewares/Middleware11/headers/sslTemporaryRedirect` | `true` | +| `traefik/http/middlewares/Middleware11/headers/stsIncludeSubdomains` | `true` | +| `traefik/http/middlewares/Middleware11/headers/stsPreload` | `true` | +| `traefik/http/middlewares/Middleware11/headers/stsSeconds` | `42` | +| `traefik/http/middlewares/Middleware12/ipAllowList/ipStrategy/depth` | `42` | +| `traefik/http/middlewares/Middleware12/ipAllowList/ipStrategy/excludedIPs/0` | `foobar` | +| `traefik/http/middlewares/Middleware12/ipAllowList/ipStrategy/excludedIPs/1` | `foobar` | +| `traefik/http/middlewares/Middleware12/ipAllowList/sourceRange/0` | `foobar` | +| `traefik/http/middlewares/Middleware12/ipAllowList/sourceRange/1` | `foobar` | +| `traefik/http/middlewares/Middleware13/ipWhiteList/ipStrategy/depth` | `42` | +| `traefik/http/middlewares/Middleware13/ipWhiteList/ipStrategy/excludedIPs/0` | `foobar` | +| `traefik/http/middlewares/Middleware13/ipWhiteList/ipStrategy/excludedIPs/1` | `foobar` | +| `traefik/http/middlewares/Middleware13/ipWhiteList/sourceRange/0` | `foobar` | +| `traefik/http/middlewares/Middleware13/ipWhiteList/sourceRange/1` | `foobar` | +| `traefik/http/middlewares/Middleware14/inFlightReq/amount` | `42` | +| `traefik/http/middlewares/Middleware14/inFlightReq/sourceCriterion/ipStrategy/depth` | `42` | +| `traefik/http/middlewares/Middleware14/inFlightReq/sourceCriterion/ipStrategy/excludedIPs/0` | `foobar` | +| `traefik/http/middlewares/Middleware14/inFlightReq/sourceCriterion/ipStrategy/excludedIPs/1` | `foobar` | +| `traefik/http/middlewares/Middleware14/inFlightReq/sourceCriterion/requestHeaderName` | `foobar` | +| `traefik/http/middlewares/Middleware14/inFlightReq/sourceCriterion/requestHost` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/commonName` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/country` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/domainComponent` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/locality` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/organization` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/province` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/serialNumber` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/notAfter` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/notBefore` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/sans` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/serialNumber` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/commonName` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/country` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/domainComponent` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/locality` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/organization` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/organizationalUnit` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/province` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/serialNumber` | `true` | +| `traefik/http/middlewares/Middleware15/passTLSClientCert/pem` | `true` | +| `traefik/http/middlewares/Middleware16/plugin/PluginConf0/name0` | `foobar` | +| `traefik/http/middlewares/Middleware16/plugin/PluginConf0/name1` | `foobar` | +| `traefik/http/middlewares/Middleware16/plugin/PluginConf1/name0` | `foobar` | +| `traefik/http/middlewares/Middleware16/plugin/PluginConf1/name1` | `foobar` | +| `traefik/http/middlewares/Middleware17/rateLimit/average` | `42` | +| `traefik/http/middlewares/Middleware17/rateLimit/burst` | `42` | +| `traefik/http/middlewares/Middleware17/rateLimit/period` | `42s` | +| `traefik/http/middlewares/Middleware17/rateLimit/sourceCriterion/ipStrategy/depth` | `42` | +| `traefik/http/middlewares/Middleware17/rateLimit/sourceCriterion/ipStrategy/excludedIPs/0` | `foobar` | +| `traefik/http/middlewares/Middleware17/rateLimit/sourceCriterion/ipStrategy/excludedIPs/1` | `foobar` | +| `traefik/http/middlewares/Middleware17/rateLimit/sourceCriterion/requestHeaderName` | `foobar` | +| `traefik/http/middlewares/Middleware17/rateLimit/sourceCriterion/requestHost` | `true` | +| `traefik/http/middlewares/Middleware18/redirectRegex/permanent` | `true` | +| `traefik/http/middlewares/Middleware18/redirectRegex/regex` | `foobar` | +| `traefik/http/middlewares/Middleware18/redirectRegex/replacement` | `foobar` | +| `traefik/http/middlewares/Middleware19/redirectScheme/permanent` | `true` | +| `traefik/http/middlewares/Middleware19/redirectScheme/port` | `foobar` | +| `traefik/http/middlewares/Middleware19/redirectScheme/scheme` | `foobar` | +| `traefik/http/middlewares/Middleware20/replacePath/path` | `foobar` | +| `traefik/http/middlewares/Middleware21/replacePathRegex/regex` | `foobar` | +| `traefik/http/middlewares/Middleware21/replacePathRegex/replacement` | `foobar` | +| `traefik/http/middlewares/Middleware22/retry/attempts` | `42` | +| `traefik/http/middlewares/Middleware22/retry/initialInterval` | `42s` | +| `traefik/http/middlewares/Middleware23/stripPrefix/forceSlash` | `true` | +| `traefik/http/middlewares/Middleware23/stripPrefix/prefixes/0` | `foobar` | +| `traefik/http/middlewares/Middleware23/stripPrefix/prefixes/1` | `foobar` | +| `traefik/http/middlewares/Middleware24/stripPrefixRegex/regex/0` | `foobar` | +| `traefik/http/middlewares/Middleware24/stripPrefixRegex/regex/1` | `foobar` | | `traefik/http/routers/Router0/entryPoints/0` | `foobar` | | `traefik/http/routers/Router0/entryPoints/1` | `foobar` | | `traefik/http/routers/Router0/middlewares/0` | `foobar` | @@ -207,47 +214,49 @@ | `traefik/http/serversTransports/ServersTransport1/rootCAs/0` | `foobar` | | `traefik/http/serversTransports/ServersTransport1/rootCAs/1` | `foobar` | | `traefik/http/serversTransports/ServersTransport1/serverName` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/healthCheck/followRedirects` | `true` | -| `traefik/http/services/Service01/loadBalancer/healthCheck/headers/name0` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/healthCheck/headers/name1` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/healthCheck/hostname` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/healthCheck/interval` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/healthCheck/method` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/healthCheck/path` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/healthCheck/port` | `42` | -| `traefik/http/services/Service01/loadBalancer/healthCheck/scheme` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/healthCheck/timeout` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/passHostHeader` | `true` | -| `traefik/http/services/Service01/loadBalancer/responseForwarding/flushInterval` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/servers/0/url` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/servers/1/url` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/serversTransport` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/sticky/cookie/httpOnly` | `true` | -| `traefik/http/services/Service01/loadBalancer/sticky/cookie/name` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/sticky/cookie/sameSite` | `foobar` | -| `traefik/http/services/Service01/loadBalancer/sticky/cookie/secure` | `true` | -| `traefik/http/services/Service02/mirroring/healthCheck` | `` | -| `traefik/http/services/Service02/mirroring/maxBodySize` | `42` | -| `traefik/http/services/Service02/mirroring/mirrors/0/name` | `foobar` | -| `traefik/http/services/Service02/mirroring/mirrors/0/percent` | `42` | -| `traefik/http/services/Service02/mirroring/mirrors/1/name` | `foobar` | -| `traefik/http/services/Service02/mirroring/mirrors/1/percent` | `42` | -| `traefik/http/services/Service02/mirroring/service` | `foobar` | -| `traefik/http/services/Service03/weighted/healthCheck` | `` | -| `traefik/http/services/Service03/weighted/services/0/name` | `foobar` | -| `traefik/http/services/Service03/weighted/services/0/weight` | `42` | -| `traefik/http/services/Service03/weighted/services/1/name` | `foobar` | -| `traefik/http/services/Service03/weighted/services/1/weight` | `42` | -| `traefik/http/services/Service03/weighted/sticky/cookie/httpOnly` | `true` | -| `traefik/http/services/Service03/weighted/sticky/cookie/name` | `foobar` | -| `traefik/http/services/Service03/weighted/sticky/cookie/sameSite` | `foobar` | -| `traefik/http/services/Service03/weighted/sticky/cookie/secure` | `true` | -| `traefik/http/services/Service04/failover/fallback` | `foobar` | -| `traefik/http/services/Service04/failover/healthCheck` | `` | -| `traefik/http/services/Service04/failover/service` | `foobar` | -| `traefik/tcp/middlewares/TCPMiddleware00/ipWhiteList/sourceRange/0` | `foobar` | -| `traefik/tcp/middlewares/TCPMiddleware00/ipWhiteList/sourceRange/1` | `foobar` | -| `traefik/tcp/middlewares/TCPMiddleware01/inFlightConn/amount` | `42` | +| `traefik/http/services/Service01/failover/fallback` | `foobar` | +| `traefik/http/services/Service01/failover/healthCheck` | `` | +| `traefik/http/services/Service01/failover/service` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/healthCheck/followRedirects` | `true` | +| `traefik/http/services/Service02/loadBalancer/healthCheck/headers/name0` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/healthCheck/headers/name1` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/healthCheck/hostname` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/healthCheck/interval` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/healthCheck/method` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/healthCheck/path` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/healthCheck/port` | `42` | +| `traefik/http/services/Service02/loadBalancer/healthCheck/scheme` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/healthCheck/timeout` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/passHostHeader` | `true` | +| `traefik/http/services/Service02/loadBalancer/responseForwarding/flushInterval` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/servers/0/url` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/servers/1/url` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/serversTransport` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/sticky/cookie/httpOnly` | `true` | +| `traefik/http/services/Service02/loadBalancer/sticky/cookie/name` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/sticky/cookie/sameSite` | `foobar` | +| `traefik/http/services/Service02/loadBalancer/sticky/cookie/secure` | `true` | +| `traefik/http/services/Service03/mirroring/healthCheck` | `` | +| `traefik/http/services/Service03/mirroring/maxBodySize` | `42` | +| `traefik/http/services/Service03/mirroring/mirrors/0/name` | `foobar` | +| `traefik/http/services/Service03/mirroring/mirrors/0/percent` | `42` | +| `traefik/http/services/Service03/mirroring/mirrors/1/name` | `foobar` | +| `traefik/http/services/Service03/mirroring/mirrors/1/percent` | `42` | +| `traefik/http/services/Service03/mirroring/service` | `foobar` | +| `traefik/http/services/Service04/weighted/healthCheck` | `` | +| `traefik/http/services/Service04/weighted/services/0/name` | `foobar` | +| `traefik/http/services/Service04/weighted/services/0/weight` | `42` | +| `traefik/http/services/Service04/weighted/services/1/name` | `foobar` | +| `traefik/http/services/Service04/weighted/services/1/weight` | `42` | +| `traefik/http/services/Service04/weighted/sticky/cookie/httpOnly` | `true` | +| `traefik/http/services/Service04/weighted/sticky/cookie/name` | `foobar` | +| `traefik/http/services/Service04/weighted/sticky/cookie/sameSite` | `foobar` | +| `traefik/http/services/Service04/weighted/sticky/cookie/secure` | `true` | +| `traefik/tcp/middlewares/TCPMiddleware01/ipAllowList/sourceRange/0` | `foobar` | +| `traefik/tcp/middlewares/TCPMiddleware01/ipAllowList/sourceRange/1` | `foobar` | +| `traefik/tcp/middlewares/TCPMiddleware02/ipWhiteList/sourceRange/0` | `foobar` | +| `traefik/tcp/middlewares/TCPMiddleware02/ipWhiteList/sourceRange/1` | `foobar` | +| `traefik/tcp/middlewares/TCPMiddleware03/inFlightConn/amount` | `42` | | `traefik/tcp/routers/TCPRouter0/entryPoints/0` | `foobar` | | `traefik/tcp/routers/TCPRouter0/entryPoints/1` | `foobar` | | `traefik/tcp/routers/TCPRouter0/middlewares/0` | `foobar` | diff --git a/docs/content/reference/dynamic-configuration/marathon-labels.json b/docs/content/reference/dynamic-configuration/marathon-labels.json index 8d4768f8f..55ea30b35 100644 --- a/docs/content/reference/dynamic-configuration/marathon-labels.json +++ b/docs/content/reference/dynamic-configuration/marathon-labels.json @@ -1,129 +1,136 @@ -"traefik.http.middlewares.middleware00.addprefix.prefix": "foobar", -"traefik.http.middlewares.middleware01.basicauth.headerfield": "foobar", -"traefik.http.middlewares.middleware01.basicauth.realm": "foobar", -"traefik.http.middlewares.middleware01.basicauth.removeheader": "true", -"traefik.http.middlewares.middleware01.basicauth.users": "foobar, foobar", -"traefik.http.middlewares.middleware01.basicauth.usersfile": "foobar", -"traefik.http.middlewares.middleware02.buffering.maxrequestbodybytes": "42", -"traefik.http.middlewares.middleware02.buffering.maxresponsebodybytes": "42", -"traefik.http.middlewares.middleware02.buffering.memrequestbodybytes": "42", -"traefik.http.middlewares.middleware02.buffering.memresponsebodybytes": "42", -"traefik.http.middlewares.middleware02.buffering.retryexpression": "foobar", -"traefik.http.middlewares.middleware03.chain.middlewares": "foobar, foobar", -"traefik.http.middlewares.middleware04.circuitbreaker.expression": "foobar", -"traefik.http.middlewares.middleware04.circuitbreaker.checkperiod": "42s", -"traefik.http.middlewares.middleware04.circuitbreaker.fallbackduration": "42s", -"traefik.http.middlewares.middleware04.circuitbreaker.recoveryduration": "42s", -"traefik.http.middlewares.middleware05.compress": "true", -"traefik.http.middlewares.middleware05.compress.excludedcontenttypes": "foobar, foobar", -"traefik.http.middlewares.middleware05.compress.minresponsebodybytes": "42", -"traefik.http.middlewares.middleware06.contenttype.autodetect": "true", -"traefik.http.middlewares.middleware07.digestauth.headerfield": "foobar", -"traefik.http.middlewares.middleware07.digestauth.realm": "foobar", -"traefik.http.middlewares.middleware07.digestauth.removeheader": "true", -"traefik.http.middlewares.middleware07.digestauth.users": "foobar, foobar", -"traefik.http.middlewares.middleware07.digestauth.usersfile": "foobar", -"traefik.http.middlewares.middleware08.errors.query": "foobar", -"traefik.http.middlewares.middleware08.errors.service": "foobar", -"traefik.http.middlewares.middleware08.errors.status": "foobar, foobar", -"traefik.http.middlewares.middleware09.forwardauth.address": "foobar", -"traefik.http.middlewares.middleware09.forwardauth.authrequestheaders": "foobar, foobar", -"traefik.http.middlewares.middleware09.forwardauth.authresponseheaders": "foobar, foobar", -"traefik.http.middlewares.middleware09.forwardauth.authresponseheadersregex": "foobar", -"traefik.http.middlewares.middleware09.forwardauth.tls.ca": "foobar", -"traefik.http.middlewares.middleware09.forwardauth.tls.caoptional": "true", -"traefik.http.middlewares.middleware09.forwardauth.tls.cert": "foobar", -"traefik.http.middlewares.middleware09.forwardauth.tls.insecureskipverify": "true", -"traefik.http.middlewares.middleware09.forwardauth.tls.key": "foobar", -"traefik.http.middlewares.middleware09.forwardauth.trustforwardheader": "true", -"traefik.http.middlewares.middleware10.headers.accesscontrolallowcredentials": "true", -"traefik.http.middlewares.middleware10.headers.accesscontrolallowheaders": "foobar, foobar", -"traefik.http.middlewares.middleware10.headers.accesscontrolallowmethods": "foobar, foobar", -"traefik.http.middlewares.middleware10.headers.accesscontrolalloworiginlist": "foobar, foobar", -"traefik.http.middlewares.middleware10.headers.accesscontrolalloworiginlistregex": "foobar, foobar", -"traefik.http.middlewares.middleware10.headers.accesscontrolexposeheaders": "foobar, foobar", -"traefik.http.middlewares.middleware10.headers.accesscontrolmaxage": "42", -"traefik.http.middlewares.middleware10.headers.addvaryheader": "true", -"traefik.http.middlewares.middleware10.headers.allowedhosts": "foobar, foobar", -"traefik.http.middlewares.middleware10.headers.browserxssfilter": "true", -"traefik.http.middlewares.middleware10.headers.contentsecuritypolicy": "foobar", -"traefik.http.middlewares.middleware10.headers.contenttypenosniff": "true", -"traefik.http.middlewares.middleware10.headers.custombrowserxssvalue": "foobar", -"traefik.http.middlewares.middleware10.headers.customframeoptionsvalue": "foobar", -"traefik.http.middlewares.middleware10.headers.customrequestheaders.name0": "foobar", -"traefik.http.middlewares.middleware10.headers.customrequestheaders.name1": "foobar", -"traefik.http.middlewares.middleware10.headers.customresponseheaders.name0": "foobar", -"traefik.http.middlewares.middleware10.headers.customresponseheaders.name1": "foobar", -"traefik.http.middlewares.middleware10.headers.featurepolicy": "foobar", -"traefik.http.middlewares.middleware10.headers.forcestsheader": "true", -"traefik.http.middlewares.middleware10.headers.framedeny": "true", -"traefik.http.middlewares.middleware10.headers.hostsproxyheaders": "foobar, foobar", -"traefik.http.middlewares.middleware10.headers.isdevelopment": "true", -"traefik.http.middlewares.middleware10.headers.permissionspolicy": "foobar", -"traefik.http.middlewares.middleware10.headers.publickey": "foobar", -"traefik.http.middlewares.middleware10.headers.referrerpolicy": "foobar", -"traefik.http.middlewares.middleware10.headers.sslforcehost": "true", -"traefik.http.middlewares.middleware10.headers.sslhost": "foobar", -"traefik.http.middlewares.middleware10.headers.sslproxyheaders.name0": "foobar", -"traefik.http.middlewares.middleware10.headers.sslproxyheaders.name1": "foobar", -"traefik.http.middlewares.middleware10.headers.sslredirect": "true", -"traefik.http.middlewares.middleware10.headers.ssltemporaryredirect": "true", -"traefik.http.middlewares.middleware10.headers.stsincludesubdomains": "true", -"traefik.http.middlewares.middleware10.headers.stspreload": "true", -"traefik.http.middlewares.middleware10.headers.stsseconds": "42", -"traefik.http.middlewares.middleware11.ipwhitelist.ipstrategy.depth": "42", -"traefik.http.middlewares.middleware11.ipwhitelist.ipstrategy.excludedips": "foobar, foobar", -"traefik.http.middlewares.middleware11.ipwhitelist.sourcerange": "foobar, foobar", -"traefik.http.middlewares.middleware12.inflightreq.amount": "42", -"traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.ipstrategy.depth": "42", -"traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.ipstrategy.excludedips": "foobar, foobar", -"traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.requestheadername": "foobar", -"traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.requesthost": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.commonname": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.country": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.domaincomponent": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.locality": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.organization": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.province": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.serialnumber": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.notafter": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.notbefore": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.sans": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.serialnumber": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.commonname": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.country": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.domaincomponent": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.locality": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.organization": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.organizationalunit": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.province": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.serialnumber": "true", -"traefik.http.middlewares.middleware13.passtlsclientcert.pem": "true", -"traefik.http.middlewares.middleware14.plugin.foobar.foo": "bar", -"traefik.http.middlewares.middleware15.ratelimit.average": "42", -"traefik.http.middlewares.middleware15.ratelimit.burst": "42", -"traefik.http.middlewares.middleware15.ratelimit.period": "42", -"traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.ipstrategy.depth": "42", -"traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.ipstrategy.excludedips": "foobar, foobar", -"traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.requestheadername": "foobar", -"traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.requesthost": "true", -"traefik.http.middlewares.middleware16.redirectregex.permanent": "true", -"traefik.http.middlewares.middleware16.redirectregex.regex": "foobar", -"traefik.http.middlewares.middleware16.redirectregex.replacement": "foobar", -"traefik.http.middlewares.middleware17.redirectscheme.permanent": "true", -"traefik.http.middlewares.middleware17.redirectscheme.port": "foobar", -"traefik.http.middlewares.middleware17.redirectscheme.scheme": "foobar", -"traefik.http.middlewares.middleware18.replacepath.path": "foobar", -"traefik.http.middlewares.middleware19.replacepathregex.regex": "foobar", -"traefik.http.middlewares.middleware19.replacepathregex.replacement": "foobar", -"traefik.http.middlewares.middleware20.retry.attempts": "42", -"traefik.http.middlewares.middleware20.retry.initialinterval": "42", -"traefik.http.middlewares.middleware21.stripprefix.forceslash": "true", -"traefik.http.middlewares.middleware21.stripprefix.prefixes": "foobar, foobar", -"traefik.http.middlewares.middleware22.stripprefixregex.regex": "foobar, foobar", -"traefik.http.middlewares.middleware23.ipallowlist.ipstrategy.depth": "42", -"traefik.http.middlewares.middleware23.ipallowlist.ipstrategy.excludedips": "foobar, foobar", -"traefik.http.middlewares.middleware23.ipallowlist.sourcerange": "foobar, foobar", +// CODE GENERATED AUTOMATICALLY +// THIS FILE MUST NOT BE EDITED BY HAND +"traefik.http.middlewares.middleware01.addprefix.prefix": "foobar", +"traefik.http.middlewares.middleware02.basicauth.headerfield": "foobar", +"traefik.http.middlewares.middleware02.basicauth.realm": "foobar", +"traefik.http.middlewares.middleware02.basicauth.removeheader": "true", +"traefik.http.middlewares.middleware02.basicauth.users": "foobar, foobar", +"traefik.http.middlewares.middleware02.basicauth.usersfile": "foobar", +"traefik.http.middlewares.middleware03.buffering.maxrequestbodybytes": "42", +"traefik.http.middlewares.middleware03.buffering.maxresponsebodybytes": "42", +"traefik.http.middlewares.middleware03.buffering.memrequestbodybytes": "42", +"traefik.http.middlewares.middleware03.buffering.memresponsebodybytes": "42", +"traefik.http.middlewares.middleware03.buffering.retryexpression": "foobar", +"traefik.http.middlewares.middleware04.chain.middlewares": "foobar, foobar", +"traefik.http.middlewares.middleware05.circuitbreaker.checkperiod": "42s", +"traefik.http.middlewares.middleware05.circuitbreaker.expression": "foobar", +"traefik.http.middlewares.middleware05.circuitbreaker.fallbackduration": "42s", +"traefik.http.middlewares.middleware05.circuitbreaker.recoveryduration": "42s", +"traefik.http.middlewares.middleware06.compress": "true", +"traefik.http.middlewares.middleware06.compress.excludedcontenttypes": "foobar, foobar", +"traefik.http.middlewares.middleware06.compress.minresponsebodybytes": "42", +"traefik.http.middlewares.middleware07.contenttype.autodetect": "true", +"traefik.http.middlewares.middleware08.digestauth.headerfield": "foobar", +"traefik.http.middlewares.middleware08.digestauth.realm": "foobar", +"traefik.http.middlewares.middleware08.digestauth.removeheader": "true", +"traefik.http.middlewares.middleware08.digestauth.users": "foobar, foobar", +"traefik.http.middlewares.middleware08.digestauth.usersfile": "foobar", +"traefik.http.middlewares.middleware09.errors.query": "foobar", +"traefik.http.middlewares.middleware09.errors.service": "foobar", +"traefik.http.middlewares.middleware09.errors.status": "foobar, foobar", +"traefik.http.middlewares.middleware10.forwardauth.address": "foobar", +"traefik.http.middlewares.middleware10.forwardauth.authrequestheaders": "foobar, foobar", +"traefik.http.middlewares.middleware10.forwardauth.authresponseheaders": "foobar, foobar", +"traefik.http.middlewares.middleware10.forwardauth.authresponseheadersregex": "foobar", +"traefik.http.middlewares.middleware10.forwardauth.tls.ca": "foobar", +"traefik.http.middlewares.middleware10.forwardauth.tls.caoptional": "true", +"traefik.http.middlewares.middleware10.forwardauth.tls.cert": "foobar", +"traefik.http.middlewares.middleware10.forwardauth.tls.insecureskipverify": "true", +"traefik.http.middlewares.middleware10.forwardauth.tls.key": "foobar", +"traefik.http.middlewares.middleware10.forwardauth.trustforwardheader": "true", +"traefik.http.middlewares.middleware11.headers.accesscontrolallowcredentials": "true", +"traefik.http.middlewares.middleware11.headers.accesscontrolallowheaders": "foobar, foobar", +"traefik.http.middlewares.middleware11.headers.accesscontrolallowmethods": "foobar, foobar", +"traefik.http.middlewares.middleware11.headers.accesscontrolalloworiginlist": "foobar, foobar", +"traefik.http.middlewares.middleware11.headers.accesscontrolalloworiginlistregex": "foobar, foobar", +"traefik.http.middlewares.middleware11.headers.accesscontrolexposeheaders": "foobar, foobar", +"traefik.http.middlewares.middleware11.headers.accesscontrolmaxage": "42", +"traefik.http.middlewares.middleware11.headers.addvaryheader": "true", +"traefik.http.middlewares.middleware11.headers.allowedhosts": "foobar, foobar", +"traefik.http.middlewares.middleware11.headers.browserxssfilter": "true", +"traefik.http.middlewares.middleware11.headers.contentsecuritypolicy": "foobar", +"traefik.http.middlewares.middleware11.headers.contenttypenosniff": "true", +"traefik.http.middlewares.middleware11.headers.custombrowserxssvalue": "foobar", +"traefik.http.middlewares.middleware11.headers.customframeoptionsvalue": "foobar", +"traefik.http.middlewares.middleware11.headers.customrequestheaders.name0": "foobar", +"traefik.http.middlewares.middleware11.headers.customrequestheaders.name1": "foobar", +"traefik.http.middlewares.middleware11.headers.customresponseheaders.name0": "foobar", +"traefik.http.middlewares.middleware11.headers.customresponseheaders.name1": "foobar", +"traefik.http.middlewares.middleware11.headers.featurepolicy": "foobar", +"traefik.http.middlewares.middleware11.headers.forcestsheader": "true", +"traefik.http.middlewares.middleware11.headers.framedeny": "true", +"traefik.http.middlewares.middleware11.headers.hostsproxyheaders": "foobar, foobar", +"traefik.http.middlewares.middleware11.headers.isdevelopment": "true", +"traefik.http.middlewares.middleware11.headers.permissionspolicy": "foobar", +"traefik.http.middlewares.middleware11.headers.publickey": "foobar", +"traefik.http.middlewares.middleware11.headers.referrerpolicy": "foobar", +"traefik.http.middlewares.middleware11.headers.sslforcehost": "true", +"traefik.http.middlewares.middleware11.headers.sslhost": "foobar", +"traefik.http.middlewares.middleware11.headers.sslproxyheaders.name0": "foobar", +"traefik.http.middlewares.middleware11.headers.sslproxyheaders.name1": "foobar", +"traefik.http.middlewares.middleware11.headers.sslredirect": "true", +"traefik.http.middlewares.middleware11.headers.ssltemporaryredirect": "true", +"traefik.http.middlewares.middleware11.headers.stsincludesubdomains": "true", +"traefik.http.middlewares.middleware11.headers.stspreload": "true", +"traefik.http.middlewares.middleware11.headers.stsseconds": "42", +"traefik.http.middlewares.middleware12.ipallowlist.ipstrategy": "true", +"traefik.http.middlewares.middleware12.ipallowlist.ipstrategy.depth": "42", +"traefik.http.middlewares.middleware12.ipallowlist.ipstrategy.excludedips": "foobar, foobar", +"traefik.http.middlewares.middleware12.ipallowlist.sourcerange": "foobar, foobar", +"traefik.http.middlewares.middleware13.ipwhitelist.ipstrategy": "true", +"traefik.http.middlewares.middleware13.ipwhitelist.ipstrategy.depth": "42", +"traefik.http.middlewares.middleware13.ipwhitelist.ipstrategy.excludedips": "foobar, foobar", +"traefik.http.middlewares.middleware13.ipwhitelist.sourcerange": "foobar, foobar", +"traefik.http.middlewares.middleware14.inflightreq.amount": "42", +"traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.ipstrategy.depth": "42", +"traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.ipstrategy.excludedips": "foobar, foobar", +"traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.requestheadername": "foobar", +"traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.requesthost": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.commonname": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.country": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.domaincomponent": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.locality": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.organization": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.province": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.serialnumber": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.notafter": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.notbefore": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.sans": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.serialnumber": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.commonname": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.country": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.domaincomponent": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.locality": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.organization": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.organizationalunit": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.province": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.serialnumber": "true", +"traefik.http.middlewares.middleware15.passtlsclientcert.pem": "true", +"traefik.http.middlewares.middleware16.plugin.pluginconf0.name0": "foobar", +"traefik.http.middlewares.middleware16.plugin.pluginconf0.name1": "foobar", +"traefik.http.middlewares.middleware16.plugin.pluginconf1.name0": "foobar", +"traefik.http.middlewares.middleware16.plugin.pluginconf1.name1": "foobar", +"traefik.http.middlewares.middleware17.ratelimit.average": "42", +"traefik.http.middlewares.middleware17.ratelimit.burst": "42", +"traefik.http.middlewares.middleware17.ratelimit.period": "42s", +"traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.ipstrategy.depth": "42", +"traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.ipstrategy.excludedips": "foobar, foobar", +"traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.requestheadername": "foobar", +"traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.requesthost": "true", +"traefik.http.middlewares.middleware18.redirectregex.permanent": "true", +"traefik.http.middlewares.middleware18.redirectregex.regex": "foobar", +"traefik.http.middlewares.middleware18.redirectregex.replacement": "foobar", +"traefik.http.middlewares.middleware19.redirectscheme.permanent": "true", +"traefik.http.middlewares.middleware19.redirectscheme.port": "foobar", +"traefik.http.middlewares.middleware19.redirectscheme.scheme": "foobar", +"traefik.http.middlewares.middleware20.replacepath.path": "foobar", +"traefik.http.middlewares.middleware21.replacepathregex.regex": "foobar", +"traefik.http.middlewares.middleware21.replacepathregex.replacement": "foobar", +"traefik.http.middlewares.middleware22.retry.attempts": "42", +"traefik.http.middlewares.middleware22.retry.initialinterval": "42s", +"traefik.http.middlewares.middleware23.stripprefix.forceslash": "true", +"traefik.http.middlewares.middleware23.stripprefix.prefixes": "foobar, foobar", +"traefik.http.middlewares.middleware24.stripprefixregex.regex": "foobar, foobar", "traefik.http.routers.router0.entrypoints": "foobar, foobar", "traefik.http.routers.router0.middlewares": "foobar, foobar", "traefik.http.routers.router0.priority": "42", @@ -148,33 +155,34 @@ "traefik.http.routers.router1.tls.domains[1].main": "foobar", "traefik.http.routers.router1.tls.domains[1].sans": "foobar, foobar", "traefik.http.routers.router1.tls.options": "foobar", -"traefik.http.services.service01.loadbalancer.healthcheck.followredirects": "true", -"traefik.http.services.service01.loadbalancer.healthcheck.headers.name0": "foobar", -"traefik.http.services.service01.loadbalancer.healthcheck.headers.name1": "foobar", -"traefik.http.services.service01.loadbalancer.healthcheck.hostname": "foobar", -"traefik.http.services.service01.loadbalancer.healthcheck.interval": "foobar", -"traefik.http.services.service01.loadbalancer.healthcheck.path": "foobar", -"traefik.http.services.service01.loadbalancer.healthcheck.method": "foobar", -"traefik.http.services.service01.loadbalancer.healthcheck.port": "42", -"traefik.http.services.service01.loadbalancer.healthcheck.scheme": "foobar", -"traefik.http.services.service01.loadbalancer.healthcheck.timeout": "foobar", -"traefik.http.services.service01.loadbalancer.passhostheader": "true", -"traefik.http.services.service01.loadbalancer.responseforwarding.flushinterval": "foobar", -"traefik.http.services.service01.loadbalancer.serverstransport": "foobar", -"traefik.http.services.service01.loadbalancer.sticky.cookie": "true", -"traefik.http.services.service01.loadbalancer.sticky.cookie.httponly": "true", -"traefik.http.services.service01.loadbalancer.sticky.cookie.name": "foobar", -"traefik.http.services.service01.loadbalancer.sticky.cookie.samesite": "foobar", -"traefik.http.services.service01.loadbalancer.sticky.cookie.secure": "true", -"traefik.http.services.service01.loadbalancer.server.port": "foobar", -"traefik.http.services.service01.loadbalancer.server.scheme": "foobar", -"traefik.tcp.middlewares.tcpmiddleware00.ipwhitelist.sourcerange": "foobar, foobar", -"traefik.tcp.middlewares.tcpmiddleware01.inflightconn.amount": "42", -"traefik.tcp.middlewares.tcpmiddleware02.ipallowlist.sourcerange": "foobar, foobar", +"traefik.http.services.service02.loadbalancer.healthcheck.followredirects": "true", +"traefik.http.services.service02.loadbalancer.healthcheck.headers.name0": "foobar", +"traefik.http.services.service02.loadbalancer.healthcheck.headers.name1": "foobar", +"traefik.http.services.service02.loadbalancer.healthcheck.hostname": "foobar", +"traefik.http.services.service02.loadbalancer.healthcheck.interval": "foobar", +"traefik.http.services.service02.loadbalancer.healthcheck.method": "foobar", +"traefik.http.services.service02.loadbalancer.healthcheck.path": "foobar", +"traefik.http.services.service02.loadbalancer.healthcheck.port": "42", +"traefik.http.services.service02.loadbalancer.healthcheck.scheme": "foobar", +"traefik.http.services.service02.loadbalancer.healthcheck.timeout": "foobar", +"traefik.http.services.service02.loadbalancer.passhostheader": "true", +"traefik.http.services.service02.loadbalancer.responseforwarding.flushinterval": "foobar", +"traefik.http.services.service02.loadbalancer.serverstransport": "foobar", +"traefik.http.services.service02.loadbalancer.sticky": "true", +"traefik.http.services.service02.loadbalancer.sticky.cookie": "true", +"traefik.http.services.service02.loadbalancer.sticky.cookie.httponly": "true", +"traefik.http.services.service02.loadbalancer.sticky.cookie.name": "foobar", +"traefik.http.services.service02.loadbalancer.sticky.cookie.samesite": "foobar", +"traefik.http.services.service02.loadbalancer.sticky.cookie.secure": "true", +"traefik.http.services.service02.loadbalancer.server.port": "foobar", +"traefik.http.services.service02.loadbalancer.server.scheme": "foobar", +"traefik.tcp.middlewares.tcpmiddleware01.ipallowlist.sourcerange": "foobar, foobar", +"traefik.tcp.middlewares.tcpmiddleware02.ipwhitelist.sourcerange": "foobar, foobar", +"traefik.tcp.middlewares.tcpmiddleware03.inflightconn.amount": "42", "traefik.tcp.routers.tcprouter0.entrypoints": "foobar, foobar", "traefik.tcp.routers.tcprouter0.middlewares": "foobar, foobar", -"traefik.tcp.routers.tcprouter0.rule": "foobar", "traefik.tcp.routers.tcprouter0.priority": "42", +"traefik.tcp.routers.tcprouter0.rule": "foobar", "traefik.tcp.routers.tcprouter0.service": "foobar", "traefik.tcp.routers.tcprouter0.tls": "true", "traefik.tcp.routers.tcprouter0.tls.certresolver": "foobar", @@ -186,8 +194,8 @@ "traefik.tcp.routers.tcprouter0.tls.passthrough": "true", "traefik.tcp.routers.tcprouter1.entrypoints": "foobar, foobar", "traefik.tcp.routers.tcprouter1.middlewares": "foobar, foobar", -"traefik.tcp.routers.tcprouter1.rule": "foobar", "traefik.tcp.routers.tcprouter1.priority": "42", +"traefik.tcp.routers.tcprouter1.rule": "foobar", "traefik.tcp.routers.tcprouter1.service": "foobar", "traefik.tcp.routers.tcprouter1.tls": "true", "traefik.tcp.routers.tcprouter1.tls.certresolver": "foobar", @@ -197,6 +205,7 @@ "traefik.tcp.routers.tcprouter1.tls.domains[1].sans": "foobar, foobar", "traefik.tcp.routers.tcprouter1.tls.options": "foobar", "traefik.tcp.routers.tcprouter1.tls.passthrough": "true", +"traefik.tcp.services.tcpservice01.loadbalancer.proxyprotocol": "true", "traefik.tcp.services.tcpservice01.loadbalancer.proxyprotocol.version": "42", "traefik.tcp.services.tcpservice01.loadbalancer.terminationdelay": "42", "traefik.tcp.services.tcpservice01.loadbalancer.server.port": "foobar", @@ -205,13 +214,3 @@ "traefik.udp.routers.udprouter1.entrypoints": "foobar, foobar", "traefik.udp.routers.udprouter1.service": "foobar", "traefik.udp.services.udpservice01.loadbalancer.server.port": "foobar", -"traefik.tls.stores.Store0.defaultcertificate.certfile": "foobar", -"traefik.tls.stores.Store0.defaultcertificate.keyfile": "foobar", -"traefik.tls.stores.Store0.defaultgeneratedcert.domain.main": "foobar", -"traefik.tls.stores.Store0.defaultgeneratedcert.domain.sans": "foobar, foobar", -"traefik.tls.stores.Store0.defaultgeneratedcert.resolver": "foobar", -"traefik.tls.stores.Store1.defaultcertificate.certfile": "foobar", -"traefik.tls.stores.Store1.defaultcertificate.keyfile": "foobar", -"traefik.tls.stores.Store1.defaultgeneratedcert.domain.main": "foobar", -"traefik.tls.stores.Store1.defaultgeneratedcert.domain.sans": "foobar, foobar", -"traefik.tls.stores.Store1.defaultgeneratedcert.resolver": "foobar", diff --git a/docs/content/reference/static-configuration/file.toml b/docs/content/reference/static-configuration/file.toml index dc38a2cea..42c4e6fdf 100644 --- a/docs/content/reference/static-configuration/file.toml +++ b/docs/content/reference/static-configuration/file.toml @@ -1,3 +1,5 @@ +## CODE GENERATED AUTOMATICALLY +## THIS FILE MUST NOT BE EDITED BY HAND [global] checkNewVersion = true sendAnonymousUsage = true @@ -15,8 +17,8 @@ [entryPoints.EntryPoint0] address = "foobar" [entryPoints.EntryPoint0.transport] - keepAliveMaxRequests = 42 keepAliveMaxTime = "42s" + keepAliveMaxRequests = 42 [entryPoints.EntryPoint0.transport.lifeCycle] requestAcceptGraceTimeout = "42s" graceTimeOut = "42s" @@ -183,10 +185,10 @@ constraints = "foobar" prefix = "foobar" stale = true - namespace = "foobar" - namespaces = ["foobar", "foobar"] exposedByDefault = true refreshInterval = "42s" + namespace = "foobar" + namespaces = ["foobar", "foobar"] [providers.nomad.endpoint] address = "foobar" region = "foobar" @@ -205,10 +207,10 @@ defaultRule = "foobar" clusters = ["foobar", "foobar"] autoDiscoverClusters = true + ecsAnywhere = true region = "foobar" accessKeyID = "foobar" secretAccessKey = "foobar" - ecsAnywhere = true [providers.consul] rootKey = "foobar" endpoints = ["foobar", "foobar"] @@ -268,14 +270,18 @@ key = "foobar" insecureSkipVerify = true [providers.plugin] - [providers.plugin.Descriptor0] - [providers.plugin.Descriptor1] + [providers.plugin.PluginConf0] + name0 = "foobar" + name1 = "foobar" + [providers.plugin.PluginConf1] + name0 = "foobar" + name1 = "foobar" [api] insecure = true dashboard = true debug = true - disabledashboardad = false + disableDashboardAd = true [metrics] [metrics.prometheus] @@ -286,8 +292,8 @@ entryPoint = "foobar" manualRouting = true [metrics.prometheus.headerLabels] - label1 = "foobar" - label2 = "foobar" + name0 = "foobar" + name1 = "foobar" [metrics.datadog] address = "foobar" pushInterval = "42s" @@ -383,15 +389,15 @@ localAgentHostPort = "foobar" localAgentSocket = "foobar" globalTag = "foobar" - [tracing.datadog.globalTags] - tag1 = "foobar" - tag2 = "foobar" debug = true prioritySampling = true traceIDHeaderName = "foobar" parentIDHeaderName = "foobar" samplingPriorityHeaderName = "foobar" bagagePrefixHeaderName = "foobar" + [tracing.datadog.globalTags] + name0 = "foobar" + name1 = "foobar" [tracing.instana] localAgentHost = "foobar" localAgentPort = 42 @@ -455,6 +461,10 @@ entryPoint = "foobar" [certificatesResolvers.CertificateResolver1.acme.tlsChallenge] +[pilot] + token = "foobar" + dashboard = true + [experimental] kubernetesGateway = true http3 = true @@ -466,7 +476,7 @@ moduleName = "foobar" version = "foobar" [experimental.localPlugins] - [experimental.localPlugins.Descriptor0] + [experimental.localPlugins.LocalDescriptor0] moduleName = "foobar" - [experimental.localPlugins.Descriptor1] + [experimental.localPlugins.LocalDescriptor1] moduleName = "foobar" diff --git a/docs/content/reference/static-configuration/file.yaml b/docs/content/reference/static-configuration/file.yaml index 6a0cb264b..abb8e05d8 100644 --- a/docs/content/reference/static-configuration/file.yaml +++ b/docs/content/reference/static-configuration/file.yaml @@ -1,3 +1,5 @@ +## CODE GENERATED AUTOMATICALLY +## THIS FILE MUST NOT BE EDITED BY HAND global: checkNewVersion: true sendAnonymousUsage: true @@ -15,8 +17,6 @@ entryPoints: EntryPoint0: address: foobar transport: - keepAliveMaxRequests: 42 - keepAliveMaxTime: 42s lifeCycle: requestAcceptGraceTimeout: 42s graceTimeOut: 42s @@ -24,6 +24,8 @@ entryPoints: readTimeout: 42s writeTimeout: 42s idleTimeout: 42s + keepAliveMaxTime: 42s + keepAliveMaxRequests: 42 proxyProtocol: insecure: true trustedIPs: @@ -35,7 +37,6 @@ entryPoints: - foobar - foobar http: - encodeQuerySemicolons: true redirections: entryPoint: to: foobar @@ -57,6 +58,7 @@ entryPoints: sans: - foobar - foobar + encodeQuerySemicolons: true http2: maxConcurrentStreams: 42 http3: @@ -120,13 +122,13 @@ providers: - foobar labelSelector: foobar ingressClass: foobar - throttleDuration: 42s - allowEmptyServices: true - allowExternalNameServices: true ingressEndpoint: ip: foobar hostname: foobar publishedService: foobar + throttleDuration: 42s + allowEmptyServices: true + allowExternalNameServices: true kubernetesCRD: endpoint: foobar token: foobar @@ -162,6 +164,21 @@ providers: prefix: foobar consulCatalog: constraints: foobar + endpoint: + address: foobar + scheme: foobar + datacenter: foobar + token: foobar + tls: + ca: foobar + caOptional: true + cert: foobar + key: foobar + insecureSkipVerify: true + httpAuth: + username: foobar + password: foobar + endpointWaitTime: 42s prefix: foobar refreshInterval: 42s requireConsistent: true @@ -177,43 +194,28 @@ providers: namespaces: - foobar - foobar - endpoint: - address: foobar - scheme: foobar - datacenter: foobar - token: foobar - endpointWaitTime: 42s - tls: - ca: foobar - caOptional: true - cert: foobar - key: foobar - insecureSkipVerify: true - httpAuth: - username: foobar - password: foobar nomad: defaultRule: foobar constraints: foobar - prefix: foobar - stale: true - namespace: foobar - namespaces: - - foobar - - foobar - exposedByDefault: true - refreshInterval: 42s endpoint: address: foobar region: foobar token: foobar - endpointWaitTime: 42s tls: ca: foobar caOptional: true cert: foobar key: foobar insecureSkipVerify: true + endpointWaitTime: 42s + prefix: foobar + stale: true + exposedByDefault: true + refreshInterval: 42s + namespace: foobar + namespaces: + - foobar + - foobar ecs: constraints: foobar exposedByDefault: true @@ -223,39 +225,39 @@ providers: - foobar - foobar autoDiscoverClusters: true + ecsAnywhere: true region: foobar accessKeyID: foobar secretAccessKey: foobar - ecsAnywhere: true consul: rootKey: foobar endpoints: - foobar - foobar token: foobar - namespace: foobar - namespaces: - - foobar - - foobar tls: ca: foobar caOptional: true cert: foobar key: foobar insecureSkipVerify: true + namespace: foobar + namespaces: + - foobar + - foobar etcd: rootKey: foobar endpoints: - foobar - foobar - username: foobar - password: foobar tls: ca: foobar caOptional: true cert: foobar key: foobar insecureSkipVerify: true + username: foobar + password: foobar zooKeeper: rootKey: foobar endpoints: @@ -268,15 +270,15 @@ providers: endpoints: - foobar - foobar - username: foobar - password: foobar - db: 42 tls: ca: foobar caOptional: true cert: foobar key: foobar insecureSkipVerify: true + username: foobar + password: foobar + db: 42 sentinel: masterName: foobar username: foobar @@ -296,13 +298,17 @@ providers: key: foobar insecureSkipVerify: true plugin: - Descriptor0: {} - Descriptor1: {} + PluginConf0: + name0: foobar + name1: foobar + PluginConf1: + name0: foobar + name1: foobar api: insecure: true dashboard: true debug: true - disabledashboardad: false + disableDashboardAd: true metrics: prometheus: buckets: @@ -314,8 +320,8 @@ metrics: entryPoint: foobar manualRouting: true headerLabels: - label1: foobar - label2: foobar + name0: foobar + name1: foobar datadog: address: foobar pushInterval: 42s @@ -395,11 +401,11 @@ tracing: gen128Bit: true propagation: foobar traceContextHeaderName: foobar - disableAttemptReconnecting: true collector: endpoint: foobar user: foobar password: foobar + disableAttemptReconnecting: true zipkin: httpEndpoint: foobar sameSpan: true @@ -410,8 +416,8 @@ tracing: localAgentSocket: foobar globalTag: foobar globalTags: - tag1: foobar - tag2: foobar + name0: foobar + name1: foobar debug: true prioritySampling: true traceIDHeaderName: foobar @@ -444,13 +450,13 @@ certificatesResolvers: acme: email: foobar caServer: foobar - certificatesDuration: 42 preferredChain: foobar storage: foobar keyType: foobar eab: kid: foobar hmacEncoded: foobar + certificatesDuration: 42 dnsChallenge: provider: foobar delayBeforeCheck: 42s @@ -465,13 +471,13 @@ certificatesResolvers: acme: email: foobar caServer: foobar - certificatesDuration: 42 preferredChain: foobar storage: foobar keyType: foobar eab: kid: foobar hmacEncoded: foobar + certificatesDuration: 42 dnsChallenge: provider: foobar delayBeforeCheck: 42s @@ -482,10 +488,10 @@ certificatesResolvers: httpChallenge: entryPoint: foobar tlsChallenge: {} - +pilot: + token: foobar + dashboard: true experimental: - kubernetesGateway: true - http3: true plugins: Descriptor0: moduleName: foobar @@ -494,7 +500,9 @@ experimental: moduleName: foobar version: foobar localPlugins: - Descriptor0: + LocalDescriptor0: moduleName: foobar - Descriptor1: + LocalDescriptor1: moduleName: foobar + kubernetesGateway: true + http3: true diff --git a/internal/gendoc.go b/internal/gendoc.go index afc6320f9..d27c0fe3d 100644 --- a/internal/gendoc.go +++ b/internal/gendoc.go @@ -1,10 +1,13 @@ package main import ( + "bytes" "fmt" "io" "os" "path" + "path/filepath" + "reflect" "sort" "strconv" "strings" @@ -15,10 +18,66 @@ import ( "github.com/traefik/paerser/generator" "github.com/traefik/paerser/parser" "github.com/traefik/traefik/v2/cmd" + "github.com/traefik/traefik/v2/pkg/collector/hydratation" + "github.com/traefik/traefik/v2/pkg/config/dynamic" + "github.com/traefik/traefik/v2/pkg/config/static" "github.com/traefik/traefik/v2/pkg/log" + "gopkg.in/yaml.v3" ) +var commentGenerated = `## CODE GENERATED AUTOMATICALLY +## THIS FILE MUST NOT BE EDITED BY HAND +` + func main() { + logger := log.WithoutContext() + + dynConf := &dynamic.Configuration{} + + err := hydratation.Hydrate(dynConf) + if err != nil { + logger.Fatal(err) + } + + dynConf.HTTP.Models = map[string]*dynamic.Model{} + clean(dynConf.HTTP.Middlewares) + clean(dynConf.TCP.Middlewares) + clean(dynConf.HTTP.Services) + clean(dynConf.TCP.Services) + clean(dynConf.UDP.Services) + + err = tomlWrite("./docs/content/reference/dynamic-configuration/file.toml", dynConf) + if err != nil { + logger.Fatal(err) + } + err = yamlWrite("./docs/content/reference/dynamic-configuration/file.yaml", dynConf) + if err != nil { + logger.Fatal(err) + } + + err = labelsWrite("./docs/content/reference/dynamic-configuration", dynConf) + if err != nil { + logger.Fatal(err) + } + + staticConf := &static.Configuration{} + + err = hydratation.Hydrate(staticConf) + if err != nil { + logger.Fatal(err) + } + + delete(staticConf.EntryPoints, "EntryPoint1") + + err = tomlWrite("./docs/content/reference/static-configuration/file.toml", staticConf) + if err != nil { + logger.Fatal(err) + } + err = yamlWrite("./docs/content/reference/static-configuration/file.yaml", staticConf) + if err != nil { + logger.Fatal(err) + } + genStaticConfDoc("./docs/content/reference/static-configuration/env-ref.md", "", func(i interface{}) ([]parser.Flat, error) { return env.Encode(env.DefaultNamePrefix, i) }) @@ -26,6 +85,161 @@ func main() { genKVDynConfDoc("./docs/content/reference/dynamic-configuration/kv-ref.md") } +func labelsWrite(outputDir string, element *dynamic.Configuration) error { + cleanServers(element) + + etnOpts := parser.EncoderToNodeOpts{OmitEmpty: true, TagName: parser.TagLabel, AllowSliceAsStruct: true} + node, err := parser.EncodeToNode(element, parser.DefaultRootName, etnOpts) + if err != nil { + return err + } + + metaOpts := parser.MetadataOpts{TagName: parser.TagLabel, AllowSliceAsStruct: true} + err = parser.AddMetadata(element, node, metaOpts) + if err != nil { + return err + } + + labels := make(map[string]string) + encodeNode(labels, node.Name, node) + + var keys []string + for k := range labels { + keys = append(keys, k) + } + + sort.Strings(keys) + + dockerLabels, err := os.Create(filepath.Join(outputDir, "docker-labels.yml")) + if err != nil { + return err + } + defer dockerLabels.Close() + + // Write the comment at the beginning of the file + if _, err := dockerLabels.WriteString(commentGenerated); err != nil { + return err + } + + marathonLabels, err := os.Create(filepath.Join(outputDir, "marathon-labels.json")) + if err != nil { + return err + } + defer marathonLabels.Close() + + // Write the comment at the beginning of the file + if _, err := marathonLabels.WriteString(strings.ReplaceAll(commentGenerated, "##", "//")); err != nil { + return err + } + + for i, k := range keys { + v := labels[k] + if v != "" { + if v == "42000000000" { + v = "42s" + } + fmt.Fprintln(dockerLabels, `- "`+strings.ToLower(k)+`=`+v+`"`) + + if i == len(keys)-1 { + fmt.Fprintln(marathonLabels, `"`+strings.ToLower(k)+`": "`+v+`"`) + } else { + fmt.Fprintln(marathonLabels, `"`+strings.ToLower(k)+`": "`+v+`",`) + } + } + } + + return nil +} + +func cleanServers(element *dynamic.Configuration) { + for _, svc := range element.HTTP.Services { + if svc.LoadBalancer != nil { + server := svc.LoadBalancer.Servers[0] + svc.LoadBalancer.Servers = nil + svc.LoadBalancer.Servers = append(svc.LoadBalancer.Servers, server) + } + } + + for _, svc := range element.TCP.Services { + if svc.LoadBalancer != nil { + server := svc.LoadBalancer.Servers[0] + svc.LoadBalancer.Servers = nil + svc.LoadBalancer.Servers = append(svc.LoadBalancer.Servers, server) + } + } + + for _, svc := range element.UDP.Services { + if svc.LoadBalancer != nil { + server := svc.LoadBalancer.Servers[0] + svc.LoadBalancer.Servers = nil + svc.LoadBalancer.Servers = append(svc.LoadBalancer.Servers, server) + } + } +} + +func yamlWrite(outputFile string, element any) error { + file, err := os.OpenFile(outputFile, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o666) + if err != nil { + return err + } + defer file.Close() + + // Write the comment at the beginning of the file + if _, err := file.WriteString(commentGenerated); err != nil { + return err + } + + buf := new(bytes.Buffer) + encoder := yaml.NewEncoder(buf) + encoder.SetIndent(2) + err = encoder.Encode(element) + if err != nil { + return err + } + + _, err = file.Write(buf.Bytes()) + return err +} + +func tomlWrite(outputFile string, element any) error { + file, err := os.OpenFile(outputFile, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o666) + if err != nil { + return err + } + defer file.Close() + + // Write the comment at the beginning of the file + if _, err := file.WriteString(commentGenerated); err != nil { + return err + } + + return toml.NewEncoder(file).Encode(element) +} + +func clean(element any) { + valSvcs := reflect.ValueOf(element) + + key := valSvcs.MapKeys()[0] + valueSvcRoot := valSvcs.MapIndex(key).Elem() + + var svcFieldNames []string + for i := 0; i < valueSvcRoot.NumField(); i++ { + svcFieldNames = append(svcFieldNames, valueSvcRoot.Type().Field(i).Name) + } + + sort.Strings(svcFieldNames) + + for i, fieldName := range svcFieldNames { + v := reflect.New(valueSvcRoot.Type()) + v.Elem().FieldByName(fieldName).Set(valueSvcRoot.FieldByName(fieldName)) + + valSvcs.SetMapIndex(reflect.ValueOf(fmt.Sprintf("%s%.2d", valueSvcRoot.Type().Name(), i+1)), v) + } + + valSvcs.SetMapIndex(reflect.ValueOf(fmt.Sprintf("%s0", valueSvcRoot.Type().Name())), reflect.Value{}) + valSvcs.SetMapIndex(reflect.ValueOf(fmt.Sprintf("%s1", valueSvcRoot.Type().Name())), reflect.Value{}) +} + func genStaticConfDoc(outputFile, prefix string, encodeFn func(interface{}) ([]parser.Flat, error)) { logger := log.WithoutContext().WithField("file", outputFile) @@ -117,6 +331,7 @@ func genKVDynConfDoc(outputFile string) { } store := storeWriter{data: map[string]string{}} + c := client{store: store} err = c.load("traefik", conf) if err != nil { @@ -130,6 +345,12 @@ func genKVDynConfDoc(outputFile string) { sort.Strings(keys) + _, _ = fmt.Fprintf(file, ` +`) + for _, k := range keys { _, _ = fmt.Fprintf(file, "| `%s` | `%s` |\n", k, store.data[k]) } diff --git a/internal/parser.go b/internal/parser.go new file mode 100644 index 000000000..3fa85617e --- /dev/null +++ b/internal/parser.go @@ -0,0 +1,66 @@ +package main + +import ( + "fmt" + "reflect" + "strings" + + "github.com/traefik/paerser/parser" +) + +func encodeNode(labels map[string]string, root string, node *parser.Node) { + for _, child := range node.Children { + if child.Disabled { + continue + } + + var sep string + if child.Name[0] != '[' { + sep = "." + } + + childName := root + sep + child.Name + + if child.RawValue != nil { + encodeRawValue(labels, childName, child.RawValue) + continue + } + + if strings.Contains(child.Tag.Get(parser.TagLabel), parser.TagLabelAllowEmpty) { + labels[childName] = "true" + } + + if len(child.Children) > 0 { + encodeNode(labels, childName, child) + } else if len(child.Name) > 0 { + labels[childName] = child.Value + } + } +} + +func encodeRawValue(labels map[string]string, root string, rawValue interface{}) { + if rawValue == nil { + return + } + + tValue := reflect.TypeOf(rawValue) + + if tValue.Kind() == reflect.Map && tValue.Elem().Kind() == reflect.Interface { + r := reflect.ValueOf(rawValue). + Convert(reflect.TypeOf((map[string]interface{})(nil))). + Interface().(map[string]interface{}) + + for k, v := range r { + switch tv := v.(type) { + case string: + labels[root+"."+k] = tv + case []interface{}: + for i, e := range tv { + encodeRawValue(labels, fmt.Sprintf("%s.%s[%d]", root, k, i), e) + } + default: + encodeRawValue(labels, root+"."+k, v) + } + } + } +} diff --git a/pkg/collector/collector_test.go b/pkg/collector/collector_test.go index b091f0c4f..fdb50c549 100644 --- a/pkg/collector/collector_test.go +++ b/pkg/collector/collector_test.go @@ -5,13 +5,14 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/traefik/traefik/v2/pkg/collector/hydratation" "github.com/traefik/traefik/v2/pkg/config/static" ) func Test_createBody(t *testing.T) { var staticConfiguration static.Configuration - err := hydrate(&staticConfiguration) + err := hydratation.Hydrate(&staticConfiguration) require.NoError(t, err) buffer, err := createBody(&staticConfiguration) diff --git a/pkg/collector/hydration_test.go b/pkg/collector/hydratation/hydration.go similarity index 94% rename from pkg/collector/hydration_test.go rename to pkg/collector/hydratation/hydration.go index 8814888a6..a5ec52dee 100644 --- a/pkg/collector/hydration_test.go +++ b/pkg/collector/hydratation/hydration.go @@ -1,4 +1,4 @@ -package collector +package hydratation import ( "fmt" @@ -17,7 +17,8 @@ const ( defaultMapKeyPrefix = "name" ) -func hydrate(element interface{}) error { +// Hydrate hydrates a configuration. +func Hydrate(element interface{}) error { field := reflect.ValueOf(element) return fill(field) } @@ -41,9 +42,7 @@ func fill(field reflect.Value) error { return err } case reflect.Interface: - if err := fill(field.Elem()); err != nil { - return err - } + setTyped(field, defaultString) case reflect.String: setTyped(field, defaultString) case reflect.Int: @@ -118,7 +117,7 @@ func makeKeyName(typ reflect.Type) string { case reflect.String, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, - reflect.Bool, reflect.Float32, reflect.Float64: + reflect.Bool, reflect.Float32, reflect.Float64, reflect.Interface: return defaultMapKeyPrefix default: return typ.Name() diff --git a/pkg/config/dynamic/config.go b/pkg/config/dynamic/config.go index d23315d6b..469c04acc 100644 --- a/pkg/config/dynamic/config.go +++ b/pkg/config/dynamic/config.go @@ -24,7 +24,7 @@ type Configuration struct { HTTP *HTTPConfiguration `json:"http,omitempty" toml:"http,omitempty" yaml:"http,omitempty" export:"true"` TCP *TCPConfiguration `json:"tcp,omitempty" toml:"tcp,omitempty" yaml:"tcp,omitempty" export:"true"` UDP *UDPConfiguration `json:"udp,omitempty" toml:"udp,omitempty" yaml:"udp,omitempty" export:"true"` - TLS *TLSConfiguration `json:"tls,omitempty" toml:"tls,omitempty" yaml:"tls,omitempty" export:"true"` + TLS *TLSConfiguration `json:"tls,omitempty" toml:"tls,omitempty" yaml:"tls,omitempty" label:"-" export:"true"` } // +k8s:deepcopy-gen=true