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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions