GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Docker-Leitfaden:Traefik installieren – ein moderner Reverse-Proxy für Microservices

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?

  1. Installieren Sie Docker unter Ubuntu 18.04
  2. Installieren Sie Docker Compose
  3. Benutzerdefiniertes Docker-Netzwerk erstellen
  4. Traefik installieren und konfigurieren
  5. 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ühren
docker 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:

  1. Wir erstellen einen neuen Container mit dem Namen „traefik“, der auf dem Docker-Image „traefik:latest“ basiert.
  2. Der 'traefik'-Container wird auf dem benutzerdefinierten Docker-Netzwerk namens 'proxy' ausgeführt und stellt die externen Ports HTTP 80 und HTTPS 443 bereit.
  3. Der Container wird die Traefik-Konfiguration „traefik.toml“ und „acme.json“ bereitstellen, einschließlich der Docker-Sock-Datei.
  4. 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.


Docker
  1. Eine Anleitung zum Ausführen eines Reverse-Proxys für HTTP(S), SSH und MySQL/MariaDB mit NGINX

  2. Was ist ein Docker-Container:Eine Einführung für Anfänger

  3. Reverse Proxy mit Nginx:Eine Schritt-für-Schritt-Anleitung zur Einrichtung

  4. Ein Anfängerleitfaden für LXD:Einrichten eines Reverse-Proxys zum Hosten mehrerer Websites

  5. Docker installieren (Ubuntu)

Erstellen Sie einen NGINX-Reverse-Proxy in Docker und lernen Sie 1 neue Fähigkeit!

Vollständige Anleitung zum Entfernen von Docker-Images

Docker-Befehle zum Verwalten des Containerlebenszyklus (Definitive Guide)

Docker unter macOS installieren

40 nützliche Linux-Netzwerkbefehle für moderne SysAdmins

NGINX als Reverse Proxy für Node- oder Angular-Anwendungen