GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Guide Docker :Installation de Traefik - un proxy inverse moderne pour les microservices

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 ?

  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. 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 :

  1. Nous créons un nouveau conteneur nommé "traefik" basé sur l'image docker "traefik:latest".
  2. Le conteneur 'traefik' s'exécutera sur le réseau docker personnalisé nommé 'proxy' et exposera les ports externes HTTP 80 et HTTPS 443.
  3. Le conteneur montera la configuration traefik "traefik.toml" et "acme.json", y compris le fichier docker sock.
  4. 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.


Docker
  1. Guide d'exécution d'un proxy inverse pour HTTP(S), SSH et MySQL/MariaDB à l'aide de NGINX

  2. Qu'est-ce qu'un conteneur Docker :un guide d'introduction pour les débutants

  3. Proxy inverse avec Nginx :un guide de configuration étape par étape

  4. Un guide pour débutants sur LXD :Configuration d'un proxy inverse pour héberger plusieurs sites Web

  5. Installation de Docker (Ubuntu)

Créez un proxy inverse NGINX dans Docker et apprenez 1 nouvelle compétence !

Guide complet pour supprimer les images Docker

Commandes Docker pour la gestion du cycle de vie des conteneurs (Guide définitif)

Installation de Docker sur macOS

40 commandes réseau Linux utiles pour les administrateurs système modernes

NGINX en tant que proxy inverse pour l'application Node ou Angular