Traefik est un proxy inverse HTTP moderne et un équilibreur de charge pour les microservices. Traefik facilite le déploiement de tous les microservices, en les intégrant aux composants d'infrastructure existants tels que Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul, etc.
Traefik sert de routeur pour toutes vos applications de microservices, acheminant toutes les demandes des clients vers la bonne destination des microservices.
Dans ce tutoriel, je vais vous montrer étape par étape comment installer et configurer le proxy inverse moderne Traefik en tant que conteneur Docker sur Ubuntu 18.04 LTS (Bionic Beaver).
Prérequis
- Ubuntu 18.04
- Privilèges root
Qu'allons-nous faire ?
- Installer Docker sur Ubuntu 18.04
- Installer Docker Compose
- Créer un réseau Docker personnalisé
- Installer et configurer Traefik
- Test
Étape 1 - Installer Docker sur Ubuntu 18.04
Pour ce guide, nous utiliserons la dernière version de docker qui peut être installée à partir du référentiel officiel de docker.
Ajoutez la clé Docker et le référentiel à l'aide de la commande ci-dessous.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
La commande 'add-apt-repository' mettra automatiquement à jour tous les référentiels.
Installez maintenant la dernière version de docker-ce.
sudo apt install docker-ce
Une fois l'installation terminée, démarrez le service Docker et activez-le pour qu'il se lance à chaque démarrage du système.
systemctl start docker
systemctl enable docker
L'édition communautaire de docker a été installée sur le système Ubuntu 18.04, vérifiez la version de docker installée.
docker version
Additionnel :exécution de Docker pour un utilisateur non root
Le conteneur Docker peut être exécuté sous l'utilisateur non root. Nous avons juste besoin d'ajouter l'utilisateur au groupe docker.
Ajouter l'utilisateur 'mohammad'.
useradd -m -s /bin/bash mohammad
Ajoutez maintenant l'utilisateur 'mohammad' au groupe docker, puis redémarrez le service docker.
usermod -a -G docker mohammad
systemctl restart docker
Testez en exécutant le docker hello-world.
docker run -it hello-world
Et voici le résultat.
Étape 2 - Installer Docker Compose
Docker-Compose est un outil de ligne de commande permettant de définir et de gérer des applications Docker multi-conteneurs.
Docker Compose est un script python, il peut être installé facilement avec la commande python pip ou avec la commande apt du référentiel Ubuntu. Avec compose, nous pouvons exécuter plusieurs conteneurs Docker avec une seule commande.
Installez docker compose à partir du référentiel à l'aide de la commande apt ci-dessous.
sudo apt install docker-compose
Une fois l'installation terminée, vérifiez la version de docker compose.
docker-compose version
Le docker compose 1.17 a été installé sur Ubuntu 18.04.
Étape 3 - Créer un réseau Docker personnalisé
Dans ce didacticiel, le conteneur traefik s'exécutera sur le réseau personnalisé Docker. Nous devons donc créer un nouveau réseau personnalisé docker sur le serveur.
Vérifiez le réseau docker disponible sur le système.
docker network ls
Créez maintenant un nouveau réseau personnalisé nommé "proxy" pour le conteneur traefik.
docker network create proxy
Et vous obtiendrez une chaîne aléatoire du nom du conteneur réseau. Vérifiez à nouveau le réseau disponible.
docker network ls
Ci-dessous le résultat.
Le réseau docker personnalisé nommé 'proxy' pour traefik a été créé.
Étape 4 - Installer et configurer le proxy inverse Traefik
Dans cette étape, nous allons créer le conteneur traefik avec HTTPS Letsencrypt activé (en utilisant un nom de domaine 'traefik.hakase-labs.io), et rediriger automatiquement HTTP vers HTTPS sur traefik.
Pré-installation de Traefik
Avant de créer toute la configuration de traefik, nous devons installer 'apache2-utils' pour générer le mot de passe htpasswd chiffré et créer le nouveau répertoire traefik.
Installez 'apache2-utils' en utilisant la commande apt ci-dessous.
sudo apt install apache2-utils -y
Exécutez maintenant la commande htpasswd ci-dessous pour générer un nouveau mot de passe pour l'authentification du tableau de bord traefik.
htpasswd -nb mohammad password
Conservez le résultat dans votre note.
mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.
Ensuite, connectez-vous à l'utilisateur 'mohammad'.
su - mohammad
Créez un nouveau répertoire nommé 'traefik' pour toute la configuration de traefik.
mkdir -p traefik/
cd traefik/
Créer une configuration Traefik
Accédez au répertoire "traefik" et créez un nouveau fichier de configuration "traefik.toml" à l'aide de l'éditeur vim.
cd traefik/
vim traefik.toml
Collez la configuration ci-dessous.
#Traefik Global Configuration debug = false checkNewVersion = true logLevel = "ERROR" #Define the EntryPoint for HTTP and HTTPS defaultEntryPoints = ["https","http"] #Enable Traefik Dashboard on port 8080 #with basic authentication method #mohammad and password [web] address = ":8080" [web.auth.basic] users = ["mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi."] #Define the HTTP port 80 and #HTTPS port 443 EntryPoint #Enable automatically redirect HTTP to HTTPS [entryPoints] [entryPoints.http] address = ":80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] address = ":443" [entryPoints.https.tls] #Enable retry sending a request if the network error [retry] #Define Docker Backend Configuration [docker] endpoint = "unix:///var/run/docker.sock" domain = "traefik.hakase-labs.io" watch = true exposedbydefault = false #Letsencrypt Registration #Define the Letsencrypt ACME HTTP challenge [acme] email = "[email protected]" storage = "acme.json" entryPoint = "https" OnHostRule = true [acme.httpChallenge] entryPoint = "http"
Enregistrez et quittez.
Remarque :
Toutes les informations sur la configuration sont dans la section commentaire '#... '.
Créer un script de composition Traefik Docker
Créez maintenant le script docker-compose yml.
vim docker-compose.yml
Collez la configuration ci-dessous.
version: '3' services: traefik: image: traefik:latest command: --docker --docker.domain=hakase-labs.io ports: - 80:80 - 443:443 networks: - proxy volumes: - /var/run/docker.sock:/var/run/docker.sock - ./traefik.toml:/traefik.toml - ./acme.json:/acme.json labels: - "traefik.frontend.rule=Host:traefik.hakase-labs.io" - "traefik.port=8080" container_name: traefik restart: always networks: proxy: external: true
Enregistrez et quittez.
Remarque :
- Nous créons un nouveau conteneur nommé "traefik" basé sur l'image docker "traefik:latest".
- Le conteneur 'traefik' s'exécutera sur le réseau docker personnalisé nommé 'proxy' et exposera les ports externes HTTP 80 et HTTPS 443.
- Le conteneur montera la configuration traefik "traefik.toml" et "acme.json", y compris le fichier docker sock.
- Configuration des étiquettes pour traefik, le nom de domaine frontal et le port traefik.
Configuration Letsencrypt ACME
La configuration acme sur 'traefik.toml' est utilisée pour générer automatiquement le SSL letsencrypt. Et il est nécessaire pour le fichier de stockage 'acme.json'.
Créez un nouveau fichier JSON 'acme.json' et changez l'autorisation en '600'.
touch acme.json
chmod 600 acme.json
Tous les journaux concernant les informations SSL Letsencrypt seront enregistrés dans le fichier.
Créer un conteneur Traefik
Nous sommes maintenant prêts à créer notre propre conteneur traefik en utilisant les fichiers de configuration ci-dessus.
cd traefik/
ls -lah
Tous les fichiers de configuration 'traefik.toml', 'docker-compose.yml' et 'acme.json'.
Créez le conteneur à l'aide de la commande docker compose ci-dessous.
docker-compose up -d
Une fois terminé, vérifiez le conteneur en cours d'exécution.
docker-compose ps
Et vous obtiendrez le conteneur Traefik opérationnel, exposerez les ports externes HTTP et HTTPS.
Étape 5 - Tester
Ouvrez votre navigateur Web et tapez le nom de domaine traefik dans la barre d'adresse. Le mien est :
http://traefik.hakase-labs.io/
Vous serez redirigé vers la connexion HTTPS et il vous sera demandé l'authentification par nom d'utilisateur et mot de passe.
Connectez-vous avec l'utilisateur 'mohammad' et le mot de passe est 'password'.
Et vous obtiendrez le tableau de bord Traefik comme ci-dessous.
Page d'état de santé de Traefik.
Le proxy inverse HTTP moderne Traefik a été installé en tant que conteneur Docker sur Ubuntu 18.04.