Accept intra-cluster NOTIFY on secondaries via allow-notify #14
Reference in New Issue
Block a user
Delete Branch "benvin/allow-notify-intra-cluster"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Dynamic updates (external-dns RFC2136 on
bind-externaldns, dns-updater nsupdates onbind-authoritative) land on the primary and bump the zone serial; the primary NOTIFYs the secondaries — but the secondaries REFUSE the NOTIFY:10.42.3.197is the primary pod's own IP. Secondaries transfer from the primary Service ClusterIP (stable across primary pod restarts), and BIND derives a zone's implicitallow-notifyfrom itsprimarieslist — the ClusterIP. But k8s Services NAT only the inbound direction, so the primary pod's NOTIFYs egress with its pod IP as source and never match. Replication then only happens on the SOA refresh timer (3600s): a 1-hour propagation delay on every dynamic zone.Changes
PrimaryPodAddressestobind.RenderInput.allow-notifycovering the primary pod IP(s) plus the transfer address (an explicitallow-notifyreplaces the implicitprimaries-derived default, so the transfer source is kept). Emitted only when the primary pod IP is known; nothing changes when it is not. This covers both catalog member zones (they inherit options defaults) and plain secondary zones.allow-notifywith pod IP + transfer address; primary emits none; omitted when the pod IP is unknown.go build ./...,go test ./..., andgo vet ./...all pass.Rollout
Config-generation change only — it takes effect after an operator image release (tag
v*) and an argocd image bump. Not done here. Once the new ConfigMap renders, secondaries roll and begin accepting NOTIFYs, dropping dynamic-zone propagation from ~1h to seconds.