Les éléments de configuration de Traefik peuvent être fournis de 3 façons:
Traefik s'appuie sur une configuration en partie statique et en grande partie dynamique.
La configuration statique statique est lue au démarrage de Traefik. Elle contient pour l'essentiel la définition des entrypoints, les connexions aux Providers, la configuration des systèmes de tracing et des outils de métiques. Toute modification de la configuration statique nécessite un redémarrage de Traefik pour être prise en compte.
Pour définir la configuration statique, une seule source peut être utilisée: soit le fichier, soit les options de lignes de commandes.
La configuration statique ne permet pas de définir les objets de type router, middlewares, services et configuration TLS. Ces objets sont décrits par les éléments de configuration dynamique.
La configuration dynamique contient l'ensemble des éléments permettant de définir le routage des requêtes. Ces éléments peuvent être fournis via:
Toutes les sources de configurations dynamiques peuvent s'utiliser en parallèle, les modifications apportées sont prises en compte sans avoir besoin de redémarrer Traefik.
Le CLI flag --api.insecure permet de démarrer et d'exposer la webUI sur le port 8080 sans usage du HTTPS.
Traefik s'appuie sur les labels pour identifier les services et router les flux entrants vers les bons services. Par défaut Traefik peut être en mesure de créer des routes vers tous les services/conteneurs qu'il découvre. Il est possible cependant de restreindre la portée de la découverte de services de Traefik:
labels:
- traefik.http.routers.client.rule=Host(`fqdn1.com`, `fqdn2.com`)
- traefik.http.services.client.loadbalancer.port=3000
Avec l'option exposedByDefault = false définie sur le provider, Traefik n'expose pas les conteneurs conteneurs sauf s'ils contiennent explicitement le label “traefik.enable=true”.
Dans l'exemple ci-dessous définit l'option pour sur le Docker Engine local
# Configuration statique [providers] [providers.docker] endpoint = "unix:///var/run/docker.sock" exposedByDefault = false
Traefik cherchera à établir le routage dynamiquement uniquement vers les conteneur ayant le label “traefik.enable=true”
Afin de pouvoir ajouter/supprimer des certificats même lorsque traefik est en cours d’exécution, leur définition peut être ajoutée dans la configuration dynamique, pour cela on ajoute un provider de type fichier dans la configuration statique:
# configuration statique
# Dynamic configuration TOML [[tls.certificates]] certFile = "/path/to/fqdn1.cert" keyFile = "/path/to/fqdn1.key" [[tls.certificates]] certFile = "/path/to/fqdn2.cert" keyFile = "/path/to/fqdn2.key"
Dans Traefik les certificats sont regroupés dans des magasins (store)
# Dynamic configuration # Définition du magasin 'default' [tls.stores] [tls.stores.default]
Traefik peut utiliser un certificat par défaut pour les connexions sans SNI ou sans correspondance de domaine. Le certificat a utiliser par défaut doit être déclaré dans le magasin:
# Dynamic configuration [tls.stores] [tls.stores.default] # Certificat a utiliser par défaut [tls.stores.default.defaultCertificate] certFile = "path/to/cert.crt" keyFile = "path/to/cert.key"
Si aucun certificat par défaut n'est fournit, Traefik génère et utilise un certificat auto-signé.