131b4e1695
We self-delegate `_acme-challenge.unkin.net` into an `acme.unkin.net` zone we serve ourselves, so cert-manager can solve Let's Encrypt DNS-01 over RFC2136/TSIG. That needs a publicly-reachable authoritative BIND, separate from the internal estate. - Add app `bind-external` (base + au-syd1 overlay); register it in the platform ApplicationSet and AppProject destinations (bind-operator already watches all namespaces). - Add BindCluster `bind-external`: authoritative-only, recursion off, no forwarding, transfers denied except the keyed catalog/zone AXFR; 2 replicas; primaryService is a dmz-pinned PureLB LoadBalancer at `198.18.199.53`. - Add BindZone `acme.unkin.net` (primary, dynamicUpdate) and BindTSIGKey `certmanager` (hmac-sha256), whose Secret `certmanager-tsig` reflects into the `cert-manager` namespace for the rfc2136 solver. Pairs with argocd-apps #327 (the ClusterIssuers) and a one-time Google Cloud DNS delegation + NAT of the public IP :53 to `198.18.199.53`. --------- Co-authored-by: Ben Vincent <neotheo@gmail.com> Reviewed-on: #329 Co-authored-by: Ben Vincent <ben@unkin.net> Co-committed-by: Ben Vincent <ben@unkin.net>
20 lines
591 B
YAML
20 lines
591 B
YAML
---
|
|
# Self-delegated ACME challenge zone. Google Cloud DNS holds a one-time
|
|
# _acme-challenge.unkin.net CNAME -> _acme-challenge.acme.unkin.net and an
|
|
# acme.unkin.net NS delegation pointing here; cert-manager writes the challenge
|
|
# TXT records via RFC2136 authenticated with the certmanager key.
|
|
apiVersion: bind.unkin.net/v1alpha1
|
|
kind: BindZone
|
|
metadata:
|
|
name: acme-unkin-net
|
|
namespace: bind-external
|
|
spec:
|
|
clusterRef: bind-external
|
|
zoneName: acme.unkin.net
|
|
type: primary
|
|
defaultTTL: 60
|
|
dynamicUpdate: true
|
|
updateKeyRef: certmanager
|
|
allowTransfer:
|
|
- key certmanager
|