# Traefik

Traefik ist ein HTTP-Reverse-Proxy und Load Balancer, der die Bereitstellung von Microservices erleichtert. Er kann nahtlos in vorhandene Infrastrukturkomponenten wie Docker, Swarm-Modus, Kubernetes, Consul, Etcd, Rancher v2, Amazon ECS integriert werden und konfiguriert sich automatisch und dynamisch. Traefik wird sowohl in Cloud-, On-Premise- als auch Hybrid-Clouds als der moderne Standard für Routing, Load Balancing und Proxies eingesetzt.

## Geschichte

Die Entwicklung von Traefik begann im Jahr 2015 durch Emile Vauge.
Im Juni 2016 wurde die erste Version von Traefik veröffentlicht. Seitdem hat das Projekt eine beträchtliche Entwickler- und Benutzerbasis aufgebaut und wird aktiv von der Open-Source-Community unterstützt. Traefik hat sich zu einem beliebten Werkzeug für die Verwaltung von HTTP-Anfragen in Container-Orchestrierungsplattformen entwickelt.

## Merkmale und Funktionen

Traefik bietet eine Vielzahl von Funktionen, die es zu einem leistungsstarken Werkzeug für die Verwaltung von HTTP-Anfragen machen:

### Dynamische Konfiguration

Traefik ermöglicht die dynamische Konfiguration durch die Integration von Service Discovery-Mechanismen. Dadurch werden neue Dienste automatisch erkannt und in den Routing- und Load Balancing-Prozess einbezogen, ohne dass eine manuelle Konfiguration erforderlich ist. Dies ist besonders nützlich in dynamischen Umgebungen, in denen Dienste häufig erstellt und gelöscht werden.

### Load Balancing

Traefik verteilt eingehende Anfragen auf eine Gruppe von Backend-Diensten, um die Last auf mehrere Instanzen zu verteilen. Dabei verwendet es den Round-Robin-Algorithmus für das Load Balancing, um die Anfragen gleichmäßig zu verteilen und die Verfügbarkeit der Dienste sicherzustellen.

### SSL/TLS-Terminierung

Traefik unterstützt SSL/TLS-Terminierung, wodurch die Verschlüsselung und Entschlüsselung von SSL/TLS-Verbindungen auf dem Reverse-Proxy durchgeführt werden kann. Dies ermöglicht eine einfache Verwaltung von Zertifikaten und vereinfacht die Implementierung von HTTPS für die Dienste.

### Unterstützung für Container-Orchestrierungsplattformen

Traefik wurde speziell für die Integration mit Container-Orchestrierungsplattformen wie Docker und Kubernetes entwickelt. Es kann Container automatisch erkennen und konfigurieren, um die Dienste nahtlos zu integrieren. Dies erleichtert die Verwaltung von Mikrodienstarchitekturen und ermöglicht eine effiziente Skalierung der Dienste.

### Monitoring und Metriken

Traefik bietet integrierte Funktionen für das Monitoring und die Erfassung von Metriken. Es ermöglicht die Überwachung von Anfragen, Datenverkehr, Fehlern und anderen wichtigen Metriken, um die Leistung und Zuverlässigkeit des Systems zu überwachen. Diese Metriken können in externen Monitoring-Tools wie Prometheus oder Grafana weiterverarbeitet werden.

## Verwendung

Die Konfiguration von Traefik kann entweder über eine YAML-Konfigurationsdatei oder über Umgebungsvariablen erfolgen. Die Konfiguration umfasst Angaben zu Routing-Regeln, Load Balancing Strategien, SSL/TLS-Zertifikaten und anderen Einstellungen. Sobald Traefik gestartet ist, überwacht es kontinuierlich die konfigurierten Dienste und aktualisiert seine Routing- und Load Balancing-Regeln entsprechend.
Die Integration von Traefik in Container-Orchestrierungsplattformen wie Docker oder Kubernetes erfolgt durch die Bereitstellung von Traefik als separatem Container in der Umgebung. Traefik kann dann die Verbindung zu den verwalteten Diensten herstellen und den Datenverkehr entsprechend den definierten Regeln weiterleiten.

## Alternativen

* Nginx, ein Webserver und Reverse Proxy
* HAProxy, ein TCP/HTTP-Load-Balancer und Forward- und Reverse-Proxy