Skip to content

feat: add external-dns with AdGuard webhook for automatic DNS records #1489

Description

@ixxeL2097

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/

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions