Présentation de Traefik

Traefik répond aux problématiques d’Edge Routing présentes en production. Jouant parfaitement le rôle de Reverse Proxy et Load Balancer il facilitera le déploiement de vos applications web.


3 min read

Traefik est un outil d’Edge Routing open-source développé par la société Containous. Une startup française, initialement basée à Lyon. L’entreprise travaille sur la version open-source ainsi que la version entreprise du projet.

Traefik est développé en Go, un langage de programmation suffisamment bas niveau pour faire un reverse-proxy, mais à la fois suffisamment haut niveau pour avoir une communautée partageant de nombreuses librairies. Le projet est extrêmement populaire, avec quasiment 30 000 étoiles sur GitHub, il est aujourd’hui en version 2.3. En bref, Traefik résout le problème de routage de l’extérieur, vers l’intérieur.

Traefik est positionné à l'entrée de votre plateforme.

Traefik est la porte d’entrée de votre serveur, il est chargé de router le trafic entrant vers les services correspondants. Contrairement à la majorité des autres outils, Traefik permet aux développeurs de se concentrer sur leur cœur de métier en épargnant une étape fastidieuse de configuration.

Avec Docker, cette information de configuration est déjà présente dans le système, comment faire pour optimiser au maximum pour ne plus avoir à se focaliser sur cette configuration ?

En résumé, Traefik est un reverse proxy dynamique, il va aller chercher ces information de configuration de routage dans le système plutôt que ce soit un être humain qui doit avoir à les lui fournir.

Comment fonctionne Traefik ?

Le fonctionnement interne de Traefik est schématisé brièvement ci-dessous. Cette partie est transparente pour le développeur mais il est important d’en comprendre les concepts.

Lorsqu’une requête entre, elle passe par différents objets.

  • Les entrypoints, cette partie doit être configurée à la main, elle indique où doit écouter Traefik : 80 pour du HTTP,  3306 pour du MySQL … Cela correspond en général à un protocole. Une fois que les requêtes sont attrapées par Traefik dans ces entrypoints, elles arrivent dans les routers.
  • Les routers sont composés de deux étapes :
    Les rules servent d’aiguillage. En fonction de la requête, elles redirigent le trafic à tel ou tel endroit.
    Les middlewares agissent sur la requête ou sur la réponse pour la transformer. Pour modifier l’url par exemple.
  • Les services correspondent à la représentation interne faite par Traefik des conteneurs vers lesquels il doit rediriger. C’est également à cette étape que le Load Balancing opère.

Configuration minimale

version: "3"
services:
  traefik:
    image: "traefik:v2.2"
    command:
      - --entrypoints.web.address=:80
      - --providers.docker=true
    ports:
      - "80:80"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  my-app:
    image: containous/whoami:v1.3.0
    labels:
      - "traefik.http.routers.my-app.rule=Host(`example.com`)"

Cette configuration indique à Traefik de router les requêtes http de example.com vers le conteneur my-app.

Ajout d'un middleware : htpassword

version: "3"
services:
  traefik:
    image: "traefik:v2.2"
    command:
      - --entrypoints.web.address=:80
      - --providers.docker=true
    ports:
      - "80:80"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  my-app:
    image: containous/whoami:v1.3.0
    labels:
      - "traefik.http.routers.my-app.rule=Host(`example.com`)"
      - "traefik.http.routers.my-app.middlewares=auth"
      - "traefik.http.middlewares.auth.basicauth.users=user:password"

Le user:password peut-être généré ici.
Attention à bien doubler les $ pour la compatibilité avec le docker-compose.

Aller plus loin

Traefik est un outil en plein développement, aujourd’hui encore peu connu, il deviendra demain la norme en terme de reverse proxy pour les application conteneurisées.

La conteneurisation étant un phénomène en forte croissance. Traefik répond parfaitement aux problématiques d’Edge Routing présent en production. Jouant parfaitement le rôle de Reverse Proxy et Load Balancer il facilitera le déploiement de vos applications web.

HTTPS avec Traefik en production
Traefik s’interfacer avec Let’s Encrypt, il génère automatiquement tous vos certificats SSL et les renouvelle automatiquement.

Related Articles

HTTPS avec Traefik
2 min read
Monitoring AWS avec CloudWatch
2 min read
Docker stack serveur web
2 min read
Une interface graphique pour Docker
1 min read
Débuter avec Docker
2 min read
Installer GitLab avec Docker
1 min read

GO TOP

🎉 You've successfully subscribed to FrenchCode!
OK