ExternalDNS is a controller that automatically synchronizes Kubernetes resource states with external DNS providers. It monitors cluster resources such as services, ingresses, and gateway APIs to dynamically create and update DNS records, enabling automated service discovery and external traffic management.
The project features a provider-agnostic interface that supports a wide array of cloud-managed vendors and on-premises providers, as well as an extension system for custom providers via webhooks and sidecars. It implements a reconciliation loop that uses resource annotations and custom resource definitions for declarative DNS management, ensuring that records are synchronized based on the desired state of the cluster.
To maintain stability and security, the controller utilizes leader election for high availability and tracks record ownership through TXT records or external databases like DynamoDB. It optimizes provider API usage through in-memory caching and batching of record changes. The system also supports advanced traffic management, including split-horizon DNS and routing policies, while exposing operational metrics via Prometheus.