Traefik & Consul

A Story of KV store & Containers

Store your configuration in Consul and let Traefik do the rest!

Routing Configuration

See the dedicated section in routing.

Provider Configuration

endpoints

Required, Default=”127.0.0.1:8500”

Defines how to access to Consul.

File (TOML)

  1. [providers.consul]
  2. endpoints = ["127.0.0.1:8500"]

File (YAML)

  1. providers:
  2. consul:
  3. endpoints:
  4. - "127.0.0.1:8500"

CLI

  1. --providers.consul.endpoints=127.0.0.1:8500

rootKey

Defines the root key of the configuration.

Required, Default=”traefik”

File (TOML)

  1. [providers.consul]
  2. rootKey = "traefik"

File (YAML)

  1. providers:
  2. consul:
  3. rootKey: "traefik"

CLI

  1. --providers.consul.rootkey=traefik

username

Defines a username to connect with Consul.

Optional, Default=””

File (TOML)

  1. [providers.consul]
  2. # ...
  3. username = "foo"

File (YAML)

  1. providers:
  2. consul:
  3. # ...
  4. usename: "foo"

CLI

  1. --providers.consul.username=foo

password

Optional, Default=””

Defines a password to connect with Consul.

File (TOML)

  1. [providers.consul]
  2. # ...
  3. password = "bar"

File (YAML)

  1. providers:
  2. consul:
  3. # ...
  4. password: "bar"

CLI

  1. --providers.consul.password=foo

tls

Optional

tls.ca

Certificate Authority used for the secured connection to Consul.

File (TOML)

  1. [providers.consul.tls]
  2. ca = "path/to/ca.crt"

File (YAML)

  1. providers:
  2. consul:
  3. tls:
  4. ca: path/to/ca.crt

CLI

  1. --providers.consul.tls.ca=path/to/ca.crt

tls.caOptional

Policy followed for the secured connection with TLS Client Authentication to Consul. Requires tls.ca to be defined.

  • true: VerifyClientCertIfGiven
  • false: RequireAndVerifyClientCert
  • if tls.ca is undefined NoClientCert

    File (TOML)

  1. [providers.consul.tls]
  2. caOptional = true

File (YAML)

  1. providers:
  2. consul:
  3. tls:
  4. caOptional: true

CLI

  1. --providers.consul.tls.caOptional=true

tls.cert

Public certificate used for the secured connection to Consul.

File (TOML)

  1. [providers.consul.tls]
  2. cert = "path/to/foo.cert"
  3. key = "path/to/foo.key"

File (YAML)

  1. providers:
  2. consul:
  3. tls:
  4. cert: path/to/foo.cert
  5. key: path/to/foo.key

CLI

  1. --providers.consul.tls.cert=path/to/foo.cert
  2. --providers.consul.tls.key=path/to/foo.key

tls.key

Private certificate used for the secured connection to Consul.

File (TOML)

  1. [providers.consul.tls]
  2. cert = "path/to/foo.cert"
  3. key = "path/to/foo.key"

File (YAML)

  1. providers:
  2. consul:
  3. tls:
  4. cert: path/to/foo.cert
  5. key: path/to/foo.key

CLI

  1. --providers.consul.tls.cert=path/to/foo.cert
  2. --providers.consul.tls.key=path/to/foo.key

tls.insecureSkipVerify

If insecureSkipVerify is true, TLS for the connection to Consul accepts any certificate presented by the server and any host name in that certificate.

File (TOML)

  1. [providers.consul.tls]
  2. insecureSkipVerify = true

File (YAML)

  1. providers:
  2. consul:
  3. tls:
  4. insecureSkipVerify: true

CLI

  1. --providers.consul.tls.insecureSkipVerify=true