3ab8bcc34b
Mirrors the puppet authoritative `master-zones` view (match-clients `acl-main.unkin.net`, recursion no) — restricting who can query bind-authoritative.
## Changes
- add `auth-acl-main` BindACL with the puppet authoritative acl-main.unkin.net networks (13-17,19,20,24-29)
- `allow-query { auth-acl-main; 10.42.0.0/16; }` on bind-authoritative via extraOptions
## Notes
- Implemented as a global `allow-query` rather than a BindView: dynamic *primary* zones inside a view would need per-view `allow-new-zones` (an operator gap). Functionally equivalent for the single master-zones view.
- `10.42.0.0/16` (pod network) is included so secondaries can SOA-refresh from the primary during catalog replication — without it, replication breaks.
- Works on the current operator (no HOLD).
## Caveat
The DNS Services use externalTrafficPolicy: Cluster, which SNATs external clients to node IPs (198.18.19.x, already in acl-main), so this ACL doesn't truly restrict *external* clients yet. True source-IP restriction needs externalTrafficPolicy: Local — happy to switch if wanted.
Reviewed-on: #227
Co-authored-by: Ben Vincent <ben@unkin.net>
Co-committed-by: Ben Vincent <ben@unkin.net>
43 lines
1.2 KiB
YAML
43 lines
1.2 KiB
YAML
---
|
|
# Authoritative masters (replaces the 3x Puppet authoritative servers).
|
|
# pod-0 is the primary; pods 1-2 replicate via the catalog zone + AXFR/IXFR.
|
|
apiVersion: bind.unkin.net/v1alpha1
|
|
kind: BindCluster
|
|
metadata:
|
|
name: bind-authoritative
|
|
namespace: bind-internal
|
|
spec:
|
|
mode: authoritative
|
|
replicas: 3
|
|
storageClassName: cephrbd-fast-delete
|
|
storageSize: 2Gi
|
|
# Restrict queries to internal networks (puppet acl-main.unkin.net).
|
|
# 10.42.0.0/16 (pod net) is required so secondaries can SOA-refresh
|
|
# from the primary during catalog replication.
|
|
extraOptions:
|
|
- "allow-query { auth-acl-main; 10.42.0.0/16; }"
|
|
service:
|
|
type: LoadBalancer
|
|
annotations:
|
|
purelb.io/service-group: common
|
|
purelb.io/addresses: 198.18.200.6
|
|
external-dns.alpha.kubernetes.io/hostname: bind-authoritative.k8s.syd1.au.unkin.net
|
|
resources:
|
|
requests:
|
|
cpu: 100m
|
|
memory: 128Mi
|
|
limits:
|
|
cpu: "1"
|
|
memory: 512Mi
|
|
---
|
|
# Catalog zone so new BindZones auto-provision onto the secondaries.
|
|
apiVersion: bind.unkin.net/v1alpha1
|
|
kind: BindCatalogZone
|
|
metadata:
|
|
name: bind-authoritative-catalog
|
|
namespace: bind-internal
|
|
spec:
|
|
clusterRef: bind-authoritative
|
|
zoneName: catalog.internal
|
|
transferKeyRef: transfer-key
|