Traefik ist ein moderner, cloud-nativer Reverse Proxy, der sich hervorragend fĂŒr Kubernetes eignet. In Kombination mit ExternalDNS wird dein Cluster noch smarter â DNS-EintrĂ€ge verwalten sich (fast) von selbst.
In diesem Tutorial zeige ich dir Schritt fĂŒr Schritt, wie du ExternalDNS mit Traefik in einem Kubernetes-Cluster nutzt. Damit automatisierst du öffentliche DNS-EintrĂ€ge via IngressRoute und sparst dir manuelle ZonenĂ€nderungen.
â Vorteile von ExternalDNS mit Traefik
- đ Automatische DNS-EintrĂ€ge bei neuen IngressRoutes
- đ DNS-Verwaltung direkt im Kubernetes YAML
- đ UnterstĂŒtzung fĂŒr Wildcard-Domains, CNAME, A/AAAA
- đŠ Perfekt fĂŒr multi-tenant Environments, Homelabs & Cloud-Nodes
đ§ Voraussetzungen
Bevor du startest, brauchst du:
- Ein laufendes Kubernetes-Cluster (z.âŻB. K3s, MicroK8s oder GKE)
- Traefik als Ingress Controller (empfohlen: v3+)
- Eine öffentliche Domain (z.âŻB. ĂŒber Netcup, Hetzner, Cloudflare)
- Zugang zur DNS-API deines Providers
- ExternalDNS (Deployment via Helm oder YAML)
đ§ ArchitekturĂŒberblick
[ IngressRoute (Kubernetes) ]
â
[ Traefik Controller ]
â
[ ExternalDNS Controller ]
â
[ DNS-Provider API (z.âŻB. Cloudflare, Hetzner) ]
Traefik erzeugt IngressRoutes â ExternalDNS erkennt die DNS-Ziele â dein DNS-Anbieter erstellt automatisch passende EintrĂ€ge (z.âŻB. CNAME).
đ Schritt 1: ExternalDNS installieren (Helm)
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Beispiel fĂŒr Cloudflare:
helm install externaldns bitnami/external-dns \
--set provider=cloudflare \
--set cloudflare.apiToken=<DEIN_TOKEN> \
--set domainFilters={yourdomain.com} \
--set policy=sync \
--set txtOwnerId=traefik-cluster \
--set logLevel=debug \
--namespace kube-system
đ API Token-Tipp: Stelle sicher, dass dein Cloudflare-Token die Rechte Zone.DNS:Edit und Zone.Zone:Read hat.
đ Schritt 2: Traefik IngressRoute definieren
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: hello
annotations:
external-dns.alpha.kubernetes.io/hostname: hello.yourdomain.com
spec:
entryPoints:
- websecure
routes:
- match: Host(`hello.yourdomain.com`)
kind: Rule
services:
- name: hello-service
port: 80
tls:
certResolver: letsencrypt
â Sobald dieser YAML-Block angewendet wird, erkennt ExternalDNS die Annotation und legt automatisch einen DNS-Eintrag an.
đ Optional: Wildcard-Support via CNAME
FĂŒr Wildcards kannst du:
external-dns.alpha.kubernetes.io/hostname: "*.apps.yourdomain.com"
kombiniert mit einem passenden CNAME-Fallback auf eine Wildcard-IP verwenden. Nicht alle Provider erlauben Wildcards via API â z.âŻB. ist Cloudflare hier limitiert.
đ§Ș Debugging & Logs
kubectl logs -n kube-system deploy/externaldns
Wichtige Keywords im Log:
CREATE: neuer Eintrag erzeugtUPDATE: bestehender DNS-Eintrag angepasstDELETE: IngressRoute entfernt â DNS-Eintrag gelöscht
đŠ Weitere Optionen & Tipps
- Verwende
external-dns.alpha.kubernetes.io/ttl: "60"fĂŒr Custom-TTLs - Kombiniere mit
cert-managerfĂŒr Letâs Encrypt-Zertifikate - Setze
--policy=syncfĂŒr maximale DNS-Konsistenz - DNS-Anbieter wie Hetzner, Gandi, AWS Route 53 & GoDaddy werden ebenfalls unterstĂŒtzt
đ Fazit
Mit ExternalDNS und Traefik hebst du deine Kubernetes-Infrastruktur auf ein neues Level:
- Weniger manuelle DNS-Arbeit
- Vollautomatische Domain-Verwaltung
- Perfekt fĂŒr Production-Setups & Homelabs
đ Lies auch:
- â Traefik Plugin-Entwicklung â Eigene Middleware erstellen
- â Advanced Config: Migration von Traefik v2 zu v3
- â Kubernetes vs Docker Swarm
đ§Č Call-to-Action
đ Du willst ExternalDNS oder Traefik produktiv einsetzen?
Ich helfe dir dabei â persönlich, schnell und verstĂ€ndlich.
đŹ Kontaktiere mich direkt â lass uns dein Setup automatisieren!
Schreibe einen Kommentar