Skip to main content
Warning This document has not been updated for a while now. It may be out of date.
Last updated: 27 Aug 2021

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 via 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 IRSA support.

Decision

Use external-dns.

Consequences

Can be installed via 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