Traefik als reverse proxy: installatie, configuratie en gebruik
Traefik als reverse proxy: installatie, configuratie en gebruik
Dit artikel legt uit hoe u Traefik installeert en configureert als HTTP-reverse proxy en load balancer, voor zowel lokale ontwikkeling als Kubernetes-omgevingen.
Vereisten
- Docker (versie 20.10 of hoger) voor lokale ontwikkeling - Kubernetes-cluster (versie 1.24 of hoger) voor productie-implementaties - Helm (versie 3.0 of hoger) voor Kubernetes-installatie - Toegang tot een domein of wildcard-DNS voor HTTPS-configuratie
Stappen
1. Installeer Traefik lokaal met Docker
Start Traefik met de standaardinstellingen. Dit draait de reverse proxy op poort 80 en 8080 (dashboard).
docker run -d -p 80:80 -p 8080:8080 --name traefik traefik:v3.1
2. Configureer Traefik met een configuratiebestand
Maak een configuratiebestand in TOML-formaat voor geavanceerdere setups. Dit bestand definieert entrypoints, providers en het dashboard.
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.websecure]
address = ":443"</p><p>[providers]
[providers.docker]
endpoint = "unix:///var/run/docker.sock"
exposedByDefault = false</p><p>[api]
dashboard = trueStart Traefik met dit configuratiebestand:
docker run -d -p 80:80 -p 443:443 -p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(pwd)/traefik.toml:/etc/traefik/traefik.toml \
--name traefik traefik:v3.13. Routeer verkeer naar services via Docker-labels
Voeg Docker-labels toe aan containers om ze automatisch te detecteren. Traefik leest deze labels en routeert verkeer naar de juiste service.
docker run -d \
--label "traefik.enable=true" \
--label "traefik.http.routers.api.rule=Host(\`api.localhost\`)" \
--label "traefik.http.services.api.loadbalancer.server.port=5000" \
--name api my-api-image:latest4. Configureer HTTPS met automatische certificaten
Schakel automatische TLS-certificaten in via Let's Encrypt. Traefik vraagt certificaten aan en vernieuwt ze automatisch.
[certificatesResolvers.letsencrypt]
[certificatesResolvers.letsencrypt.acme]
email = "admin@example.com"
storage = "/letsencrypt/acme.json"
[certificatesResolvers.letsencrypt.acme.tlsChallenge]5. Voeg middleware toe voor authenticatie en rate limiting
Definieer middleware in het configuratiebestand voor verkeersbeheer. Dit voegt authenticatie, rate limiting en header-manipulatie toe.
[http.middlewares]
[http.middlewares.rate-limit]
[http.middlewares.rate-limit.rateLimit]
average = 100
burst = 50</p><p> [http.middlewares.auth]
[http.middlewares.auth.basicAuth]
users = ["admin:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"]6. Installeer Traefik als Ingress Controller in Kubernetes
Gebruik Helm om Traefik te installeren in uw cluster. Dit installeert Traefik als Ingress Controller met automatische configuratie.
helm repo add traefik https://helm.traefik.io/traefik
helm repo update
helm install traefik traefik/traefik --values values-prod.yaml7. Definieer Ingress-routes in Kubernetes
Maak Ingress-resources aan om verkeer te routeren naar services binnen uw cluster.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: api-ingress
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
spec:
rules:
- host: api.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: api-service
port:
number: 50008. Update Traefik met atomic rollback
Werk Traefik bij met Helm. De `--atomic` flag zorgt ervoor dat bij een fout automatisch wordt teruggedraaid naar de vorige versie.
helm upgrade traefik traefik/traefik --atomic --values values-prod.yaml
Verificatie
Controleer of Traefik correct werkt. Het dashboard toont actieve routers, services en middleware.
Lokaal: check of het dashboard bereikbaar is
curl -I http://localhost:8080</p><p>Kubernetes: check de status van de Traefik-pod
kubectl get pods -n default -l app.kubernetes.io/name=traefik</p><p>Kubernetes: check de Ingress-resources
kubectl get ingressVeelgestelde problemen
1. Traefik detecteert Docker-containers niet
Controleer of de Docker-socket correct is gemount en de `exposedByDefault`-instelling niet op `true` staat. Voeg expliciet `traefik.enable=true` toe aan elke container die u wilt blootstellen.
2. HTTPS-certificaten worden niet aangemaakt
Controleer of poort 443 openstaat en het `acme.json`-bestand schrijfbaar is. Let op: Let's Encrypt rate limits per domein — te veel aanvragen binnen een uur blokkeert nieuwe certificaten.
3. CORS-fouten bij lokale ontwikkeling
Dit gebeurt wanneer services op verschillende poorten draaien. Gebruik Traefik met subdomeinen (bijvoorbeeld `api.localhost` en `app.localhost`) zodat alle verzoeken via hetzelfde domein lopen. Configureer CORS-middleware als u cross-origin requests nodig hebt.
Traefik blijft zich ontwikkelen — de volgende grote versie voegt ondersteuning toe voor service mesh-integraties en verbeterde observability.