Zum Hauptinhalt springen

Traefik

Traefik ist ein Proxy mit vielen Features. Das Tool setzt man vorallem ein wenn man mit Docker oder Kubernetes arbeitet. Man kann damit die Request sehr gut weiterleiten und es verarbeiten. Ein weiterer Vorteil den Traefik mit sich bringt, ist das Automatische erstellen von Let's Encrypt SSL Zertifikate. Dadurch werden die Zertifkate automitsch generiert und gemanaged von Traefik und man muss keine Einstellungen dafür vornehmen.

Installieren

Der Einfachste start mit Traefik ist es eine docker-compose.yml Datei zu erstellen. Wenn man die Docker Compose Datei startet lässt sich das Webinterface aufrufen via traefik.example.com. Im nächsten Schritt kann man nun Services (z.B. Webserver) anbinden.

---
version: "3.8"

services:
traefik:
image: traefik:latest
container_name: traefik
volumes:
- ./letsencrypt:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
traefik.enable: true
traefik.http.routers.api.entryPoints: https
traefik.http.routers.api.rule: Host(`traefik.example.com`) # Change domain
traefik.http.routers.api.service: api@internal
traefik.http.routers.api.tls: true
traefik.http.routers.api.tls.certresolver: lets
command:
- '--api'
- '--providers.docker=true'
- '--providers.docker.network=traefik_proxy'
- '--providers.docker.exposedByDefault=false'
- '--entrypoints.http=true'
- '--entrypoints.http.address=:80'
- '--entrypoints.https=true'
- '--entrypoints.https.address=:443'
- '--log=true'
- '--log.level=DEBUG'
- '--log.filepath=/var/log/traefik.log'
- '--certificatesresolvers.lets.acme.httpchallenge=true'
- '--certificatesresolvers.lets.acme.httpchallenge.entrypoint=http'
- '--certificatesresolvers.lets.acme.email=traefik@example.com' # Change domain
- '--certificatesresolvers.lets.acme.storage=/letsencrypt/acme.json'
- '--log.filePath=/dev/stdout'
- '--log.level=ERROR'
networks:
- traefik_proxy
ports:
- 80:80
- 443:443
restart: always

networks:
traefik_proxy:
name: traefik_proxy

Um einen Service einzubinden erstellt man einen weietere docker-compose.yml Datei und startet es. Die Anwendung sollte nun im Webinterface von Traefik zu sehen sein.

---
version: "3.8"

services:
alcodo_com:
image: nginx:alpine
container_name: example.com
restart: always
volumes:
- ./content:/usr/share/nginx/html:ro
labels:
traefik.enable: true
traefik.http.routers.example.entrypoints: https
traefik.http.routers.example.rule: Host(`example.com`)
traefik.http.routers.example.tls: true
traefik.http.routers.example.tls.certresolver: lets
networks:
- traefik_proxy

networks:
traefik_proxy:
name: traefik_proxy