Traefik ist ein moderner HTTP-Reverse-Proxy und Load-Balancer für Microservices. Traefik macht die Bereitstellung aller Microservices einfach, integriert in vorhandene Infrastrukturkomponenten wie Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul usw.
Traefik dient als Router für alle Ihre Microservices-Anwendungen und leitet alle Client-Anfragen an das richtige Microservices-Ziel weiter.
In diesem Tutorial zeige ich Ihnen Schritt für Schritt, wie Sie Traefik Modern Reverse Proxy als Docker-Container auf Ubuntu 18.04 LTS (Bionic Beaver) installieren und konfigurieren.
Voraussetzungen
- Ubuntu 18.04
- Root-Rechte
Was werden wir tun?
- Installieren Sie Docker unter Ubuntu 18.04
- Installieren Sie Docker Compose
- Benutzerdefiniertes Docker-Netzwerk erstellen
- Traefik installieren und konfigurieren
- Testen
Schritt 1 – Docker auf Ubuntu 18.04 installieren
Für dieses Handbuch verwenden wir die neueste Docker-Version, die aus dem offiziellen Docker-Repository installiert werden kann.
Fügen Sie den Docker-Schlüssel und das Repository mit dem folgenden Befehl hinzu.
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"
Der Befehl „add-apt-repository“ aktualisiert automatisch alle Repositories.
Installieren Sie jetzt das neueste Docker-ce.
sudo apt install docker-ce
Nachdem die Installation abgeschlossen ist, starten Sie den Docker-Dienst und aktivieren Sie ihn so, dass er jedes Mal beim Systemstart gestartet wird.
systemctl start docker
systemctl enable docker
Die Docker-Community-Edition wurde auf dem Ubuntu 18.04-System installiert, überprüfen Sie die installierte Docker-Version.
docker version
Zusätzlich:Ausführen von Docker für Nicht-Root-Benutzer
Der Docker-Container kann unter dem Nicht-Root-Benutzer ausgeführt werden. Wir müssen den Benutzer nur zur Docker-Gruppe hinzufügen.
Benutzer „mohammad“ hinzufügen.
useradd -m -s /bin/bash mohammad
Fügen Sie nun den Benutzer „mohammad“ zur Docker-Gruppe hinzu und starten Sie den Docker-Dienst neu.
usermod -a -G docker mohammad
systemctl restart docker
Testen Sie, indem Sie den Docker hello-world.
ausführendocker run -it hello-world
Und folgendes ist das Ergebnis.
Schritt 2 – Docker Compose installieren
Docker-Compose ist ein Befehlszeilentool zum Definieren und Verwalten von Docker-Anwendungen mit mehreren Containern.
Docker Compose ist ein Python-Skript, es kann einfach mit dem Python-Pip-Befehl oder mit dem apt-Befehl aus dem Ubuntu-Repository installiert werden. Mit compose können wir mehrere Docker-Container mit einem einzigen Befehl ausführen.
Installieren Sie docker compose aus dem Repository mit dem folgenden apt-Befehl.
sudo apt install docker-compose
Überprüfen Sie nach Abschluss der Installation die Docker-Compose-Version.
docker-compose version
Docker Compose 1.17 wurde auf Ubuntu 18.04 installiert.
Schritt 3 – Benutzerdefiniertes Docker-Netzwerk erstellen
In diesem Tutorial wird der Traefik-Container im benutzerdefinierten Docker-Netzwerk ausgeführt. Also müssen wir ein neues benutzerdefiniertes Docker-Netzwerk auf dem Server erstellen.
Überprüfen Sie das verfügbare Docker-Netzwerk auf dem System.
docker network ls
Erstellen Sie nun ein neues benutzerdefiniertes Netzwerk mit dem Namen „proxy“ für den Traefik-Container.
docker network create proxy
Und Sie erhalten eine zufällige Zeichenfolge des Netzwerkcontainernamens. Überprüfen Sie erneut das verfügbare Netzwerk.
docker network ls
Unten sehen Sie das Ergebnis.
Das benutzerdefinierte Docker-Netzwerk mit dem Namen „proxy“ für Traefik wurde erstellt.
Schritt 4 – Traefik-Reverse-Proxy installieren und konfigurieren
In diesem Schritt erstellen wir den Traefik-Container mit aktiviertem HTTPS-letsencrypt (unter Verwendung eines Domänennamens „traefik.hakase-labs.io“) und leiten HTTP automatisch auf HTTPS auf traefik um.
Traefik-Vorinstallation
Bevor wir die gesamte Traefik-Konfiguration erstellen, müssen wir 'apache2-utils' installieren, um das verschlüsselte htpasswd-Passwort zu generieren und das neue Traefik-Verzeichnis zu erstellen.
Installieren Sie 'apache2-utils' mit dem folgenden apt-Befehl.
sudo apt install apache2-utils -y
Führen Sie nun den folgenden htpasswd-Befehl aus, um ein neues Passwort für die Traefik-Dashboard-Authentifizierung zu generieren.
htpasswd -nb mohammad password
Halten Sie das Ergebnis in Ihrer Notiz fest.
mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.
Melden Sie sich als Nächstes beim Benutzer „mohammad“ an.
su - mohammad
Erstellen Sie ein neues Verzeichnis mit dem Namen „traefik“ für die gesamte Traefik-Konfiguration.
mkdir -p traefik/
cd traefik/
Traefik-Konfiguration erstellen
Wechseln Sie in das Verzeichnis „traefik“ und erstellen Sie mit dem vim-Editor eine neue Konfigurationsdatei „traefik.toml“.
cd traefik/
vim traefik.toml
Fügen Sie die Konfiguration unten ein.
#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"
Speichern und beenden.
Hinweis:
Alle Informationen zur Konfiguration befinden sich im Kommentarbereich '#... '.
Traefik-Docker-Compose-Skript erstellen
Erstellen Sie nun das YML-Skript docker-compose.
vim docker-compose.yml
Fügen Sie die Konfiguration unten ein.
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
Speichern und beenden.
Hinweis:
- Wir erstellen einen neuen Container mit dem Namen „traefik“, der auf dem Docker-Image „traefik:latest“ basiert.
- Der 'traefik'-Container wird auf dem benutzerdefinierten Docker-Netzwerk namens 'proxy' ausgeführt und stellt die externen Ports HTTP 80 und HTTPS 443 bereit.
- Der Container wird die Traefik-Konfiguration „traefik.toml“ und „acme.json“ bereitstellen, einschließlich der Docker-Sock-Datei.
- Label-Konfiguration für Traefik, den Front-End-Domänennamen und den Traefik-Port.
Letsencrypt-ACME-Konfiguration
Die Acme-Konfiguration auf ‚traefik.toml‘ wird zum automatischen Generieren des SSL-letsencrypt verwendet. Und es wird für die Speicherdatei „acme.json“ benötigt.
Erstellen Sie eine neue JSON-Datei „acme.json“ und ändern Sie die Berechtigung in „600“.
touch acme.json
chmod 600 acme.json
Alle Protokolle zu SSL-Letsencrypt-Informationen werden in der Datei gespeichert.
Traefik-Container erstellen
Jetzt sind wir bereit, unseren eigenen Traefik-Container mit den obigen Konfigurationsdateien zu bauen.
cd traefik/
ls -lah
Alle Konfigurationsdateien „traefik.toml“, „docker-compose.yml“ und „acme.json“.
Erstellen Sie den Container mit dem unten stehenden docker compose-Befehl.
docker-compose up -d
Überprüfen Sie nach Abschluss den laufenden Container.
docker-compose ps
Und Sie werden den Traefik-Container zum Laufen bringen und die externen Ports HTTP und HTTPS verfügbar machen.
Schritt 5 – Testen
Öffnen Sie Ihren Webbrowser und geben Sie den Traefik-Domainnamen in die Adressleiste ein. Meine ist:
http://traefik.hakase-labs.io/
Sie werden zur HTTPS-Verbindung umgeleitet und nach der Authentifizierung mit Benutzername und Passwort gefragt.
Melden Sie sich mit dem Benutzer „mohammad“ an und das Passwort ist „password“.
Und Sie erhalten das Traefik-Dashboard wie folgt.
Statusseite von Traefik Health.
Traefik Modern HTTP Reverse-Proxy wurde als Docker-Container auf Ubuntu 18.04 installiert.