Drop redundant dynamic cluster mode
The dynamic mode produced a byte-identical cluster to authoritative:
RFC2136 update capability is a per-zone property (BindZone.dynamicUpdate
+ updateKeyRef render allow-update { key ... }), not a cluster role. The
external-dns tier is just an authoritative cluster whose zones allow
dynamic updates.
- remove BindMode dynamic from the enum and constants
- switch the external-dns sample to mode authoritative
- update README migration mapping
This commit is contained in:
@@ -38,7 +38,7 @@ script picks one based on the pod ordinal.
|
||||
|
||||
| Kind | Purpose |
|
||||
|------|---------|
|
||||
| `BindCluster` | A set of BIND9 servers. `spec.mode`: `authoritative`, `resolver`, or `dynamic`. |
|
||||
| `BindCluster` | A set of BIND9 servers. `spec.mode`: `authoritative` or `resolver`. |
|
||||
| `BindZone` | A forward/reverse zone (`primary`/`secondary`/`forward`/`stub`), records inline, optional dynamic-update + DNSSEC + catalog membership. |
|
||||
| `DNSRecord` | A single record set applied via TSIG `nsupdate` — external-dns as a CRD. |
|
||||
| `BindView` | A split-horizon view (`match-clients`, ordering, per-view recursion). |
|
||||
@@ -58,7 +58,7 @@ The three Puppet-managed BIND roles map onto three `BindCluster`s:
|
||||
|-------------|---------------|------|
|
||||
| 3× authoritative masters | `auth` | `authoritative` (pod-0 primary, 2 secondaries) |
|
||||
| 3× only-resolvers | `resolver` | `resolver` (3 identical recursive servers) |
|
||||
| 3× external-dns | `externaldns` | `dynamic` (RFC2136 TSIG updates on primary) |
|
||||
| 3× external-dns | `externaldns` | `authoritative` (zones set `dynamicUpdate` for RFC2136 TSIG updates) |
|
||||
|
||||
## Development
|
||||
|
||||
|
||||
@@ -7,20 +7,19 @@ import (
|
||||
|
||||
// BindMode selects the behaviour of a BindCluster and maps onto a classic
|
||||
// BIND deployment role.
|
||||
// - authoritative: serves signed/unsigned authoritative zones. Ordinal-0 is
|
||||
// the primary that holds zone data; the remaining pods are secondaries that
|
||||
// replicate via AXFR/IXFR + NOTIFY (optionally driven by a catalog zone).
|
||||
// - authoritative: serves authoritative zones. Ordinal-0 is the primary that
|
||||
// holds zone data; the remaining pods are secondaries that replicate via
|
||||
// AXFR/IXFR + NOTIFY (optionally driven by a catalog zone). Zones that set
|
||||
// spec.dynamicUpdate accept RFC2136 TSIG updates (the external-dns pattern),
|
||||
// so no separate mode is needed for external-dns servers.
|
||||
// - resolver: N identical recursive resolvers, no zone replication.
|
||||
// - dynamic: like authoritative, but the primary accepts RFC2136 TSIG updates
|
||||
// (the external-dns pattern); secondaries replicate the result.
|
||||
//
|
||||
// +kubebuilder:validation:Enum=authoritative;resolver;dynamic
|
||||
// +kubebuilder:validation:Enum=authoritative;resolver
|
||||
type BindMode string
|
||||
|
||||
const (
|
||||
ModeAuthoritative BindMode = "authoritative"
|
||||
ModeResolver BindMode = "resolver"
|
||||
ModeDynamic BindMode = "dynamic"
|
||||
)
|
||||
|
||||
// ClusterServiceSpec controls how the cluster is exposed to clients.
|
||||
|
||||
@@ -1007,7 +1007,6 @@ spec:
|
||||
enum:
|
||||
- authoritative
|
||||
- resolver
|
||||
- dynamic
|
||||
type: string
|
||||
nodeSelector:
|
||||
additionalProperties:
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
---
|
||||
# external-dns role (replaces 3x Puppet external-dns servers). The primary
|
||||
# accepts RFC2136 TSIG updates from external-dns; secondaries replicate.
|
||||
# external-dns role (replaces 3x Puppet external-dns servers). This is an
|
||||
# ordinary authoritative cluster; external-dns writes to the zone below via
|
||||
# RFC2136 because the zone sets dynamicUpdate (allow-update { key ... }).
|
||||
apiVersion: bind.unkin.net/v1alpha1
|
||||
kind: BindCluster
|
||||
metadata:
|
||||
name: externaldns
|
||||
namespace: bind-externaldns
|
||||
spec:
|
||||
mode: dynamic
|
||||
mode: authoritative
|
||||
replicas: 3
|
||||
service:
|
||||
type: LoadBalancer
|
||||
|
||||
Reference in New Issue
Block a user