Docker vs Kubernetes
Kubernetes vs. Docker – Warum du beides brauchst und nicht gegeneinander ausspielst Die Frage, ob man Kubernetes oder Docker verwenden sollte, ist vollkommen falsch gestellt. Die beiden Technologien …
Lerne, wie du Traefik als Reverse Proxy mit Docker Compose einrichtest und konfigurierst, um deine Anwendungen sicher und effizient zu verwalten.
In diesem Tutorial erfährst du, wie du Traefik als Reverse Proxy mit Docker Compose einrichtest und konfigurierst. Traefik bietet eine moderne und flexible Lösung, um den Datenverkehr für deine Anwendungen zu verwalten und sicherzustellen, dass sie über das Internet sicher erreichbar sind. Wir behandeln die Konfiguration von docker-compose.yml
, traefik.toml
, traefik_dynamic.toml
und acme.json
. Zudem erklären wir, was ein Reverse Proxy ist und warum Zertifikate zur Sicherung deiner Anwendungen wichtig sind.
Bevor wir beginnen, klone das Traefik-Repository von GitHub:
git clone https://github.com/traefik/traefik.git
cd traefik
Traefik ist ein moderner Reverse Proxy und Load Balancer, der speziell für Container-basierte und Microservices-Architekturen entwickelt wurde. Es bietet automatische Erkennung und Konfiguration von Diensten, SSL/TLS-Zertifikatsverwaltung und vieles mehr.
Ein Reverse Proxy ist ein Server, der Anfragen von Clients entgegennimmt und diese an einen oder mehrere Backend-Server weiterleitet. Der Reverse Proxy fungiert als Vermittler zwischen Clients und den eigentlichen Diensten, wodurch Funktionen wie Lastverteilung, SSL-Verschlüsselung und Caching ermöglicht werden.
docker-compose.yml
Die docker-compose.yml
Datei definiert die Dienste und Netzwerke, die für Traefik benötigt werden.
docker-compose.yml
:version: '3.7'
services:
traefik:
image: traefik:v3.0
container_name: traefik
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.toml:/traefik.toml
- ./traefik_dynamic.toml:/traefik_dynamic.toml
- ./acme.json:/acme.json
networks:
- web
networks:
web:
external: true
Wichtiger Hinweis: Jeder Container, der an Traefik angebunden werden soll, muss dem Netzwerk web
hinzugefügt werden. Hier ein Beispiel, wie du dies in einer Docker Compose Datei für einen Service machst:
version: '3.7'
services:
myservice:
image: myimage
networks:
- web
- other_network
networks:
web:
external: true
other_network:
driver: bridge
traefik.toml
Die traefik.toml
Datei enthält grundlegende Einstellungen für Traefik, einschließlich der Definition von EntryPoints, der Aktivierung des Dashboards und der Verwaltung von SSL-Zertifikaten.
traefik.toml
:[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web.http.redirections.entryPoint]
to = "websecure"
scheme = "https"
[entryPoints.websecure]
address = ":443"
[entryPoints.websecure.http.tls]
certResolver = "lets-encrypt"
[api]
dashboard = true
[certificatesResolvers.lets-encrypt.acme]
email = "example@example.com" # Ersetze dies durch deine E-Mail-Adresse
storage = "acme.json"
[certificatesResolvers.lets-encrypt.acme.httpChallenge]
entryPoint = "web"
[providers.docker]
watch = true
network = "web"
[providers.file]
filename = "traefik_dynamic.toml"
traefik.toml
Konfiguration:EntryPoints: Diese definieren die Ports, auf denen Traefik auf Anfragen lauscht.
web
: Lauscht auf Port 80 für HTTP-Verbindungen.websecure
: Lauscht auf Port 443 für HTTPS-Verbindungen.entryPoints.web.http.redirections.entryPoint.to = "websecure"
sorgt dafür, dass alle HTTP-Anfragen automatisch auf HTTPS umgeleitet werden, um eine sichere Verbindung zu gewährleisten. Dies erhöht die Sicherheit, indem es sicherstellt, dass alle Verbindungen verschlüsselt sind.API: Aktiviert das Traefik-Dashboard, das nützliche Informationen über die Konfiguration und den Status von Traefik bietet.
Certificates Resolvers: Diese Konfiguration ermöglicht es Traefik, SSL-Zertifikate automatisch von Let’s Encrypt zu beziehen und zu verwalten. Hierbei:
email
ist die Kontakt-E-Mail-Adresse, die für Zertifikatsbenachrichtigungen verwendet wird.storage
definiert die Datei, in der die Zertifikate gespeichert werden.httpChallenge
spezifiziert den HTTP-Endpoint, der für die Zertifikatsvalidierung verwendet wird.Providers:
providers.docker
ermöglicht es Traefik, Docker-Container automatisch zu erkennen und als Dienste hinzuzufügen. watch = true
sorgt dafür, dass Traefik kontinuierlich nach Änderungen in den Docker-Containern sucht. network = "web"
stellt sicher, dass Traefik nur Container im web
Netzwerk erkennt.providers.file
lädt zusätzliche Konfigurationen aus der Datei traefik_dynamic.toml
. Dies ist nützlich für komplexe Einstellungen, die nicht in der Hauptkonfigurationsdatei untergebracht werden können.traefik_dynamic.toml
Die traefik_dynamic.toml
Datei wird für dynamische Konfigurationen wie Router und Middleware verwendet.
traefik_dynamic.toml
:[http.middlewares.simpleAuth.basicAuth]
users = [
"admin:$apr1$VATlJAVP$w.fo1IG.3DTzdkyVOG/xT1"
]
[http.routers.api]
rule = "Host(`traefik.deine-domain.de`)" # Ersetze dies durch deine Domain
entrypoints = ["websecure"]
middlewares = ["simpleAuth"]
service = "api@internal"
[http.routers.api.tls]
certResolver = "lets-encrypt"
traefik_dynamic.toml
Konfiguration:Middleware Authentication:
basicAuth
Middleware sorgt für eine einfache HTTP-Basic-Authentifizierung. Benutzer und Passwörter werden in der Form user:hashed_password
angegeben.htpasswd
, um das Passwort zu hashen. Hier ein Beispiel, wie du das machen kannst:
htpasswd -nb admin your_password
admin:$apr1$VATlJAVP$w.fo1IG.3DTzdkyVOG/xT1
, die du in deine Konfigurationsdatei einfügen kannst. Mehr Informationen dazu findest du in der offiziellen Traefik-Dokumentation zur Basic Auth.Router Konfiguration:
rule = "Host(
traefik.deine-domain.de)"
legt fest, dass dieser Router auf Anfragen für traefik.deine-domain.de
reagiert. Ersetze traefik.deine-domain.de
durch deine eigene Domain.entrypoints = ["websecure"]
gibt an, dass dieser Router nur HTTPS-Anfragen verarbeitet.middlewares = ["simpleAuth"]
bindet die vorher definierte Middleware zur Authentifizierung an diesen Router.service = "api@internal"
stellt sicher, dass die Anfragen an den internen API-Service von Traefik weitergeleitet werden.certResolver = "lets-encrypt"
gibt an, dass für diesen Router ein SSL-Zertifikat über Let’s Encrypt bezogen werden soll.acme.json
Die acme.json
Datei speichert Informationen über die SSL-Zertifikate, die von Let’s Encrypt ausgestellt und von Traefik verwaltet werden. Diese Datei wird automatisch von Traefik erstellt und bei jeder Zertifikatserneuerung aktualisiert.
acme.json
:Die Datei wird automatisch erstellt und verwaltet. Hier ein stark vereinfachtes Beispiel:
{
"Account": {
"Email": "example@example.com", # Ersetze dies durch deine E-Mail-Adresse
"Registration": {...}
},
"Certificates": [
{
"Domain": {
"Main": "example.com"
},
"Certificate": "...",
"Key": "...",
"Store": "..."
}
]
}
Automatische Erstellung: Diese Datei wird bei der ersten Ausführung von Traefik und bei jeder Zertifikatserneuerung automatisch erstellt und aktualisiert. Tra
efik erstellt für jeden neuen Container, der ein SSL-Zertifikat benötigt, einen Eintrag in dieser Datei. Die acme.json
enthält alle erforderlichen Informationen für die Verwaltung der Zertifikate, einschließlich der notwendigen Details zur Registrierung und den Schlüsseln für die einzelnen Zertifikate.
Jetzt bist du bereit, Traefik zu verwenden, um deine Anwendungen sicher und effizient zu verwalten!
Bei Fragen oder wenn du Unterstützung bei der Einrichtung oder Konfiguration von Traefik benötigst, steht dir unser Discord-Channel zur Verfügung. Trete unserer Community bei und tausche dich mit anderen Nutzern aus, um schnelle Hilfe und wertvolle Tipps zu erhalten. Hier geht’s zum Discord-Channel. Wir freuen uns auf dich!
Hier sind die Verlinkungen im Markdown-Format:
In unserer Discord Community findest du Antworten auf deine Fragen rund um das Thema ayedo, Kubernetes und Open Source. Hier erfährst du in Realtime was es Neues bei ayedo und unseren Partnern gibt und hast die Möglichkeit mit unserem Team in direkten Kontakt zu treten.
Kubernetes vs. Docker – Warum du beides brauchst und nicht gegeneinander ausspielst Die Frage, ob man Kubernetes oder Docker verwenden sollte, ist vollkommen falsch gestellt. Die beiden Technologien …
Einleitung In der heutigen Softwareentwicklung, in der KI-gestützte Tools wie GitHub Copilot und ähnliche Assistenten unterstützen, suchen viele Entwickler nach flexibleren und …
Hochverfügbare SaaS-Infrastruktur für mehr als 2 Milliarden Requests pro Monat In der heutigen digitalisierten Welt sind Ausfallsicherheit und Skalierbarkeit unverzichtbare Merkmale jeder …
![Schutz vor Cyber-Bedrohungen: Ein umfassender Leitfaden zum Cyber Risiko Check] (ein-umfassender-leitfaden-zum-cyber-risiko-check.png) Ein effektiver Weg, um diese Risiken zu minimieren, ist der …
Compliance leicht gemacht: Die ISO27001 als Schlüssel zur Einhaltung gesetzlicher Vorschriften Die Einhaltung gesetzlicher Anforderungen und Datenschutzrichtlinien ist für Unternehmen eine ständige …
Interessiert an weiteren Inhalten? Hier gehts zu allen Blogs →