Traefik est un proxy inverse HTTP open source et un équilibreur de charge qui vous aide à déployer facilement des microservices. Vous pouvez facilement l'intégrer à vos composants d'infrastructure, notamment Docker, Kubernetes, Docker Swarm, Rancher, AWS et bien d'autres. Si vous souhaitez exécuter plusieurs applications sur le même hôte Docker, vous pouvez utiliser Traefik comme proxy inverse pour exposer les ports 80 et 443 au reste du monde.
Dans ce tutoriel, nous allons vous montrer comment installer et configurer Traefik en tant que proxy inverse sur CentOS 8.
Prérequis
- Un serveur exécutant CentOS 8.
- Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
- Un mot de passe root est configuré sur le serveur.
Installer Docker et Docker Compose
Tout d'abord, vous devrez installer la dernière version de Docker et Docker Compose sur votre système. Par défaut, Docker n'est pas disponible dans le dépôt par défaut de CentOS 8. Vous devrez donc ajouter le référentiel Docker CE dans votre système. Vous pouvez 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éé, installez le Docker CE avec la commande suivante :
dnf install docker-ce --nobest -y
Une fois le Docker installé, démarrez le service Docker et activez-le pour qu'il démarre au redémarrage du système avec la commande suivante :
systemctl start docker
systemctl enable docker
Pour installer Docker Compose, vous devrez installer Curl et télécharger le binaire Docker Compose sur votre système. Vous pouvez 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, vous devrez créer un nouveau réseau Docker pour exécuter le conteneur traefik. Vous pouvez le créer avec le nom "web" en exécutant la commande suivante :
docker network create web
Ensuite, vérifiez votre réseau avec la commande suivante :
docker network ls
Vous devriez obtenir le résultat suivant :
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, vous devrez installer httpd-tools pour générer le mot de passe crypté. Vous pouvez installer cet outil avec la commande suivante :
dnf install httpd-tools -y
Une fois installé, générez le mot de passe crypté avec la commande suivante :
htpasswd -nb admin my_password
Vous devriez obtenir le résultat suivant :
admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0
Ensuite, créez un nouveau fichier de configuration Traefik avec la commande suivante :
nano traefik.toml
Ajoutez les lignes suivantes, y compris votre nom de domaine valide, votre mot de passe sécurisé et votre 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"
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, créez un fichier vide pour stocker vos informations Let's Encrypt.
touch acme.json
Ensuite, donnez l'autorisation appropriée à ce fichier avec la commande suivante :
chmod 600 acme.json
Créer un fichier Docker Compose
Ensuite, vous devrez créer un nouveau fichier docker-compose.yml et définir votre domaine, port, réseau et volume.
Vous pouvez le créer avec la commande suivante :
nano docker-compose.yml
Ajoutez 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
Enregistrez et fermez le fichier lorsque vous avez terminé.
Créer un conteneur Docker Traefik
À ce stade, le fichier de configuration Traefik et Docker Compose est prêt. Maintenant, construisez le conteneur Traefik avec la commande suivante :
docker-compose up -d
Vous devriez obtenir le résultat suivant :
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érifiez le conteneur en cours d'exécution avec la commande suivante :
docker ps
Vous devriez 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éder à l'interface Web Traefik
Maintenant, ouvrez votre navigateur Web et accédez à l'interface Web Traefik en utilisant l'URL https://traefik.linuxbuz.com. Il vous sera demandé de fournir un nom d'utilisateur et un mot de passe :
Indiquez le nom d'utilisateur en tant qu'administrateur et le mot de passe que vous avez générés précédemment et cliquez sur Signer dans bouton. Vous devriez voir le tableau de bord Traefik dans l'écran suivant :
Cliquez sur SANTÉ languette. Vous devriez voir l'état de santé du conteneur Traefik dans l'écran suivant :
Conclusion
Toutes nos félicitations! vous avez installé avec succès le proxy Traefik sur CentOS 8. Pour plus d'informations, consultez la documentation Traefik.