Comment installer et utiliser Traefik comme proxy inverse avec Docker sur CentOS 8

Traefik est un reverse proxy HTTP et un équilibreur de charge open-source qui t’aide à déployer facilement des microservices. Tu peux facilement l’intégrer à tes composants d’infrastructure, notamment Docker, Kubernetes, Docker Swarm, Rancher, AWS et bien d’autres. Si tu veux exécuter plusieurs applications sur le même hôte Docker, tu peux utiliser Traefik comme proxy inverse pour exposer les ports 80 et 443 au reste du monde.

Dans ce tutoriel, nous allons te montrer comment installer et configurer Traefik comme un proxy inverse sur CentOS 8.

Conditions préalables

  • Un serveur exécutant CentOS 8.
  • Un nom de domaine valide pointé avec l’IP de ton serveur.
  • Un mot de passe root est configuré sur le serveur.

Installe Docker et Docker Compose

Tout d’abord, tu dois installer la dernière version de Docker et de Docker Compose dans ton système. Par défaut, Docker n’est pas disponible dans le repo par défaut de CentOS 8. Tu devras donc ajouter le repo Docker CE dans ton système. Tu peux l’ajouter avec la commande suivante :

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Une fois le repo créé, installe le Docker CE avec la commande suivante :

dnf install docker-ce --nobest -y

Une fois que le Docker est installé, démarre le service Docker et active-le pour qu’il démarre au redémarrage du système avec la commande suivante :

systemctl start docker
systemctl enable docker

Afin d’installer Docker Compose, tu dois installer Curl et télécharger le binaire de Docker Compose dans ton système. Tu peux le faire avec la commande suivante :

dnf install curl
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Créer un réseau Docker

Ensuite, tu devras créer un nouveau réseau Docker pour exécuter le conteneur traefik. Tu peux le créer avec le nom « web » en exécutant la commande suivante :

docker network create web

Ensuite, vérifie ton réseau avec la commande suivante :

docker network ls

Tu devrais obtenir la sortie suivante :

NETWORK ID          NAME                DRIVER              SCOPE
76a9475e5ab0        bridge              bridge              local
2a3d79f64747        host                host                local
4c9123229eaa        none                null                local
0b6e010b43d0        web                 bridge              local

Installer et configurer le proxy Traefik

Avant de commencer, tu dois installer httpd-tools pour générer le mot de passe crypté. Tu peux installer cet outil avec la commande suivante :

dnf install httpd-tools -y

Une fois installé, génère le mot de passe crypté avec la commande suivante :

htpasswd -nb admin my_password

Tu devrais obtenir la sortie suivante :

admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0

Ensuite, crée un nouveau fichier de configuration Traefik avec la commande suivante :

nano traefik.toml

Ajoute les lignes suivantes, notamment ton nom de domaine valide, ton mot de passe sécurisé et ton port :

defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.dashboard]
    address = ":8080"
    [entryPoints.dashboard.auth]
      [entryPoints.dashboard.auth.basic]
        users = ["admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0"]
  [entryPoints.http]
    address = ":80"
      [entryPoints.http.redirect]
        entryPoint = "https"
  [entryPoints.https]
    address = ":443"
      [entryPoints.https.tls]

[api]
entrypoint="dashboard"

[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

[docker]
domain = "traefik.linuxbuz.com"
watch = true
network = "web"

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, crée un fichier vide pour stocker tes informations Let’s Encrypt.

touch acme.json

Ensuite, donne la permission appropriée à ce fichier avec la commande suivante :

chmod 600 acme.json

Crée un fichier Docker Compose

Ensuite, tu devras créer un nouveau fichier docker-compose.yml et définir ton domaine, ton port, ton réseau et ton volume.

Tu peux le créer avec la commande suivante :

nano docker-compose.yml

Ajoute les lignes suivantes :

version: '3'

services:

  traefik:
    image: traefik:1.7.21-alpine
    command: --docker --docker.domain=linuxbuz.com
    ports:
      - 80:80
      - 443:443
    networks:
      - web
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
    labels:
      - "traefik.frontend.rule=Host:traefik.linuxbuz.com"
      - "traefik.port=8080"
    container_name: traefik
    restart: always

networks:
   web:
    external: true

Sauvegarde et ferme le fichier lorsque tu as terminé.

Construis le conteneur Docker de Traefik

À ce stade, le fichier de configuration de Traefik et de Docker Compose est prêt. Maintenant, construis le conteneur Traefik avec la commande suivante :

docker-compose up -d

Tu devrais obtenir la sortie suivante :

Unable to find image 'traefik:1.7.21-alpine' locally
1.7.21-alpine: Pulling from library/traefik
c9b1b535fdd9: Pull complete 
c141e361698e: Pull complete 
2573c02b6f16: Pull complete 
1619fb3841d1: Pull complete 
Digest: sha256:0e4ac8ae724603898620dbd5eb9cda7ec05f405d25476eb0d32b716b490ba079
Status: Downloaded newer image for traefik:1.7.21-alpine
27e735357bb3b7d2d253ff78ddf6e78896851420eff399e8ade23affc7ff0bf7

Ensuite, vérifie le conteneur en cours d’exécution avec la commande suivante :

docker ps

Tu devrais obtenir le résultat suivant :

CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                      NAMES
7604696507a5        traefik:1.7.21-alpine   "/entrypoint.sh --do…"   6 seconds ago       Up 4 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   traefik

Accède à l’interface Web de Traefik

Maintenant, ouvre ton navigateur Web et accède à l’interface Web de Traefik en utilisant l’URL https://traefik.linuxbuz.com. Il te sera demandé de fournir un nom d’utilisateur et un mot de passe :

Connexion Traefik

Indique le nom d’utilisateur admin et le mot de passe que tu as généré précédemment et clique sur le boutonConnexion. Tu devrais voir le tableau de bord de Traefik dans l’écran suivant :

Tableau de bord Traefik

Clique sur l’onglet SANTÉ. Tu devrais voir l’état de santé du conteneur Traefik dans l’écran suivant :

Traefik Statistiques de trafic

Conclusion

Félicitations ! Tu as installé avec succès le proxy Traefik sur CentOS 8. Pour plus d’informations, consulte la documentation de Traefik.

Vous aimerez aussi...