external dns
Kubernetes-native service that automatically manages DNS records for services and ingresses.
What is external dns
The external-dns image provides ExternalDNS, a Kubernetes-native service that automatically manages DNS records for services and ingresses. It connects your Kubernetes cluster to external DNS providers (e.g. Route 53, Cloudflare, Google Cloud DNS) by dynamically creating, updating, and deleting DNS records based on the current state of the cluster.
This image runs the ExternalDNS controller, which watches Kubernetes resources and synchronizes them with your DNS provider using declarative configuration. It is typically deployed as a sidecar or standalone controller in clusters that expose services to the internet and need automated DNS management.
ExternalDNS is ideal for dynamic environments where applications are frequently deployed, scaled, or updated—removing the need for manual DNS changes.
How to use this image
The external-dns image is intended to be deployed as a Kubernetes controller. It requires access to the Kubernetes API and your DNS provider credentials.
Basic Helm installation:
Example deployment manifest:
Logging and behavior:
Logs are written to stdout
and show sync activity. DNS changes are applied incrementally as Kubernetes resources change.
Image variants
The external-dns image is versioned and published under the k8s.gcr.io/external-dns/external-dns
registry (or registry.k8s.io
in newer versions). There are no Alpine or OS-specific variants—just versioned tags.
Tracks the latest release. Use only for testing or non-critical environments.
Tagged by semantic version, e.g.v0.14.2
, v0.13.5
, etc. Use versioned tags in production to ensure consistent behavior and compatibility.
The image typically includes only the compiled ExternalDNS binary and minimal dependencies.