In this guide, you will learn how to install and configure ExternalDNS on a Kubernetes cluster to automatically manage DNS records in GoDaddy based on Ingress resources. This approach ensures that your services are always reachable via the correct domain names without manual DNS updates.Documentation Index
Fetch the complete documentation index at: https://notes.kodekloud.com/llms.txt
Use this file to discover all available pages before exploring further.
Cluster Overview
Before we begin, verify the current state of your cluster and the Traefik ingress controller.traefik namespace:
1. Install ExternalDNS via Helm
-
Add and update the ExternalDNS Helm repository:
-
Create a
values.yamlfile with your GoDaddy credentials:
Values Reference
| Key | Description | Example |
|---|---|---|
provider.name | DNS provider to use | godaddy |
sources | Kubernetes resources to watch (service, ingress, etc.) | - ingress |
domainFilters | Domains allowed for record management | - kubernetkk.xyz |
txtPrefix | Prefix for TXT ownership records | external-dns |
txtOwnerId | Identifier for TXT record ownership | owner-id |
extraArgs | Additional CLI flags, including API credentials & OTE flag | --godaddy-api-key=... |
Never commit your GoDaddy API key/secret to version control. Use a secure secret management system or Kubernetes
Secret.-
Install ExternalDNS in the
defaultnamespace: -
Confirm the ExternalDNS pod is running:
-
View logs to verify it authenticates and syncs:
Expected log excerpt:
2. Create and Apply the Ingress
Define an Ingress that exposes thewhoami service and instructs ExternalDNS to manage the DNS record whoami.kubernetkk.xyz pointing to your node IP (192.168.121.243 in this example).
If you use a cloud provider’s
LoadBalancer service type, omit the external-dns.alpha.kubernetes.io/target annotation. ExternalDNS will automatically use the LoadBalancer’s IP.