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