Traefik & Consul Catalog
Attach tags to your services and let Traefik do the rest!
tags
- tags are case insensitive.
- The complete list of tags can be found the reference page
Traefik creates, for each consul Catalog service, a corresponding and router.
The Service automatically gets a server per instance in this consul Catalog service, and the router gets a default rule attached to it, based on the service name.
Routers
To update the configuration of the Router automatically attached to the service, add tags starting with and followed by the option you want to change.
For example, to change the rule, you could add the tag traefik.http.routers.my-service.rule=Host(
.example.com
)
traefik.http.routers.
See rule for more information.
traefik.http.routers.
See for more information.
traefik.http.routers.myrouter.entrypoints=web,websecure
traefik.http.routers.
See middlewares and for more information.
traefik.http.routers.myrouter.middlewares=auth,prefix,cb
traefik.http.routers.
See rule for more information.
traefik.http.routers.myrouter.service=myservice
traefik.http.routers.
See for more information.
traefik.http.routers.myrouter>.tls=true
traefik.http.routers.
See certResolver for more information.
traefik.http.routers.myrouter.tls.certresolver=myresolver
traefik.http.routers.
See for more information.
traefik.http.routers.
See domains for more information.
traefik.http.routers.myrouter.tls.domains[0].sans=test.example.org,dev.example.org
traefik.http.routers.
See for more information.
traefik.http.routers.myrouter.tls.options=foobar
traefik.http.routers.
traefik.http.routers.myrouter.priority=42
To update the configuration of the Service automatically attached to the service, add tags starting with traefik.http.services.{name-of-your-choice}.
, followed by the option you want to change.
For example, to change the passHostHeader
behavior, you'd add the tag traefik.http.services.{name-of-your-choice}.loadbalancer.passhostheader=false
.
traefik.http.services.
Registers a port. Useful when the service exposes multiples ports.
traefik.http.services.myservice.loadbalancer.server.port=8080
traefik.http.services.
Overrides the default scheme.
traefik.http.services.myservice.loadbalancer.server.scheme=http
traefik.http.services.
traefik.http.services.myservice.loadbalancer.passhostheader=true
traefik.http.services.
traefik.http.services.myservice.loadbalancer.healthcheck.headers.X-Foo=foobar
traefik.http.services.
See health check for more information.
traefik.http.services.
See for more information.
traefik.http.services.
See health check for more information.
traefik.http.services.myservice.loadbalancer.healthcheck.path=/foo
traefik.http.services.
See for more information.
traefik.http.services.myservice.loadbalancer.healthcheck.port=42
traefik.http.services.
See health check for more information.
traefik.http.services.myservice.loadbalancer.healthcheck.scheme=http
traefik.http.services.
See for more information.
traefik.http.services.myservice.loadbalancer.healthcheck.timeout=10
traefik.http.services.
See health check for more information.
traefik.http.services.myservice.loadbalancer.healthcheck.followredirects=true
traefik.http.services.
See for more information.
traefik.http.services.myservice.loadbalancer.sticky=true
traefik.http.services.
See sticky sessions for more information.
traefik.http.services.myservice.loadbalancer.sticky.cookie.httponly=true
traefik.http.services.
See for more information.
traefik.http.services.myservice.loadbalancer.sticky.cookie.name=foobar
traefik.http.services.
See sticky sessions for more information.
traefik.http.services.myservice.loadbalancer.sticky.cookie.secure=true
traefik.http.services.
See for more information.
traefik.http.services.myservice.loadbalancer.sticky.cookie.samesite=none
traefik.http.services.
FlushInterval specifies the flush interval to flush to the client while copying the response body.
traefik.http.services.myservice.loadbalancer.responseforwarding.flushinterval=10
Middleware
You can declare pieces of middleware using tags starting with traefik.http.middlewares.{name-of-your-choice}.
, followed by the middleware type/options.
For example, to declare a middleware named my-redirect
, you'd write traefik.http.middlewares.my-redirect.redirectscheme.scheme: https
.
More information about available middlewares in the dedicated middlewares section.
Declaring and Referencing a Middleware
# ...
# Declaring a middleware
# Referencing a middleware
traefik.http.routers.my-service.middlewares=my-redirect
Conflicts in Declaration
If you declare multiple middleware with the same name but with different parameters, the middleware fails to be declared.
You can declare TCP Routers and/or Services using tags.
Declaring TCP Routers and Services
traefik.tcp.routers.my-router.rule=HostSNI(`example.com`)
traefik.tcp.services.my-service.loadbalancer.server.port=4123
If you declare a TCP Router/Service, it will prevent Traefik from automatically creating an HTTP Router/Service (like it does by default if no TCP Router/Service is defined). You can declare both a TCP Router/Service and an HTTP Router/Service for the same consul service (but you have to do so manually).
TCP Routers
traefik.tcp.routers.
See entry points for more information.
traefik.tcp.routers.mytcprouter.entrypoints=ep1,ep2
traefik.tcp.routers.
See for more information.
traefik.tcp.routers.
See service for more information.
traefik.tcp.routers.mytcprouter.service=myservice
traefik.tcp.routers.
See for more information.
traefik.tcp.routers.mytcprouter.tls=true
traefik.tcp.routers.
See certResolver for more information.
traefik.tcp.routers.mytcprouter.tls.certresolver=myresolver
traefik.tcp.routers.
See for more information.
traefik.tcp.routers.mytcprouter.tls.domains[0].main=example.org
traefik.tcp.routers.
See domains for more information.
traefik.tcp.routers.mytcprouter.tls.domains[0].sans=test.example.org,dev.example.org
traefik.tcp.routers.
See for more information.
traefik.tcp.routers.mytcprouter.tls.options=mysoptions
traefik.tcp.routers.
See TLS for more information.
traefik.tcp.routers.mytcprouter.tls.passthrough=true
TCP Services
traefik.tcp.services.
Registers a port of the application.
traefik.tcp.services.mytcpservice.loadbalancer.server.port=423
traefik.tcp.services.
See termination delay for more information.
traefik.tcp.services.mytcpservice.loadbalancer.terminationdelay=100
UDP
You can declare UDP Routers and/or Services using tags.
Declaring UDP Routers and Services
traefik.udp.routers.my-router.entrypoints=udp
traefik.udp.services.my-service.loadbalancer.server.port=4123
UDP and HTTP
If you declare a UDP Router/Service, it will prevent Traefik from automatically creating an HTTP Router/Service (like it does by default if no UDP Router/Service is defined). You can declare both a UDP Router/Service and an HTTP Router/Service for the same consul service (but you have to do so manually).
UDP Routers
traefik.udp.routers.
See for more information.
traefik.udp.routers.myudprouter.entrypoints=ep1,ep2
traefik.udp.routers.
See service for more information.
traefik.udp.routers.myudprouter.service=myservice
UDP Services
traefik.udp.services.
Registers a port of the application.
traefik.udp.services.myudpservice.loadbalancer.server.port=423
traefik.enable
traefik.enable=true
You can tell Traefik to consider (or not) the service by setting traefik.enable
to true or false.
Port Lookup
Traefik is capable of detecting the port to use, by following the default consul Catalog flow. That means, if you just expose lets say port on the consul Catalog ui, traefik will pick up this port and use it.