AdGuard Home Kubernetes Deployment with Failover and Resource Limits
Configure AdGuard Home with parallel upstreams, enable failover with health checks, and set memory limits to avoid OOM.
Configure AdGuard Home with parallel upstreams, enable failover with health checks, and set memory limits to avoid OOM.
Summary
AdGuard Home containers can crash and bring down the entire network, so the author recommends a Kubernetes deployment with explicit failover logic to keep DNS service available. The configuration uses Cloudflare (1.1.1.1, 1.0.0.1) and Quad9 (9.9.9.9) as primary upstreams, sets dns.upstream_mode to parallel, and enables failover with a 30‑second health‑check interval, 10‑second timeout, and a fallback upstream of 8.8.8.8. The Helm install command pins memory limits to 1 Gi and requests 256 Mi to prevent OOM kills when blocklists are updated. The author also notes the importance of cert‑manager integration for automated TLS on the dashboard and stresses that high‑availability requires handling the gap between a node being “up” and returning a valid record. A strict manifest‑validation pipeline is suggested to catch YAML typos before they take the network offline. The overall message is that DNS high‑availability is more than just two pods; it requires proactive health checks, parallel upstreams, and realistic resource limits.
Key changes
- upstream_dns list includes Cloudflare 1.1.1.1, 1.0.0.1 and Quad9 9.9.9.9.
- dns.upstream_mode set to parallel for fastest response.
- failover.enabled true with health_check_interval 30s, health_check_timeout 10s, fallback_upstream 8.8.8.8.
- Helm install sets resources.limits.memory=1Gi and resources.requests.memory=256Mi.
- cert‑manager integration secures the dashboard with automated TLS.
- Strict manifest validation pipeline prevents YAML typos from taking the network offline.
- Memory limits prevent OOM kills when blocklists are updated.
- High‑availability requires handling the gap between node up and valid record.