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 |
|
| 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. |
|
| `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. |
|
| `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). |
|
| `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× authoritative masters | `auth` | `authoritative` (pod-0 primary, 2 secondaries) |
|
||||||
| 3× only-resolvers | `resolver` | `resolver` (3 identical recursive servers) |
|
| 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
|
## Development
|
||||||
|
|
||||||
|
|||||||
@@ -7,20 +7,19 @@ import (
|
|||||||
|
|
||||||
// BindMode selects the behaviour of a BindCluster and maps onto a classic
|
// BindMode selects the behaviour of a BindCluster and maps onto a classic
|
||||||
// BIND deployment role.
|
// BIND deployment role.
|
||||||
// - authoritative: serves signed/unsigned authoritative zones. Ordinal-0 is
|
// - authoritative: serves authoritative zones. Ordinal-0 is the primary that
|
||||||
// the primary that holds zone data; the remaining pods are secondaries that
|
// holds zone data; the remaining pods are secondaries that replicate via
|
||||||
// replicate via AXFR/IXFR + NOTIFY (optionally driven by a catalog zone).
|
// 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.
|
// - 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
|
type BindMode string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ModeAuthoritative BindMode = "authoritative"
|
ModeAuthoritative BindMode = "authoritative"
|
||||||
ModeResolver BindMode = "resolver"
|
ModeResolver BindMode = "resolver"
|
||||||
ModeDynamic BindMode = "dynamic"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ClusterServiceSpec controls how the cluster is exposed to clients.
|
// ClusterServiceSpec controls how the cluster is exposed to clients.
|
||||||
|
|||||||
@@ -1007,7 +1007,6 @@ spec:
|
|||||||
enum:
|
enum:
|
||||||
- authoritative
|
- authoritative
|
||||||
- resolver
|
- resolver
|
||||||
- dynamic
|
|
||||||
type: string
|
type: string
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
---
|
---
|
||||||
# external-dns role (replaces 3x Puppet external-dns servers). The primary
|
# external-dns role (replaces 3x Puppet external-dns servers). This is an
|
||||||
# accepts RFC2136 TSIG updates from external-dns; secondaries replicate.
|
# 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
|
apiVersion: bind.unkin.net/v1alpha1
|
||||||
kind: BindCluster
|
kind: BindCluster
|
||||||
metadata:
|
metadata:
|
||||||
name: externaldns
|
name: externaldns
|
||||||
namespace: bind-externaldns
|
namespace: bind-externaldns
|
||||||
spec:
|
spec:
|
||||||
mode: dynamic
|
mode: authoritative
|
||||||
replicas: 3
|
replicas: 3
|
||||||
service:
|
service:
|
||||||
type: LoadBalancer
|
type: LoadBalancer
|
||||||
|
|||||||
Reference in New Issue
Block a user