Skip to main content

External DNS

Purpose: Automatic DNS record synchronization

Version: v1.0.0 (Helm chart: external-dns/external-dns)

Namespace: external-dns

Description

Automatically creates and manages DNS records based on Kubernetes ingress resources. Integrates with Cloudflare for DNS management.

Installation

Installed via ArgoCD from Helm chart: external-dns/external-dns

Configuration

Configuration file: config/dev/applications/external-dns-values.yaml

provider: cloudflare
registry: txt
txtOwnerId: k8s
domainFilters:
- ssdk8s.xyz
sources:
- ingress
policy: sync

DNS Provider

  • Provider: Cloudflare
  • Domain: ssdk8s.xyz

Prerequisites

Cloudflare API token stored as secret:

kubectl create secret generic cloudflare-api-token \
-n external-dns \
--from-literal=api-token=YOUR_CF_API_TOKEN

How It Works

  1. Create an Ingress resource
  2. ExternalDNS watches for ingress changes
  3. Automatically creates/updates DNS records in Cloudflare

Example

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app
annotations:
external-dns.alpha.kubernetes.io/hostname: myapp.ssdk8s.xyz
external-dns.alpha.kubernetes.io/ttl: "300"
spec:
ingressClassName: nginx
rules:
- host: myapp.ssdk8s.xyz
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80

Annotations

AnnotationDescriptionDefault
external-dns.alpha.kubernetes.io/hostnameDNS name to create-
external-dns.alpha.kubernetes.io/ttlTTL for DNS record300
external-dns.alpha.kubernetes.io/ingress-classIngress class to watchall