Overview
Deploy external-dns with the AdGuard Home webhook provider to automatically create DNS records in AdGuard when Ingress or Service resources are created.
Problem
DNS records for *.fredcorp.com are currently managed manually in AdGuard Home. Every new service requires a manual DNS entry — this is error-prone and doesn't scale.
Solution
External-dns watches Kubernetes resources and automatically creates/updates/deletes DNS records:
# external-dns watches this annotation on Ingress:
external-dns.alpha.kubernetes.io/hostname: myapp.fredcorp.com
With two instances:
- AdGuard instance: manages
*.fredcorp.com on local AdGuard Home for internal resolution
- Public instance (optional): manages public DNS via Cloudflare for externally-exposed services
# AdGuard webhook sidecar config
env:
- name: ADGUARD_URL
value: http://adguard-home.adguard.svc:3000
- name: ADGUARD_USER
valueFrom:
secretKeyRef:
name: adguard-credentials
key: username
Benefits
- Deploy a new app → DNS record created automatically within seconds
- Delete an app → DNS record cleaned up automatically
- No more manual AdGuard rewrites
- Works with both Ingress and Service (LoadBalancer) resources
Reference
- Inspired by szinn/k8s-homelab dual external-dns setup
- AdGuard webhook:
ghcr.io/muhlba91/external-dns-provider-adguard
- Manifest location:
gitops/manifests/external-dns/
Overview
Deploy external-dns with the AdGuard Home webhook provider to automatically create DNS records in AdGuard when Ingress or Service resources are created.
Problem
DNS records for
*.fredcorp.comare currently managed manually in AdGuard Home. Every new service requires a manual DNS entry — this is error-prone and doesn't scale.Solution
External-dns watches Kubernetes resources and automatically creates/updates/deletes DNS records:
With two instances:
*.fredcorp.comon local AdGuard Home for internal resolutionBenefits
Reference
ghcr.io/muhlba91/external-dns-provider-adguardgitops/manifests/external-dns/