# Brings kube-system/coredns's Corefile under GitOps management. It was # previously only ever edited live via kubectl (3 existing rewrite rules # for auth/rancher/netbird.kube.huskypup.net, none of them git-tracked # anywhere in this repo) - every future change meant a manual, # classifier-gated live edit to a cluster-wide DNS config instead of a # normal git commit ArgoCD applies on its own. No Talos/kubeadm # ownerReferences on this ConfigMap or the coredns Deployment (confirmed # live 2026-08-20), so it's safe to take over here. # # No pod restart needed after a sync - the Corefile's own `reload` plugin # (already present below) watches the mounted file and hot-reloads within # ~30-60s of the ConfigMap volume actually updating on disk (kubelet # propagates ConfigMap changes to mounted volumes automatically, typically # within ~60-90s). apiVersion: v1 kind: ConfigMap metadata: name: coredns namespace: kube-system data: Corefile: | .:53 { errors health { lameduck 5s } ready log . { class error } prometheus :9153 # Rewrite auth.kube.huskypup.net to ingress gateway (NOT authentik-server directly) # This ensures HTTPS works because the ingress gateway has the wildcard TLS cert. # The old rewrite to authentik-server caused TLS failures for OIDC token exchange. rewrite name auth.kube.huskypup.net istio-ingressgateway.istio-system.svc.cluster.local # Rewrite rancher.kube.huskypup.net to internal Istio ingress gateway rewrite name rancher.kube.huskypup.net istio-ingressgateway.istio-system.svc.cluster.local # Rewrite netbird.kube.huskypup.net to internal Istio ingress gateway rewrite name netbird.kube.huskypup.net istio-ingressgateway.istio-system.svc.cluster.local # Multi-site active failover pilot (see # /home/scooby/.claude/plans/jiggly-snacking-iverson.md): home's # own pods resolving the floating pg-authentik.ha.huskypup.net # record always go straight to a local service instead of # round-tripping out through the UniFi WAN port-forward and back # in - this UniFi doesn't support NAT hairpin/loopback for its # own forwarded ports (confirmed live 2026-08-20: DNS resolved # fine, TCP connect failed). Points at ha-authentik-postgres, NOT # CNPG's own pg-authentik-rw directly - rewrite only changes the # resolved name, not the port a client then connects to, and the # app tier is configured for port 61432 (matching the external # floating hostname) - pg-authentik-rw only listens on 5432, # ha-authentik-postgres additionally listens on 61432 (see # infrastructure/authentik/manifests/ha-postgres-nodeport.yaml) # specifically so this rewrite target actually has that port. rewrite name pg-authentik.ha.huskypup.net ha-authentik-postgres.authentik.svc.cluster.local # GitLab cross-site replication (see # /home/scooby/.claude/plans/jiggly-snacking-iverson.md) - same # reasoning as pg-authentik.ha.huskypup.net above: home's own pods # go straight to the local NodePort Service instead of round- # tripping out through the UniFi WAN forward and back in (no NAT # hairpin support, confirmed live for the authentik precedent). rewrite name pg-gitlab.ha.huskypup.net ha-gitlab-postgres.gitlab.svc.cluster.local rewrite name pg-praefect.ha.huskypup.net ha-praefect-postgres.gitlab.svc.cluster.local # GitLab cross-site replication Phase 2b (Gitaly) - home's own # Praefect dials these SAME floating hostnames it hands to the # VPS's Gitaly node as peer addresses (Praefect uses one address # per node for everyone, not different addresses per caller), so # home's own in-cluster traffic to its own local Gitaly nodes # needs to resolve locally too, same reasoning as pg-*.ha above. rewrite name gitaly-0.ha.huskypup.net ha-gitaly-0.gitlab.svc.cluster.local rewrite name gitaly-1.ha.huskypup.net ha-gitaly-1.gitlab.svc.cluster.local rewrite name gitaly-2.ha.huskypup.net ha-gitaly-2.gitlab.svc.cluster.local kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa ttl 30 } forward . 1.1.1.1 8.8.8.8 { max_concurrent 1000 } cache 30 { disable success cluster.local disable denial cluster.local } loop reload loadbalance }