Afin de simplifier la configuration et permettre l’ajout de serveurs j’ai décidé de remplacer mon reverse proxy apache par le triptyque:
- apache pour le TLS
- HAProxy pour la répartition inter VM
- Traefik pour le routage intra VM vers les conteneurs

Installation de Traefik
L’utilisation de la version docker de Traefik parait évidente puisque d’une part l’utilisation des versions dockerisées m’a montré que cela fonctionne mieux et souvent du premier coup car toute la configuration d’intégration est faite (mise en conteneur = paquet prêt à l’emploi) et d’autre part Traefix sera utilisé pour faire du routage vers des conteneurs docker !
Dans mon infra, l’installation de Traefik est très simple. Il me suffit de déclarer un nouveau projet dans mon Gitlab en suivant l’exemple dans la documentation de Traefik pour docker. Ce qui donne:
https://gitlab.bressure.net/docker/applications/traefik
Le déploiement des instantes Traefik se fait très simplement en reprenant l’exemple du .gitlab-cy.yml de mes instances prom-node puisque Traefik doit également s’installer sur toutes mes machines où docker se trouve.

Sur le schéma on voit que le port d’exposition d’un service n’a pas besoin d’être connu car Traefik va écouter les évènements du démon docker pour associer à un nom d »hôte (nom de service comme blog.bressure.net) à un port exposé où rediriger le flux. Ainsi le haproxy en amont n’a pas besoin de connaître le port d’exposition mais seulement vers quel serveur backend envoyer les flux.
Installation du HAProxy
Le haproxy fera l’objet d’une petit travail de configuration et comme l’image haproxy sur docker hub est vierge de toute configuration initiale, je vais me coller à cette tâche. Pour cela il ne suffit pas créer un projet de type applications (docker-compose) mais je vais avoir également besoin de mettre sous IC la construction d’une image personnalisée avec ma configuration. Donc je crée 2 nouveaux projets dans mon Gitlab:
- https://gitlab.bressure.net/docker/applications/haproxy
- https://gitlab.bressure.net/docker/services/haproxy
Migration progressive
La configuration de mon reverse proxy apache est sensible car c’est la pierre angulaire de mon infra en traitant le TLS et les redirections vers tous les services (dockerisés ou pas). La migration sera donc également sensible et je souhaite la faire sans interruption ce qui implique qu’elle soit progressive le temps que j’itère pour arriver à un résultat qui me satisfait.
L’objectif final sera également de
- passer à des certificats wildcard afin de simplifier l’ajout de nouveaux services sans devoir passer par la case création d’un certificat à chaque fois
- pour avoir accès la préprod (ie staging) sans passer par l’accès directe à la VM de préprod
- pouvoir migrer les services docker d’un hôte à un autre sans revoir toute la configuration du haproxy.
La suite au prochain billet.
Tags: apache Docker haproxy Traefik
Comments