En ce dimanche limite caniculaire, il faut se mettre à l’abri du soleil et en profiter pour recharger les accus de la semaine dernière, qui a été pour moi assez intense, avec Santexpo. Et justement, comme je vous avais présenté succinctement Traefik Manager, c’était le bon moment pour vous faire un billet plus deep-dive, car cet outil est vraiment cool… Allons-y !
Lors de mon petit billet de l’époque, je vous avais dit que Traefik Manager était un peu le Nginx Proxy Manager pour Traefik. En fait, c’est au final bien plus que cela, car Traefik Manager est plutôt le dashboard qui manquait à Traefik. Vous le savez, Traefik est extrêmement puissant et souple mais complexe à paramétrer. Sa courbe d’apprentissage est vraiment longue et il a une caractéristique relativement commune aux outils de ce type : son paramétrage ne se fait avant tout que par son jeu d’APIs et ne se configure historiquement qu’en ligne de commande.
Traefik Manager vient combler en grande partie ce « manque » de UI et s’adresse plutôt aux techs qui connaissent le concept et les fonctions de Traefik mais qui sont plus à l’aise avec une interface web. Si en plus cette UI est particulièrement efficace et léchée, que demande le peuple !
TM peut s’installer de manière autonome mais également s’adapter à une configuration existante, même si j’ai un peu galéré personnellement avec mon répertoire « dynamic » .. Autant je pense que j’ai passé trop de temps avec un bug qui n’avait au final rien à voir, autant pour la présentation on va partir plutôt d’un proxy vide fraichement installé, ce sera plus simple pour vous comme pour moi 🙂
Pour configurer votre Traefik Manager, je vous conseille, pour simplifier, de le lier via un docker-compose à votre instance Traefik, pour simplifier la gestion des droits d’accès et la communication avec Traefik. Voici le compose qui m’a servi de base de travail sur mon lab :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
services: traefik: image: traefik:v3 container_name: traefik restart: unless-stopped privileged: true ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock:Z - ./dynamic.yml:/etc/traefik/dynamic.yml - ./traefik.yml:/etc/traefik/traefik.yml - ./acme.json:/etc/traefik/certs/acme.json - ./access.log:/var/log/traefik/access.log environment: - OVH_ENDPOINT=ovh-eu - OVH_APPLICATION_KEY=xyxyxyxyxyxyxy - OVH_APPLICATION_SECRET=xyxyxyxyxyxyxyxyxyxyxyx - OVH_CONSUMER_KEY=xyxyxyxyxyxyxyxyxyxyxyx - LEGO_DISABLE_CNAME_SUPPORT=true networks: - traefik-net socket-proxy: image: ghcr.io/tecnativa/docker-socket-proxy:latest container_name: socket-proxy restart: unless-stopped environment: - CONTAINERS=1 - POST=1 privileged: true volumes: - /var/run/docker.sock:/var/run/docker.sock:ro networks: - socket-proxy-net traefik-manager: image: ghcr.io/chr0nzz/traefik-manager:latest container_name: traefik-manager restart: unless-stopped ports: - "5566:5000" environment: - COOKIE_SECURE=false - STATIC_CONFIG_PATH=/app/traefik.yml volumes: - ./config:/app/config - ./backups:/app/backups - ./dynamic.yml:/app/config/dynamic.yml - ./traefik.yml:/app/traefik.yml - ./acme.json:/app/acme.json:ro - ./access.log:/app/logs/access.log:ro networks: - traefik-net networks: traefik-net: external: true socket-proxy-net: internal: true |
En résumé, voici les points importants. Ce docker-compose déploie trois services complémentaires : Traefik lui-même, un socket-proxy sécurisé (qui isole l’accès au socket Docker dans un réseau interne dédié socket-proxy-net, évitant d’exposer directement /var/run/docker.sock à Traefik, comme indiqué dans la documentation de Traefik Manager) et Traefik Manager, l’outil de gestion que nous allons explorer.
Côté organisation, j’ai fait le choix d’un répertoire racine unique pour l’ensemble des fichiers de configuration (/home/traefikman utilisé en temps que dir courant) : traefik.yml (config statique), dynamic.yml (config dynamique utilisée par TraefikMan), acme.json (le cache des certificats). Les certificats TLS sont générés automatiquement via Let’s Encrypt en mode DNS Challenge avec OVH : Traefik dialogue directement avec l’API OVHcloud pour valider les domaines et renouveler les certificats sans aucune intervention manuelle. Enfin, le réseau traefik-net, externe joue le rôle de colonne vertébrale : tous les conteneurs de l’environnement s’y connectent pour être découverts et routés par Traefik, quelle que soit leur stack docker-compose d’origine.
La configuration initiale, relativement simple :






Enfin, on arrive au dashboard « new generation », qui reprend les code du dashboard original de Traefik :


L’ajout de notre première route à traefik :


En cliquant sur le petit icone « (i) » dans la tuile guacamole, TM nous présente une fenêtre d’information complète sur la route qui a été créée ainsi que le service qui a été créé pour décrire le server cible :

Vous avez accès a toute la config de Traefik ! Une carte des routes installées, la liste de certificats demandés et validés chez Let’s Encrypt et même les logs d’accès HTTP issues du access.log que j’ai ajouté dans le docker-compose :




L’onglet Logs de Traefik Manager offre une vue analytique des dernières requêtes. On y retrouve les codes HTTP, un temps de réponse moyen, et la répartition des méthodes HTTP. Les sections Top IPs etc. … Une vue vraiment pratique au quotidien !
Les settings de Traefik Manager sont vraiment bien foutus et couvrent tout ce dont on a besoin. On retrouve d’abord la gestion de l’interface, avec pas mal d’options pour personnaliser le dashboard à son goût. Côté authentification, c’est sérieux : password, 2FA et même OIDC/SSO sont au menu. La section Static Config permet de gérer directement depuis l’UI les entrypoints (web :80 et websecure :443 dans mon cas), les Cert Resolvers, les providers Docker et File… avec un avertissement bien visible pour ne pas faire de bêtises. Les backups sont automatiques avant chaque modification.






Pour terminer, on notera qu’il est possible aussi de gérer les plugins de Traefik et mieux encore, de créer des middleware, pour ajouter une authentification ou un traitement particulier sur le flux proxy, je vous met quelques copie d’écran pour vous mettre l’eau à la bouche, et pour vous laisser découvrir tout ça en cas de besoin avec un petit exemple de basic auth :




Pour ajouter le middleware à la route map, on édite la cible et on insère l’authentification que l’on vient de créer :


Franchement, ça change la vie au quotidien, d’autant qu’il existe plein de middleware déjà pré-cablé et proposés en mode wizard ! Je vous ai collé la liste plus haut dans les copie d’écran 🙂
En parcourant la doc de Traefik Manager, la gestion de Kubernetes est bien mentionnée, notamment via le support du provider Kubernetes en Route Monitoring, comme on a pu le voir dans les settings (mais en read-only seulement). Cependant, je n’ai pas eu l’occasion de le tester dans ce contexte, et c’est clairement quelque chose qui mériterait de s’y attarder, lors d’un prochain billet pourquoi pas !
Bonne fin de dimanche et bonne semaine (chaude a priori !)

Références :
– Le site de Traefik Manager : https://traefik-manager.xyzlab.dev
– Le github : https://github.com/chr0nzz/traefik-manager