RousselTMLEARNING

Proxy & réseau

Traefik : les providers (Docker, Kubernetes, Nomad, Consul, fichiers, clés-valeurs)

Les providers alimentent la configuration dynamique de Traefik : découverte des services Docker, Swarm, Kubernetes, Nomad et Consul, fichiers, HTTP et magasins clés-valeurs (etcd, Redis, Consul, ZooKeeper).

1. Rôle des providers #

D'où vient la configuration dynamique.

Principe #

La configuration statique (fichier traefik.yml ou arguments) dit à Traefik quels providers écouter. Les providers fournissent la configuration dynamique : routeurs, services, middlewares. Quand un conteneur démarre ou qu'un objet Kubernetes change, Traefik met ses routes à jour à chaud.

Providers Traefik
Plusieurs providers peuvent être actifs en même temps ; leurs objets sont suffixés par le nom du provider (auth@docker, auth@file).

2. Les providers courants #

Choisir selon la plateforme.

Tableau #

ProviderSourceDéclaration d'une route
DockerAPI Docker (socket)labels traefik.http.routers… sur les conteneurs
SwarmAPI Swarmlabels de service (deploy.labels)
Kubernetes CRDAPI KubernetesIngressRoute, Middleware, TraefikService
Kubernetes Ingress / Gateway APIAPI Kubernetesobjets standards Ingress, HTTPRoute
Nomad, Consul Catalog, ECScatalogue de servicestags sur les services
Filefichiers YAML ou TOMLconfiguration écrite à la main, rechargée à chaud
HTTPpoint d'API qui renvoie du JSONconfiguration générée par un outil
etcd, Redis, Consul KV, ZooKeepermagasin clés-valeursclés traefik/http/routers/…

3. Exemples #

Statique puis dynamique.

Configuration statique #

providers:
  docker:
    exposedByDefault: false          # seuls les conteneurs avec traefik.enable=true sont publiés
    network: web
  file:
    directory: /etc/traefik/dynamic
    watch: true
  redis:
    endpoints: ["redis:6379"]

Route publiée par un label Docker #

labels:
  - traefik.enable=true
  - traefik.http.routers.api.rule=Host(`api.exemple.fr`) && PathPrefix(`/v1`)
  - traefik.http.routers.api.entrypoints=websecure
  - traefik.http.routers.api.tls.certresolver=le
  - traefik.http.services.api.loadbalancer.server.port=8080
Erreur Courante : Monter le socket Docker donne à Traefik un accès root à l'hôte. Montez-le en lecture seule ou passez par un proxy de socket (tecnativa/docker-socket-proxy) limité aux lectures.
Bonne Pratique : exposedByDefault: false évite de publier par erreur une base de données ou un outil interne.

Articles liés

Traefik : sécuriser et transformer les requêtes avec les middlewares (BasicAuth, ForwardAuth…)

Les middlewares Traefik modifient les requêtes et réponses entre le routeur et le service : authentification …

Traefik comme Ingress Controller pour Kubernetes (Helm, IngressRoute, Gateway API)

Installer Traefik dans Kubernetes avec Helm et publier des applications avec Ingress, les CRD IngressRoute et…

Les plugins Traefik : l'exemple de CrowdSec pour bloquer les attaques

Étendre Traefik avec des plugins (catalogue officiel, interpréteur Yaegi), puis protéger ses applications ave…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !