Files
zeekayandHanzo Dev 774f93e998 tls: nine hosts served INGRESS DEFAULT CERT because a dead resolver was named
exchange/markets on lux-dev and lux-test, and the mpc-api hosts, all
served Traefik's self-signed default and were unreachable over HTTPS
(curl 000) while their backends ran. lux-devnet/lux-exchange was 2/2 the
whole time, serving traffic nobody could reach.

Root cause: their IngressRoutes ask for `certResolver: letsencrypt`, and
that resolver does not exist. hanzo-ingress carries NO
--certificatesresolvers.* argument at all -- TLS issuance was migrated to
cert-manager (88 Certificates on this cluster) and the certResolver lines
are un-migrated residue. Traefik cannot resolve a named resolver that was
never configured, so it falls back to its default certificate.

That the resolver's absence is deliberate, not decay, is worth stating:
acme.json is frozen at 2026-07-14 and CF_API_* env linger from the old
DNS-01 setup. Every host that WORKS today is covered by a cert-manager
Certificate and renews normally -- I checked before concluding otherwise.

Proof it was only ever the missing Certificate: each issued in ~100
seconds. ACME validation was never the problem.

mpc-api is a SEPARATE route, not a tls change on lux-mpc, because that
route matches six hosts on one tls block and three of them already work
with their own Certificates. A single secretName there would have served
all six from a cert covering only the mpc-api names.

Verified after: devnet trio 200 with a real cert; mpc-api.lux/pars 200;
mpc.lux.network unchanged at 200 with its own cert. The testnet trio now
presents a valid cert and returns 503 -- its backend is scaled 0/0, which
is a separate decision, but TLS is no longer the blocker.

mpc-api.zoo.network is untouched: its DNS points at the ZOO load
balancer, and zoo-k8s has zoo-mpc/mpc-node 5/5 but no Ingress or
IngressRoute for mpc at all. That is a routing question, not a
certificate one.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-07 00:54:46 -07:00

28 lines
1.0 KiB
YAML

###############################################################################
# IngressRoute: devnet hosts — canonical scheme matching the live explorers
# <svc>.lux-dev.network + <svc>-dev.lux.network
# (DNS exchange.lux-dev.network already A->LB; exchange-dev.lux.network added)
###############################################################################
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: exchange
labels:
app: exchange
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`exchange.lux-dev.network`) || Host(`exchange-dev.lux.network`) || Host(`markets.lux-dev.network`)
middlewares:
- name: exchange-security-headers
services:
- name: exchange
port: 3000
# secretName, NOT certResolver: issuance moved to cert-manager and the
# letsencrypt resolver no longer exists in hanzo-ingress. Leaving the old
# line here is what made these hosts serve INGRESS DEFAULT CERT.
tls:
secretName: exchange-devnet-tls