Files
home-network-k3s-impl/platform/externaldns
jakman85andClaude Opus 4.8 275ac466b2 wire Cloudflare DNS token secrets + exempt *.sops.yaml from yamllint
- Rename the committed encrypted secrets to canonical cloudflare-api-token.sops.yaml
  (cert-manager + external-dns namespaces) and uncomment the resource lines in both
  kustomizations, so cert-manager DNS-01 + ExternalDNS get the token at reconcile.
- Exempt **/*.sops.yaml from ci/yamllint.yaml: SOPS re-emits encrypted files with its
  own indentation + long ENC[...] lines (never hand-edited), which was failing the lint
  gate on main after the secrets were committed. Same treatment as **/vault.yml.

Both Secrets confirmed present + encrypted in the platform build; gate PASS.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-08-17 00:35:45 -05:00
..

platform/externaldns

ExternalDNS — automatic public DNS records for public services (Cloudflare).

What this stub is

Flux HelmRelease watching Gateway/HTTPRoute + Service resources, publishing <service>.home.keithjackson.dev records in Cloudflare from declared intent (no manual record editing, R-DNS-02).

Split-horizon note (docs/09)

A wildcard *.keithjackson.dev matches only one label deep, so <svc>.home.keithjackson.dev needs its own record. internal services need NO public record — PiHole resolves them to the internal Gateway VIP (split-horizon). ExternalDNS manages public services' records only.

Secrets

Cloudflare API token referenced by name (cloudflare-api-token, shared with cert-manager), SOPS-encrypted (WS-SEC, OQ-4).

TODO (later phases)

  • Phase 2 (WS-NET): confirm gateway-httproute source; prove an auto record for a test route (R-DNS-02, Phase-2 exit gate).
  • Phase 6 (WS-APPS): PiHole provides the internal split-horizon answers as it onboards.