traefik proxy – Mit Autokonfiguration in die Cloud?

Von: Valentin Brückel
Datum: 22. Jan. 2021

Traefik ist ein reverse Proxy für Cloud- und Microservice-Umgebungen. Eine typische Aufgabe ist das Weiterleiten von Aufrufen von außerhalb in eine Cloud-Umgebung. Routingziele wie Container oder Services kann Traefik über eine automatische Konfiguration ohne Administrationsaufwand zur Verfügung stellen.

Das Open-Source-Projekt des Herstellers traefiklabs, ehemals Containous, wurde in der Programmiersprache Go realisiert und für einen Betrieb in der Cloud optimiert.

1. Features

Traefik bietet die typischen Features eines reverse Proxys: Von außen ankommender Datenverkehr wird an interne Services verteilt und kann auf dem Weg in verschiedener Weise behandelt werden. Unterstützt werden nicht nur die HTTP und HTTP/2 Protokolle, sondern auch TCP/UDP, Websockets und gRPC. Routing Muster wie z.B. Mirroring, Load Balancing und Canary Deployments lassen sich mit Traefik realisieren. Zu verschiedenen Tracing- und Metrik-Lösungen existieren Schnittstellen.

1.1 Autokonfiguration

Für eine Reihe gängiger Plattformen unterstützt Traefik den Anwender durch eine automatische Konfiguration. Das manuelle Einrichten von Routingzielen ist ebenfalls möglich, widerspricht aber der Philosophie des Produktes. Die Autokonfiguration wird für die folgenden Ziele unterstützt:

ProduktArt
DockerContainer Runtime
KubernetesContainer Orchestrator
ConsulRegistry, Key/Value Store
Amazon ECSContainer as a Service
MarathonOrchestrator
RancherOrchestrator
ConsulKey/Value
EtcdRegistry, Key/Value Store
ZooKeeperRegistry, Key/Value
RedisKey/Value
Von Traefik unterstützte Plattformen für das Routing

1.2 Security

Verbreitete Verfahren für die Authentifizierung wie OAuth2, JWT, LDAP und OpenID Connect sind der kostenpflichtigen Enterprise-Version vorbehalten. Die Open Source Variante von Traefik ist auf TLS-Unterstützung und HTTP-Basic-Auth beschränkt. Ein besonders interessantes Feature hat die Open Source Variante von Traefik dennoch zu bieten: Let's-Encrypt-Zertifikate können automatisch angefordert und erneuert werden.

2. Lizenz

Traefik Proxy ist Teil einer Produktfamilie, die aus Open-Source- und kommerziellen Produkten besteht.

Die Open-Source-Version von Traefik erlaubt als Edge Router diverse Traffic-Management-Aufgaben wie Mirroring, Canary Deployments und Health Checks und kann als TLS-Endpunkt inklusive automatischem Management von Let's-Encrypt-Zertifikaten dienen.

Daneben existiert das Kubernetes-spezifische Traefik Mesh mit Service-Mesh-Funktionen und das kommerzielle Produkt Traefik Enterprise, das die Features der beiden anderen Produkte integriert und um weitere Funktionen, insbesondere im Bereich Skalierbarkeit, Authentifizierung, erweitertes Monitoring und Support ergänzt.

3. Installation

Traefik stellt offizielle Docker-Images bereit. Daneben existieren Binär-Pakete für Windows, MacOS, Linux und BSD. Nach der Installation ist Traefik im Prinzip sofort lauffähig, für eine Minimal-Konfiguration werden nur wenige Parameter benötigt.

traefik Edge Router Architektur

Abbildung : Traefik routet Traffic zu Docker-Containern automatisch

4. Konfiguration

Traefik unterscheidet zwischen statischer und dynamischer Konfiguration.

Die statische Konfiguration erhält Traefik beim Start über eine Konfigurationsdatei, Kommandozeilenargumente oder Umgebungsvariablen. Sie legt fest, an welche Ports sich Traefik bindet und welche Backends ("Provider") auf Services durchsucht werden.

Die dynamische Konfiguration beschreibt die Dienste, die Traefik zugänglich macht. Sie erhält Traefik in den meisten Fällen indirekt über die jeweiligen Backends. Die Standard-Einstellungen sorgen oft bereits für eine funktionierende Konfiguration, individuelle Änderungen werden z.B. über Labels auf Containern oder Pods definiert.

5. Autokonfiguration am Beispiel von Docker

Traefik bietet zahlreiche Mechanismen für die Autokonfiguration. Am Beispiel von Docker wird im Folgenden aufgezeigt, wie das Verfahren funktioniert.

Das folgende Skript zeigt den Start eines Docker Containers aus der Kommandozeile. Über den Docker-Socket erfährt Traefik vom Start des Containers. Traefik liest die beiden Labels und richtet automatisch einen Router ein, der HTTP Verkehr an den Container weiterleitet.

docker run \
    -l 'traefik.http.routers.hello.rule=Host(`hello.localhost`)' \
    -l 'traefik.http.routers.hello.entrypoints=web' \
    httpd
Listing 1: Start eines Docker Containers mit Labels für die Konfiguration von traefik

Die beiden Labels reichen genügen, um über die Adresse http://hello.localhost auf den Webserver zuzugreifen.

Die automatische Konfiguration deckt viele Anwendungsfälle mit Standard-Einstellungen oder geringfügigen Anpassungen ab. In spezialisierteren Umgebungen kann die Zahl der Anpassungen anwachsen und die Vorteile gegenüber anderen Produkten relativieren sich.

6. UI

Traefik stellt ein Dashboard mit Statistiken und einer Übersicht der Konfigurationen bereit.

traefik Edge Router Dashboard

Abbildung : Dashboard mit Routen, Services und Ports

Auf Unterseiten zu den erkannten Services sind detailliertere Informationen zu finden.

traefik Edge Router Service Details

Abbildung : Details zum Docker-Dienst

Das Dashboard ist rein informativ und erlaubt keine Veränderungen an der Konfiguration.

7. Dokumentation und Community

Traefik positioniert sich als einfach anzuwendenden Router, der für viele Anwendungsfälle ausreichende Features mit minimaler Konfiguration und sinnvollen Standardeinstellungen bietet.

Entsprechend farbenfroh mit originellen Grafiken präsentiert sich die Dokumentation. Die von der Programmiersprache Go bekannte Taschenratte ist dort in Aktion zu sehen.

Die Dokumentation hilft dem Anwender mit vielen konkreten Anleitungen und Beispielen. Technische Erklärungen oder Erläuterungen, die über "wenn X, dann tue Y" hinaus gehen, sind dagegen spärlicher gesäat.

Traefik hat eine flache Lernkurve und ermöglicht es Anwendern, das Produkt bereits nach kurzer Einarbeitungszeit in der Praxis einzusetzen.

Insgesamt scheint dieses Konzept aufzugehen: Traefik hat aktuell, Stand Januar 2021, ca. 32.100 Github-Sterne und eine aktive Community aufzuweisen.

8. Fazit

Traefik zeichnet sich durch eine weitestgehend automatische Konfiguration aus, mit der zahlreiche Anwendungsfälle komfortabel und mit geringem Wartungsaufwand realisiert werden können.

Komplexere Konfigurationen sind mit Traefik ebenfalls möglich, erfordern aber eine manuelle Konfiguration, die durch die teils oberflächliche Dokumentation erschwert wird.

Die fehlende Unterstützung von Authentifizierungsmechanismen wie OAuth2 oder JWT schränken den Nutzen der Open-Source-Version für viele Anwendungsfälle ein. Möglichkeiten für die Skalierung und Hochverfügbarkeit sind ebenfalls der kommerziellen Version vorbehalten.

Zu beachten ist, dass Traefik Nutzungsstatistiken an den Hersteller sendet, solange dies nicht explizit durch die Konfiguration abgeschaltet werden. Problematisch ist ferner, dass sich aktuell (Januar 2021) viele im Netz zu findende Anleitungen auf Traefik in der Version 1.x beziehen, dessen Konfiguration zu Traefik 2.x nicht kompatibel ist.

Traefik ist ein interessantes Produkt für Anwender, die eine einfache und wartungsarme Lösung für das Steuern des Netzwerkverkehrs suchen.

9. Links