Installation
Traefik lässt sich bequem als Docker Container bereitstellen. Es wird nur ein Container für Traefik selbst benötigt, keine weiteren Zusatzdienste sind notwendig.
Eine einfache voll funktionsfähige Konfiguration als Docker Compose sieht z. B. wie folgt aus. Diese ist sehr gut für Testumgebungen geeignet, um neue Images auszuprobieren und diese auf einem Host unter einem Port (hier 80) bereitzustellen.
Für ein produktives Setup sollte unbedingt noch Let's Encrypt mit konfiguriert werden. Auch wenn diese Konfiguration bereits reicht, um Dienste anzubieten, so währen diese jetzt noch unverschlüsselt und somit unsicher. Außerdem ist in diesem Fall mit api.insecure die Konfiguration über Port 8080 einsehbar, was ein Sicherheitsrisiko bedeutet.
services:
traefik:
image: "traefik"
container_name: "traefik"
command:
#- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
ports:
- "80:80"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
{{@48#bkmrk-Compose-Run}}
Damit wäre traefikTraefik nun einsatzbereit und unter http://localhostlocalhost:8080 die Konfigurationsoberfläche erreichbar.
Beispiel
Reverse DienstProxy Netzwerk konfigurieren
Um nun denDienste Dienst eines anderen Containers anzubieten, wird mitüber den Docker Labeln gearbeitet. Diese liest Traefik automatischerreichbar laufendzu ausmachen, undmuss stelltdieser die Dienste bereit,innerhalb sodes wieDocker sieHosts erreichen können. Da Docker für jede Compose Datei ein eigenes Default Netzwerk konfiguriert, kann Traefik diese nicht erreichen. Auch die Option alle Dienste zusammen mit Traefik in deneiner LabelnCompose beschriebenDatei werden.zu Esbeschreiben, folgtist keine gute Idee.
Somit erstellen wir uns nun ein Beispiel-DienstNetzwerk, welches unabhängig von den Compose Dateien verwaltet wird. In diesem Beispiel wird das Netzwerk mit dem Namen traefik erstellt. Da keine weiteren Optionen angegeben werden, ist es ein Bridge Netzwerk, welches für unseren Fall gut geeignet ist.
sudo docker network create traefik
Nun wird die bisherige Compose Konfiguration für den Container Traefik selbst: whoami. Dieser zeigt lediglich einige Serverinformationen an, jedoch eignet er sich hervorragend dazu, um diefolgende automatischeZeilen Konfigurationerweitert, zu demonstrieren. fügen wir einfach folgenden Dienst zu demdamit Traefik Dienstin hinzu.das Netzwerk aufgenommen wird.
whoami:
image: "traefik/whoami"
container_name: "simple-service"
labels:networks:
- "traefik.enable=true"traefik
-networks:
"traefik.http.routers.whoami.rule=Host(`whoami.localhost`)"traefik:
-name: "traefik.http.routers.whoami.entrypoints=web"traefik
-external: "traefik.http.services.whoami.loadbalancer.server.port=80"true
HierZum sehenSchluss wir nun 3 Label für die Traefik Konfiguration.
Enable: damit wird dieserden Containerfür Traefik markiert und von diesem verwaltetRule: hier wird festgelegt, welche Regel zum Aufruf des Dienstes führt, in diesem Fall durch den Aufruf über die Domäne whoami.localhostEntrypoints: Es werden nur Anfragen vom Entrypointmitwebdocker compose up -dakzeptiert.
Bitte bei 2. auf die Anführungszeichen achten, es sind nicht die geraden einfachen, sondern die schrägen einzelnen Striche, die wie ein Backslash verlaufen.
Anschließend die angepasste Docker Konfiguration wieder neu erstellen lassen mitund Composefertig. UpAb jetzt können einfach weitere Container in dieses Netzwerk aufgenommen werden, damit Traefik sie erreichen und anschließendanbieten kann mit http://whoami.localhost der neue Dienst über den Reverse Proxy getestet werden.
Besonders angenehm: Traefik muss nicht neu gestartet werden, sondern sobald der neue Container gestartet ist, wird dieser automatisch von Traefik erkannt und dieser konfiguriert sich selbst. Die Seite ist kurz danach bereits über Traefik erreichbar.kann.
Konfiguration einsehen
Über den Port 8080 lässt sich die Konfiguration anzeigen: http://localhost:8080. Es wird ein Dashboard angezeigt, welches alle erkannten Dienste, Regeln usw. anzeigt. Hier kann nun erkundet werden, ob alles richtig übernommen wurde. Für produktive Umgebungen, die öffentlich erreichbar sind, sollte dieses Dashboard deaktiviert werden, da die gesamte Konfiguration gezeigt wird und alles offen legt.