2deea3e023
Pods copy config from the projected volume into an emptyDir once at startup, so a ConfigMap or keys.conf change never reaches a running pod: rndc reconfig re-reads the stale startup copy, and a manual `kubectl rollout restart` is reverted because the operator overwrites the pod template every reconcile. The only thing that applies new config is a restart, and nothing triggered one. Stamp a hash of the projected config (rendered ConfigMap + keys.conf Secret) onto the pod template as bind.unkin.net/config-hash. When config changes the hash flips, the template changes, and the StatefulSet does a normal rolling restart so every pod re-copies fresh config. The operator owns the template, so the restart is operator-driven and not reverted; a stable hash means no spurious restarts. Covers named.conf changes (ACLs, views, forwarders, validate-except, primary address) and TSIG key rotation.