From 65f18a63804afa9896ff519c7f29d3c8ae21e054 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Sun, 12 Jul 2026 21:43:03 +1000 Subject: [PATCH] Bump bind-operator to v0.2.1 (secondary replication fix) (#250) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why v0.2.1 fixes authoritative **secondary replication**, which never actually worked — the master REFUSED the catalog AXFR. Root causes (bind-operator #9): secondaries presented no TSIG key, member zones had no `allow-transfer`, and secondaries pointed at the primary's ephemeral pod IP. ## Changes - Bump the operator image (`bind-system/deployment.yaml`) and the pulled CRD bundle URL (`bind-system/kustomization.yaml`) to `v0.2.1`. - Bump the `bind-tsig-api` image (`bind-internal/tsig-api/tsig-api.yaml`) to `v0.2.1`. CRDs are unchanged from v0.2.0, so the generated kubeconform schemas need no update. ## Validation - `bind-system` renders with the v0.2.1 CRD bundle; `bind-internal` passes `kubeconform` (56/56); pre-commit clean. ## Deploy note Existing member zones pick up `allow-transfer` via `modzone`, and secondaries re-point at the stable primary Service ClusterIP with the transfer key, restoring replication without manual BIND surgery. A from-scratch namespace recreate also comes up clean (OrderedReady startup means secondaries snapshot a ClusterIP-correct config). Caveat for a full recreate: the operator regenerates the `client-update` TSIG key, so its new material must be re-synced into puppet eyaml before clients can nsupdate. Reviewed-on: https://git.unkin.net/unkin/argocd-apps/pulls/250 Co-authored-by: Ben Vincent Co-committed-by: Ben Vincent --- apps/base/bind-internal/tsig-api/tsig-api.yaml | 2 +- apps/base/bind-system/deployment.yaml | 2 +- apps/base/bind-system/kustomization.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/base/bind-internal/tsig-api/tsig-api.yaml b/apps/base/bind-internal/tsig-api/tsig-api.yaml index 9b09541..47be244 100644 --- a/apps/base/bind-internal/tsig-api/tsig-api.yaml +++ b/apps/base/bind-internal/tsig-api/tsig-api.yaml @@ -13,7 +13,7 @@ metadata: name: bind-tsig-api namespace: bind-internal spec: - image: git.unkin.net/unkin/bind-tsig-api:v0.2.0 + image: git.unkin.net/unkin/bind-tsig-api:v0.2.1 replicas: 1 port: 8443 # targetNamespace defaults to this resource's namespace (bind-internal), where diff --git a/apps/base/bind-system/deployment.yaml b/apps/base/bind-system/deployment.yaml index cc4387b..acdd578 100644 --- a/apps/base/bind-system/deployment.yaml +++ b/apps/base/bind-system/deployment.yaml @@ -21,7 +21,7 @@ spec: runAsNonRoot: true containers: - name: operator - image: git.unkin.net/unkin/bind-operator:v0.2.0 + image: git.unkin.net/unkin/bind-operator:v0.2.1 args: - --metrics-bind-address=:8080 - --health-probe-bind-address=:8081 diff --git a/apps/base/bind-system/kustomization.yaml b/apps/base/bind-system/kustomization.yaml index 20033dc..4a31658 100644 --- a/apps/base/bind-system/kustomization.yaml +++ b/apps/base/bind-system/kustomization.yaml @@ -6,6 +6,6 @@ resources: - namespace.yaml # CRDs are pulled from the bind-operator repo at the matching tag rather than # vendored here, so they never drift from the operator. - - https://git.unkin.net/unkin/bind-operator/raw/tag/v0.2.0/config/crd/install.yaml + - https://git.unkin.net/unkin/bind-operator/raw/tag/v0.2.1/config/crd/install.yaml - rbac.yaml - deployment.yaml