ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers. Inspired by Kubernetes DNS, Kubernetes' cluster-internal DNS server, ExternalDNS makes Kubernetes resources discoverable via public DNS servers. Like KubeDNS, it retrieves a list of resources (Services, Ingresses, etc.) from the Kubernetes API to determine the desired list of DNS records. Unlike KubeDNS, however, it's not a DNS server itself, but merely configures other DNS providers accordingly, e.g. AWS Route 53 or Google Cloud DNS. In a broader sense, ExternalDNS allows you to control DNS records dynamically via Kubernetes resources in a DNS provider-agnostic way. ExternalDNS' allows you to keep selected zones (via domain-filter) synchronized with Ingresses and Services of type=LoadBalancer in various cloud providers. ExternalDNS can become aware of the records it is managing therefore ExternalDNS can safely manage non-empty hosted zones.
Features
- ExternalDNS supports multiple DNS providers which have been implemented by the ExternalDNS contributors
- End-to-end testing of ExternalDNS is currently performed in the separate kubernetes-on-aws repository
- Used for smoke tests before a release, used in production and maintainers are active
- Remove Services to clean up your managed zone
- Change the desired hostname by modifying the Service's annotation
- Recreate the Service and see that the DNS record will be updated to point to the new load balancer IP