Traefik #
Traefik is a modern load balancer and reverse proxy designed as an Ingress Controller for Kubernetes. It offers dynamic configuration, automatic service discovery, and a wide range of features for managing external access to services within a cluster.
Status #
Deployment #
Quelle #
Die Anwendung wird als Helm-Chart von Traefik Labs bezogen.
Dokumentation #
Die offizielle Dokumentation von Traefik ist unter doc.traefik.io/traefik/ zu finden.
Funktion #
Traefik ist das “Eingangstor” zum Kubernetes-Cluster. Es lauscht auf den Ports 80 und 443 auf den Cluster-Nodes und leitet eingehende HTTP/S-Anfragen basierend auf dem Hostnamen und dem Pfad an den richtigen internen Service weiter. Die Konfiguration erfolgt dynamisch: Traefik überwacht die Kubernetes-API auf Ingress- und IngressRoute-Ressourcen und passt seine Routing-Regeln automatisch an, wenn neue Dienste bereitgestellt oder entfernt werden.
Lokale Anpassungen #
Die Konfiguration erfolgt über die values.yaml- und middlewares.yaml-Dateien.
Wichtige Einstellungen #
- Deployment-Art: Traefik wird als
DaemonSetbereitgestellt. Das bedeutet, dass auf jedem Node im Cluster ein Traefik-Pod läuft, was für eine hohe Verfügbarkeit und eine gleichmäßige Verteilung des eingehenden Traffics sorgt. - EntryPoints: Es sind drei EntryPoints definiert:
web(Port 80): Für unverschlüsselten HTTP-Traffic (wird typischerweise auf HTTPS umgeleitet).websecure(Port 443): Für verschlüsselten HTTPS-Traffic.synapse(Port 8448): Ein dedizierter TCP-EntryPoint für die Matrix-Synapse-Föderation.
- Provider: Sowohl der
kubernetesCRD-Provider (fürIngressRoute,Middleware, etc.) als auch derkubernetesIngress-Provider (für Standard-Ingress-Ressourcen) sind aktiviert. - Middlewares: In
middlewares.yamlwerden globale Middlewares definiert, die auf IngressRoutes angewendet werden können. Dazu gehören wahrscheinlich Middlewares für die Authentifizierung über Authentik oder für die Beschränkung des Zugriffs auf lokale Netzwerke. - Persistenz: Persistenz ist aktiviert, um z.B. ACME-Zertifikate (von Let’s Encrypt) zu speichern.
Installation #
Die Anwendung wird mittels Kustomize und Helm durch ArgoCD im Kubernetes-Cluster bereitgestellt. Die Konfiguration befindet sich im apps/traefik-Verzeichnis. Eine manuelle Installation kann mit folgendem Befehl durchgeführt werden:
1kubectl kustomize --enable-helm apps/traefik | kubectl apply -n kube-system -f -
Abhängigkeiten #
- A running Kubernetes cluster.
- MetalLB for LoadBalancer IP allocation.
- Cert-manager for TLS certificate management.
- Authentik (wenn Forward-Authentifizierungs-Middleware verwendet wird).