External-DNS 0.10: DNS Automation for Kubernetes

External-DNS 0.10: DNS Automation for Kubernetes

Introduction

External-DNS 0.10 — DNS Automation for Kubernetes — was released on July 8, 2021.

Edge and east-west traffic paths tend to be where reliability and security issues show up first — so small gateway and proxy changes can have outsized impact.

In this release: External-DNS 0.10 enhances DNS automation with improved provider support, better Kubernetes integration, and enhanced reliability for managing DNS records automatically.


Provider Support Enhancements

  • Cloud provider integrations expand support for AWS Route53, Google Cloud DNS, Azure DNS, and Cloudflare.
  • DNS provider improvements enhance compatibility with additional DNS providers and services.
  • Multi-provider support enables managing DNS records across multiple providers simultaneously.
  • Provider-specific features leverage unique capabilities of each DNS provider.

Kubernetes Integration Improvements

  1. Service discovery enhancements automatically discover Kubernetes services and ingresses.
  2. Ingress support improvements provide better integration with Ingress resources.
  3. Annotation enhancements enable more flexible DNS record configuration.
  4. RBAC integration provides fine-grained access control for DNS management.

Reliability & Performance

  • Reconciliation improvements ensure DNS records stay synchronized with Kubernetes resources.
  • Error handling enhancements provide better recovery from transient DNS provider failures.
  • Rate limiting support prevents exceeding DNS provider API rate limits.
  • Caching optimizations reduce unnecessary DNS API calls.

Advanced Features

  • DNS record types support expansion includes A, AAAA, CNAME, TXT, and SRV records.
  • Health checks enable automatic DNS record management based on endpoint health.
  • Multi-zone support enables managing DNS records across multiple DNS zones.
  • Dry-run mode previews DNS changes without actually modifying records.

Getting Started

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/external-dns/v0.10.0/docs/contributing/crd-source/crd-manifest.yaml

Deploy External-DNS:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: external-dns
spec:
  template:
    spec:
      containers:
      - name: external-dns
        image: k8s.gcr.io/external-dns/external-dns:v0.10.0
        args:
        - --source=service
        - --source=ingress
        - --domain-filter=example.com
        - --provider=aws
        - --aws-zone-type=public

Create a service with annotation:

apiVersion: v1
kind: Service
metadata:
  name: my-service
  annotations:
    external-dns.alpha.kubernetes.io/hostname: my-service.example.com
spec:
  type: LoadBalancer
  ports:
  - port: 80

Summary

AspectDetails
Release DateJuly 8, 2021
Headline FeaturesEnhanced provider support, improved Kubernetes integration, better reliability
Why it MattersAutomates DNS record management, reducing operational overhead and ensuring DNS records stay synchronized with Kubernetes resources

External-DNS 0.10 continues to evolve as the standard solution for DNS automation in Kubernetes, providing teams with reliable, automated DNS record management.