Static Configuration in TraefikEE

TraefikEE uses the same static configuration system as Traefik with a few additions. Unlike Traefik however, TraefikEE does not require a restart to update the configuration.

To get an overview of the static configuration capabilities, please refer to the static configuration reference.

Applying a Static Configuration

Static Configuration can be applied to a cluster using the apply command in teectl:

teectl apply --file=config.toml

The apply command supports both TOML and YAML static configuration formats.

More information about the apply command can be found in the teectl reference

Getting the Cluster Static Configuration

It is possible to get the currently applied cluster static configuration using teectl:

teectl get static-config

The format of the output can be customized with the --format option.

More information about the get static-config command can be found in the teectl reference

Configuring Authentication Sources

Static Configuration can include Authentication Sources which are required for middleware such as the LDAP authentication to work. An example configuration of an LDAP authentication source can be seen below:

#...

authSources:
  ldapSource:
    ldap:
      url: ldap://ldap.test.svc.cluster.local:389
#...

[authSources]
  [authSources.ldapSource]
    [authSources.ldapSource.ldap]
      url = "ldap://ldap.test.svc.cluster.local:389"

For more information on configuring the LDAP authentication sources, please refer to the LDAP documentation

Cluster Configuration

Cleanup Grace Period

When a proxy fails, it is not immediately removed from the cluster. A grace period (by default 1 Hour) is given to allow the proxy to recover. After this grace period the proxy will be removed from the cluster. The grace period can be configured as follows:

#...

cluster:
  cleanup:
    gracePeriod: 20m
#...

[cluster]
  [cluster.cleanup]
    gracePeriod = "20m"

Docker Swarm Network Discovery

Docker Swarm has to ability to discover new and existing networks on which to find applications to route. The network discovery is disabled by default, and can be enabled with the following cofiguration:

#...

cluster:
  swarm:
    networkdiscovery: true
#...

[cluster]
  [cluster.swarm]
    networkdiscovery = true

More information about network discovery can be found in the documentation.

Examples

Basic Static Configuration

The most basic static configuration must include entrypoints and at least one provider:

entryPoints:
  http:
    address: ":80"
  https:
    address: ":443"

providers:
  kubernetesCRD: {}
[entryPoints]
  [entryPoints.http]
    address = ":80"
  [entryPoints.https]
    address = ":443"

[providers.kubernetesCRD]
entryPoints:
  http:
    address: ":80"
  https:
    address: ":443"

providers:
  docker:
    swarmMode: true
[entryPoints]
  [entryPoints.http]
    address = ":80"
  [entryPoints.https]
    address = ":443"

[providers.docker]
  swarmMode: true  
entryPoints:
  http:
    address: ":80"
  https:
    address: ":443"

providers:
  file:
    filename: dynamic_config.yml
[entryPoints]
  [entryPoints.http]
    address = ":80"
  [entryPoints.https]
    address = ":443"

[providers]
  [providers.file]
    filename = "dynamic_config.toml"

Customized Configuration for Kubernetes

The following static configuration will configure the Kubernetes CRD provider to watch only the namespaces traefikee and production for routing configuration:

entryPoints:
  http:
    address: ":80"
  https:
    address: ":443"

providers:
  kubernetesCRD:
    namespaces:
      - traefikee
      - production
[entryPoints]
  [entryPoints.http]
    address = ":80"
  [entryPoints.https]
    address = ":443"

[kubernetescrd]
namespaces = ["traefikee", "production"]

More information can be found on Traefik's Kubernetes Ingress Provider page.

Custom Entrypoint

The following static configuration will configure TraefikEE to listen to a custom entrypoint for incoming requests.

entryPoints:
  internal:
    address: ":8888"

providers:
  kubernetesCRD: {}
[entryPoints]
  [entryPoints.internal]
    address = ":8888"
[providers.kubernetesCRD]

Important

When using an orchestrator, TraefikEE creates two network services for:

  • HTTP on port 80
  • HTTPS on port 443

In order to add a custom entrypoint on a different port, it is necessary to configure the network service. This "service" allows incoming requests to reach proxies on the custom entrypoint's port.