Skip to content

External DNS

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 a 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.


External DNS can be deployed by enabling the add-on via the following.

enable_external_dns = true

You can optionally customize the Helm chart that deploys External DNS via the following configuration.

  enable_external_dns = true

  external_dns = {
    name          = "external-dns"
    chart_version = "1.12.2"
    repository    = ""
    namespace     = "external-dns"
    values        = [templatefile("${path.module}/values.yaml", {})]
  external_dns_route53_zone_arns = ["XXXXXXXXXXXXXXXXXXXXXXX"]

Verify external-dns pods are running.

$ kubectl get pods -n external-dns
NAME                            READY   STATUS    RESTARTS     AGE
external-dns-849b89c675-ffnf6   1/1     Running   1 (2d ago)   2d5h

To further configure external-dns, refer to the examples: