Skip to main content
Last updated: 14 Jan 2026

govuk-infrastructure: 9. Use `external-dns` for DNS record management

Date: 2021-08-27

Status

Accepted

Context

We want to be able to manage DNS records for Kubernetes Ingress and Service type=Loadbalancer resources declaratively with Kubernetes resources, so that we avoid the overhead and brittleness of manual DNS management with Terraform.

external-dns is the primary project in this space and gives us everything we need; Route53 integration, support for all AWS load balancer types, integration with alb-ingress-controller and IAM Roles for Service Accounts support.

Decision

Use external-dns.

Consequences

We can install it with a Helm chart.

Ingress and Service resources can configure a DNS record with a simple annotation:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    external-dns.alpha.kubernetes.io/hostname: foo.test.govuk.digital