Guide Docker : Installer Traefik – un Reverse Proxy moderne pour les microservices

Traefik est un reverse proxy HTTP et un équilibreur de charge modernes pour les microservices. Traefik facilite le déploiement de tous les microservices, en s’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 tes applications microservices, en acheminant toutes les demandes des clients vers la bonne destination des microservices.

Dans ce tutoriel, je vais te montrer étape par étape comment installer et configurer Traefik modern reverse proxy en tant que conteneur Docker sur Ubuntu 18.04 LTS (Bionic Beaver).

Prérequis

  • Ubuntu 18.04
  • Privilèges de racine

Ce que nous allons faire ?

  1. Installer Docker sur Ubuntu 18.04
  2. Installer Docker Compose
  3. Créer un réseau Docker personnalisé
  4. Installer et configurer Traefik
  5. Tester

É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 dépôt officiel de docker.

Ajoute la clé et le dépôt de docker à 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 dépôts.

Installer Docker sur Ubuntu

Installe maintenant la dernière version de docker-ce.

sudo apt install docker-ce

Une fois l’installation terminée, démarre le service docker et active-le pour qu’il se lance à chaque fois au 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érifie la version de docker installée.

docker version

Vérifie la version de docker

Supplémentaire : Exécuter Docker pour un utilisateur non root

Le conteneur Docker peut être exécuté sous l’utilisateur non-root. Il suffit d’ajouter l’utilisateur au groupe docker.

Ajoute l’utilisateur ‘mohammad’.

useradd -m -s /bin/bash mohammad

Ajoute maintenant l’utilisateur ‘mohammad’ au groupe docker, puis redémarre le service docker.

usermod -a -G docker mohammad
systemctl restart docker

Teste en exécutant le docker hello-world.

docker run -it hello-world

Et voici le résultat.

Exécuter Docker pour un utilisateur non root

Étape 2 – Installe Docker Compose

Docker-Compose est un outil en ligne de commande pour définir et 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 à partir du dépôt Ubuntu. Avec compose, nous pouvons exécuter plusieurs conteneurs Docker avec une seule commande.

Installe docker compose à partir du dépôt à l’aide de la commande apt ci-dessous.

sudo apt install docker-compose

Une fois l’installation terminée, vérifie la version de docker compose.

docker-compose version

La version docker compose 1.17 a été installée sur Ubuntu 18.04.

Installe Docker Compose

Étape 3 – Créer un réseau Docker personnalisé

Dans ce tutoriel, le conteneur traefik fonctionnera sur le réseau personnalisé de docker. Nous devons donc créer un nouveau réseau personnalisé docker sur le serveur.

Vérifie le réseau docker disponible sur le système.

docker network ls

Maintenant, crée un nouveau réseau personnalisé nommé ‘proxy’ pour le conteneur traefik.

docker network create proxy

Et tu obtiendras une chaîne aléatoire du nom du conteneur du réseau. Vérifie à nouveau le réseau disponible.

docker network ls

Le résultat est illustré ci-dessous.

Créer un réseau Docker personnalisé

Le réseau docker personnalisé nommé ‘proxy’ pour traefik a été créé.

Étape 4 – Installe et configure le proxy inverse de 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 crypté et créer le nouveau répertoire traefik.

Installe ‘apache2-utils’ en utilisant la commande apt ci-dessous.

sudo apt install apache2-utils -y

Exécute 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

Conserve le résultat dans ta note.

mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.

Installer et configurer Traefik Reverse Proxy

Ensuite, connecte-toi à l’utilisateur ‘mohammad’.

su - mohammad

Crée un nouveau répertoire nommé ‘traefik’ pour toute la configuration de traefik.

mkdir -p traefik/
cd traefik/

Créer la configuration de traefik

Va dans le répertoire ‘traefik’ et crée un nouveau fichier de configuration ‘traefik.toml’ en utilisant l’éditeur vim.

cd traefik/
vim traefik.toml

Colle 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"

Sauvegarde et quitte.

Remarque :

Toutes les informations sur la configuration se trouvent dans la section des commentaires‘#.... ‘.

Crée le script Docker Compose de Traefik

Crée maintenant le script docker-compose yml.

vim docker-compose.yml

Colle 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

Sauvegarde et quitte.

Remarque :

  1. Nous créons un nouveau conteneur nommé ‘traefik’ basé sur l’image docker ‘traefik:latest’.
  2. Le conteneur ‘traefik’ fonctionnera sur le réseau docker personnalisé nommé ‘proxy’ et exposera les ports externes HTTP 80 et HTTPS 443.
  3. Le conteneur montera la configuration de traefik ‘traefik.toml’ et ‘acme.json’, y compris le fichier docker sock.
  4. Configuration de l’étiquette pour traefik, le nom de domaine du frontend et le port de traefik.

Configuration ACME de Letsencrypt

La configuration acme sur ‘traefik.toml’ est utilisée pour générer automatiquement le SSL letsencrypt. Et elle est nécessaire pour le fichier de stockage ‘acme.json’.

Crée un nouveau fichier JSON ‘acme.json’ et change la permission en ‘600’.

touch acme.json
chmod 600 acme.json

Tous les journaux concernant les infos de SSL letsencrypt seront enregistrés dans le fichier.

Construis le conteneur Traefik

Nous sommes maintenant prêts à construire notre propre conteneur traefik à l’aide des fichiers de configuration ci-dessus.

cd traefik/
ls -lah

Tous les fichiers de configuration ‘traefik.toml’, ‘docker-compose.yml’ et ‘acme.json’.

Construire le conteneur Traefik

Construis le conteneur à l’aide de la commande docker compose ci-dessous.

docker-compose up -d

Construis le conteneur à l'aide de docker compose

Quand c’est terminé, vérifie le conteneur en cours d’exécution.

docker-compose ps

Et tu auras le conteneur Traefik en marche, qui expose les ports externes HTTP et HTTPS.

Le conteneur Traefik est en place et fonctionne

Étape 5 – Test

Ouvre ton navigateur Web et tape le nom de domaine Traefik dans la barre d’adresse. Le mien est :

http://traefik.hakase-labs.io/

Tu seras redirigé vers la connexion HTTPS et il te sera demandé de t’authentifier avec ton nom d’utilisateur et ton mot de passe.

Authentification basée sur un mot de passe

Connecte-toi avec l’utilisateur ‘mohammad’ et le mot de passe est ‘password’.

Et tu obtiendras le tableau de bord Traefik comme ci-dessous.

Tableau de bord de Traefik

Page d’état de santé de Traefik.

Page d'état de santé de Traefik

Traefik modern HTTP reverse-proxy a été installé comme un conteneur Docker sur Ubuntu 18.04.

Référence

Vous aimerez aussi...