69788a967c
## Why — urgent PR #251 added `validate-except` to the resolver `BindCluster` but the list omitted the trailing semicolon after the final entry. `named` requires **every** entry in a list to be semicolon-terminated, including the last before the closing brace, so it fails config parse and the resolver pods crash-loop: ``` /run/named/named.conf:18: missing ';' before '}' loading configuration: failure exiting (due to fatal error) ``` The resolvers (`.7`) are down until this lands; the authoritative (`.6`/`.9`) and externaldns (`.8`) are unaffected. ## Fix ```diff - validate-except { unkin.net; 18.198.in-addr.arpa; consul } + validate-except { unkin.net; 18.198.in-addr.arpa; consul; } ``` Renders to `validate-except { unkin.net; 18.198.in-addr.arpa; consul; };` — valid. ## Recovery On merge + ArgoCD sync, the operator re-renders the ConfigMap with valid config and the crash-looping pods self-heal on their next restart (no manual `rollout restart` needed). Validated: `bind-internal` renders and pre-commit clean. Reviewed-on: #252 Co-authored-by: Ben Vincent <ben@unkin.net> Co-committed-by: Ben Vincent <ben@unkin.net>
40 lines
1.3 KiB
YAML
40 lines
1.3 KiB
YAML
---
|
|
# Recursive resolvers (replaces the 3x Puppet only-resolver servers).
|
|
# Three identical recursive servers; no zone replication.
|
|
apiVersion: bind.unkin.net/v1alpha1
|
|
kind: BindCluster
|
|
metadata:
|
|
name: bind-resolvers
|
|
namespace: bind-internal
|
|
spec:
|
|
mode: resolver
|
|
replicas: 3
|
|
storageClassName: cephrbd-fast-delete
|
|
storageSize: 1Gi
|
|
service:
|
|
type: LoadBalancer
|
|
externalTrafficPolicy: Local
|
|
annotations:
|
|
purelb.io/service-group: common
|
|
purelb.io/addresses: 198.18.200.7
|
|
external-dns.alpha.kubernetes.io/hostname: bind-resolvers.k8s.syd1.au.unkin.net
|
|
forwarders:
|
|
- 8.8.8.8
|
|
- 1.1.1.1
|
|
# The internal split-horizon zones are served UNSIGNED by the in-cluster
|
|
# authoritative, but their public parents publish DS records (e.g. unkin.net
|
|
# is DNSSEC-signed on the Internet). With dnssec-validation on, the validator
|
|
# sees "parent indicates secure" but gets an insecure answer and returns
|
|
# SERVFAIL (broken trust chain). Treat the forwarded internal domains as
|
|
# insecure so they are not validated. unkin.net covers all *.unkin.net
|
|
# (incl. k8s.syd1.au.unkin.net); 18.198.in-addr.arpa covers every reverse zone.
|
|
extraOptions:
|
|
- "validate-except { unkin.net; 18.198.in-addr.arpa; consul; }"
|
|
resources:
|
|
requests:
|
|
cpu: 20m
|
|
memory: 128Mi
|
|
limits:
|
|
cpu: "1"
|
|
memory: 512Mi
|