ExternalDNS

Zweck

ExternalDNS verwaltet DNS-Einträge automatisch auf Basis von Kubernetes-Ressourcen.

Ziele

  • Automatische DNS-Verwaltung

  • GitOps-kompatible DNS-Einträge

  • Reduzierung manueller DNS-Änderungen

Architektur

Ingress ----------+
                  |
HTTPRoute --------+
                  |
DNSEndpoint ------+
                  |
                  v
            ExternalDNS
                  |
                  v
            DNS Provider
                  |
                  v
          A / AAAA Records

Beispielablauf

  1. Eine Ingress-, HTTPRoute- oder DNSEndpoint-Ressource wird erstellt.

  2. ExternalDNS erkennt den gewünschten DNS-Eintrag.

  3. Der DNS-Provider wird aktualisiert.

  4. Der DNS-Record wird erstellt oder angepasst.

  5. Das Zielsystem wird über den DNS-Namen erreichbar.

Datenquellen

ExternalDNS überwacht verschiedene Kubernetes-Ressourcen.

Ingress

Ingress-Ressourcen werden weiterhin von einzelnen Clustern und Anwendungen verwendet.

DNS-Einträge werden automatisch aus den definierten Hostnamen erzeugt.

Gateway API

Für neue Dienste wird bevorzugt die Gateway API verwendet.

Unterstützte Ressourcen:

  • HTTPRoute

  • GRPCRoute

  • TCPRoute

  • TLSRoute

  • UDPRoute

DNSEndpoint

DNSEndpoint Ressourcen werden verwendet, um DNS-Einträge für Systeme außerhalb von Kubernetes zu verwalten.

Beispiele:

  • FritzBox

  • Pi-hole

  • QNAP

  • Synology

  • Terra

Pi-hole Integration

Im Standort Home wird Pi-hole als primärer DNS-Server verwendet.

ExternalDNS aktualisiert DNS-Einträge über die Pi-hole API.

HTTPRoutes erhalten automatisch DNS-Einträge unter home.tamay.cloud.

Betriebsmodell

DNS-Einträge für Kubernetes-Anwendungen werden automatisch aus Ingress- oder Gateway-API-Ressourcen erzeugt.

DNS-Einträge für Systeme außerhalb von Kubernetes werden über DNSEndpoint-Ressourcen definiert.

Dadurch befindet sich die komplette DNS-Konfiguration unter GitOps-Kontrolle.

Betrieb

Logs anzeigen

kubectl logs \
  -n external-dns \
  deployment/external-dns