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.
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.