Traefik & Consul Catalog

    Attach tags to your services and let Traefik do the rest!

    tags

    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..rule

    See rule for more information.

    traefik.http.routers..entrypoints

    See for more information.

    1. traefik.http.routers.myrouter.entrypoints=web,websecure

    traefik.http.routers..middlewares

    See middlewares and for more information.

    1. traefik.http.routers.myrouter.middlewares=auth,prefix,cb

    traefik.http.routers..service

    See rule for more information.

    1. traefik.http.routers.myrouter.service=myservice

    traefik.http.routers..tls

    See for more information.

    1. traefik.http.routers.myrouter>.tls=true

    traefik.http.routers..tls.certresolver

    See certResolver for more information.

    1. traefik.http.routers.myrouter.tls.certresolver=myresolver

    traefik.http.routers..tls.domains[n].main

    See for more information.

      traefik.http.routers..tls.domains[n].sans

      See domains for more information.

      1. traefik.http.routers.myrouter.tls.domains[0].sans=test.example.org,dev.example.org

      traefik.http.routers..tls.options

      See for more information.

      1. traefik.http.routers.myrouter.tls.options=foobar

      traefik.http.routers..priority

      1. 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..loadbalancer.server.port

      Registers a port. Useful when the service exposes multiples ports.

      1. traefik.http.services.myservice.loadbalancer.server.port=8080

      traefik.http.services..loadbalancer.server.scheme

      Overrides the default scheme.

      1. traefik.http.services.myservice.loadbalancer.server.scheme=http

      traefik.http.services..loadbalancer.passhostheader

      1. traefik.http.services.myservice.loadbalancer.passhostheader=true

      traefik.http.services..loadbalancer.healthcheck.headers.

      1. traefik.http.services.myservice.loadbalancer.healthcheck.headers.X-Foo=foobar

      traefik.http.services..loadbalancer.healthcheck.hostname

      See health check for more information.

      traefik.http.services..loadbalancer.healthcheck.interval

      See for more information.

      traefik.http.services..loadbalancer.healthcheck.path

      See health check for more information.

      1. traefik.http.services.myservice.loadbalancer.healthcheck.path=/foo

      traefik.http.services..loadbalancer.healthcheck.port

      See for more information.

      1. traefik.http.services.myservice.loadbalancer.healthcheck.port=42

      traefik.http.services..loadbalancer.healthcheck.scheme

      See health check for more information.

      1. traefik.http.services.myservice.loadbalancer.healthcheck.scheme=http

      traefik.http.services..loadbalancer.healthcheck.timeout

      See for more information.

      1. traefik.http.services.myservice.loadbalancer.healthcheck.timeout=10

      traefik.http.services..loadbalancer.healthcheck.followredirects

      See health check for more information.

      1. traefik.http.services.myservice.loadbalancer.healthcheck.followredirects=true

      traefik.http.services..loadbalancer.sticky

      See for more information.

      1. traefik.http.services.myservice.loadbalancer.sticky=true

      traefik.http.services..loadbalancer.sticky.cookie.httponly

      See sticky sessions for more information.

      1. traefik.http.services.myservice.loadbalancer.sticky.cookie.httponly=true

      traefik.http.services..loadbalancer.sticky.cookie.name

      See for more information.

      1. traefik.http.services.myservice.loadbalancer.sticky.cookie.name=foobar

      traefik.http.services..loadbalancer.sticky.cookie.secure

      See sticky sessions for more information.

      1. traefik.http.services.myservice.loadbalancer.sticky.cookie.secure=true

      traefik.http.services..loadbalancer.sticky.cookie.samesite

      See for more information.

      1. traefik.http.services.myservice.loadbalancer.sticky.cookie.samesite=none

      traefik.http.services..loadbalancer.responseforwarding.flushinterval

      FlushInterval specifies the flush interval to flush to the client while copying the response body.

      1. 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

      1. # ...
      2. # Declaring a middleware
      3. # Referencing a middleware
      4. 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

      1. traefik.tcp.routers.my-router.rule=HostSNI(`example.com`)
      2. 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..entrypoints

      See entry points for more information.

      1. traefik.tcp.routers.mytcprouter.entrypoints=ep1,ep2

      traefik.tcp.routers..rule

      See for more information.

      traefik.tcp.routers..service

      See service for more information.

      1. traefik.tcp.routers.mytcprouter.service=myservice

      traefik.tcp.routers..tls

      See for more information.

      1. traefik.tcp.routers.mytcprouter.tls=true

      traefik.tcp.routers..tls.certresolver

      See certResolver for more information.

      1. traefik.tcp.routers.mytcprouter.tls.certresolver=myresolver

      traefik.tcp.routers..tls.domains[n].main

      See for more information.

      1. traefik.tcp.routers.mytcprouter.tls.domains[0].main=example.org

      traefik.tcp.routers..tls.domains[n].sans

      See domains for more information.

      1. traefik.tcp.routers.mytcprouter.tls.domains[0].sans=test.example.org,dev.example.org

      traefik.tcp.routers..tls.options

      See for more information.

      1. traefik.tcp.routers.mytcprouter.tls.options=mysoptions

      traefik.tcp.routers..tls.passthrough

      See TLS for more information.

      1. traefik.tcp.routers.mytcprouter.tls.passthrough=true

      TCP Services

      traefik.tcp.services..loadbalancer.server.port

      Registers a port of the application.

      1. traefik.tcp.services.mytcpservice.loadbalancer.server.port=423

      traefik.tcp.services..loadbalancer.terminationdelay

      See termination delay for more information.

      1. traefik.tcp.services.mytcpservice.loadbalancer.terminationdelay=100

      UDP

      You can declare UDP Routers and/or Services using tags.

      Declaring UDP Routers and Services

      1. traefik.udp.routers.my-router.entrypoints=udp
      2. 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..entrypoints

      See for more information.

      1. traefik.udp.routers.myudprouter.entrypoints=ep1,ep2

      traefik.udp.routers..service

      See service for more information.

      1. traefik.udp.routers.myudprouter.service=myservice

      UDP Services

      traefik.udp.services..loadbalancer.server.port

      Registers a port of the application.

      1. traefik.udp.services.myudpservice.loadbalancer.server.port=423

      traefik.enable

      1. 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.