External-DNS Setup Guide
ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers.
What it does?
Inspired by Kubernetes DNS, Kubernetes’ cluster-internal DNS server, ExternalDNS makes Kubernetes resources discoverable via public DNS servers. Like KubeDNS, it retrieves a list of resources (Services, Ingresses, etc.) from the Kubernetes API to determine a desired list of DNS records. Unlike KubeDNS, however, it’s not a DNS server itself, but merely configures other DNS providers accordingly—e.g. AWS Route 53 or Google Cloud DNS.
Prerequisites (required for Support on TrueCharts Discord)
- Traefik
- Clusterissuer / Cert-manager installed (vital if exposed externally)
Please follow the [Getting Started](/ guide on the Truecharts website.
Installation instructions
This guide will cover 2 scenarios, Cloudflare
and Pi-Hole
/ Pihole
, for more external DNS record providers, see External-DNS Docs.
Cloudflare
These instructions taken from external-dns cloudflare tutorial
Step 1
Enter CF_API_TOKEN
(preferred) or CF_API_EMAIL
/CF_API_KEY
Step 2
Enter preferences for Logs and DNS updates (I suggest >5m to prevent log spam) and select cloudflare
as provider and select sources. I find ingress
and service
covers everything. If you want to filter by multiple domains add your Domain Filter Entry
I recommend using noop
for Registry Type
and leaving the rest as default, can add DNS Zone filters as necessary as well (see upstream/cloudflare docs).
Step 3
Verify it works, check the logs for updates to DNS records
If this works, you’ll see DNS entries inside Cloudflare’s DNS page.
PiHole
Step 1
Ignore Provider Credentials, and skip straight to App Configuration
and select pihole
, add domain filters as necessary
Change to noop
for Registry Type
and add PiHole Server Address
(default is http://pihole.ix-pihole.svc.cluster.local:9089
) and PiHole Server Password
Step 2
Verify logs from External-DNS
to see if it connects and updates PiHole
Check PiHole
GUI for A records under Local DNS
Enjoy!