cheeztv: terminate public cheeztv.unkin.net TLS with the LE *.unkin.net wildcard #417

Merged
benvin merged 2 commits from benvin/cheeztv-le-wildcard into main 2026-08-25 20:58:03 +10:00

2 Commits

Author SHA1 Message Date
unkin-agent 00ea8af1e1 cheeztv: manage the LE *.unkin.net wildcard centrally, reflect into cheeztv
ci/woodpecker/pr/vector-test Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/kubeconform Pipeline was successful
Per review, the *.unkin.net Let's Encrypt wildcard is no longer minted
per-namespace. A single Certificate (wildcard-unkin-net) now lives in the
cert-manager namespace and carries emberstack reflector source annotations via
spec.secretTemplate.annotations, so its secret (wildcard-unkin-net-tls) is
auto-reflected into consumer namespaces. Future consumers are added by
appending to the comma-separated reflection-*-namespaces lists.

Drop apps/base/cheeztv/certificate.yaml and its kustomization entry, and point
the public cheeztv gateway https listener at the reflected wildcard-unkin-net-tls
secret. cheeztv-internal keeps its Vault PKI leaf.
2026-08-25 20:54:20 +10:00
unkin-agent 646b165e42 cheeztv: terminate public cheeztv.unkin.net TLS with the LE *.unkin.net wildcard
ci/woodpecker/pr/vector-test Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/kubeconform Pipeline was successful
Public-facing cheeztv.unkin.net was terminating TLS with an internal Vault PKI
leaf (cheeztv-tls, cluster-issuer vault-issuer), which browsers do not trust.
Per-host Let's Encrypt DNS-01 for cheeztv.unkin.net fails NOTAUTH because the
public zone only delegates _acme-challenge.unkin.net -> acme.unkin.net; a single
*.unkin.net wildcard validates against that one CNAME and needs no per-host
records. Staging issuance of *.unkin.net was verified end-to-end (~70s: Present
by the recursive-nameserver controller -> Order valid -> Certificate Ready).

- Add apps/base/cheeztv/certificate.yaml: cert-manager Certificate
  cheeztv-wildcard-tls (dnsNames *.unkin.net, ClusterIssuer letsencrypt PROD,
  secret cheeztv-wildcard-tls) in the cheeztv namespace.
- Point the public cheeztv gateway's https listener certificateRefs at
  cheeztv-wildcard-tls and drop its cert-manager.io vault-issuer annotations.
- Keep the cheeztv-internal gateway (cheeztv.k8s.syd1.au.unkin.net) on
  vault-issuer / cheeztv-internal-tls, unchanged.
- Register certificate.yaml in the cheeztv kustomization.
2026-08-25 20:43:12 +10:00