Files
zeekay db7f8f17bf k8s(lux-mainnet): expose rpc.{hanzo,zoo}.network for the two primary-network-validating L2s (#30)
* fix(lux-build): roll lux.build to 0.1.14 + decomplect to one route

lux.build was 503 crash-looping: the live deployment ran the OLD Prisma-based
image ghcr.io/luxfi/build:0.1.9 which SIGSEGV/heap-OOM'd on a missing
DATABASE_URL (62 restarts). The dashboard was rewritten Prisma-free (a
self-contained Next standalone server) and already built natively on the
lux-build ARC pool as 0.1.14 (HEAD 916863d) — it was simply never rolled.

- k8s/lux-mainnet/lux-build.yaml: image 0.1.6 -> 0.1.14 (canonical, live),
  replicas 1 -> 2 (flagship availability), liveness/readiness / -> /v1/health
  (the app's purpose-built health route). Validated in-cluster: starts clean,
  / + /quickstart + /v1/health all 200; rolled 2/2 Running, 0 restarts.

Decomplect to exactly ONE lux.build route (the canonical lux-mainnet/lux-build):
- k8s/lux-explorer/lux-build.yaml: DELETED — a dead duplicate (image 0.1.0,
  no live resources) whose IngressRoute also claimed Host(`lux.build`).
- k8s/lux-explorer/build-wl.yaml: removed the dead build-lux stanzas
  (ConfigMap/Deployment/Service/IngressRoute). Its build-lux IngressRoute
  claimed Host(`lux.build`) with a dead backend (svc had no endpoints),
  causing non-deterministic 503s when edge pods resolved the host to it.

lux.exchange: header doc clarified. The apex is healthy (in-cluster HTTP 200 +
valid TLS, CN=lux.exchange) served by the single class=ingress Ingress on
hanzoai/ingress with the cert-manager lux-exchange-tls secret. External apex
failures are safebrowse-style client-network content filtering of the
crypto-exchange domain (NOT an origin/ingress/cert fault) — the unfiltered
.network aliases serve 200.

Note: build-{zoo,hanzo,pars} in build-wl.yaml are also dead (other-brand
surfaces, out of scope) — flagged for those teams, left untouched.

* k8s(lux-mainnet): expose rpc.{hanzo,zoo}.network for the two L2s

Hanzo (chainId 36963) and Zoo (chainId 200200) are primary-network-
validating L2s — their blockchains already live on the Lux P-Chain
(hanzo bc RHuUsLWW..., zoo bc 4HBM17cz...) and are validated by the
existing Lux Primary Network validator set (platform.validatedBy ->
netID 1111...LpoYY, same as C-Chain). No separate validator set.

- rpc-brand-ingress.yaml: IngressRoute rpc-brand-root-mainnet adds
  bare-root JSON-RPC for rpc.{hanzo,zoo}.network at Path(/) priority
  10000, using the existing lux-system rpc-rewrite-{hanzo,zoo}
  middlewares (replacePath -> /ext/bc/{hanzo,zoo}/rpc). Mirrors the
  api-brand-root-mainnet pattern; full /ext/* surface already served by
  the shared api-mainnet IngressRoute. (A plain k8s Ingress is shadowed
  by api-mainnet@kubernetescrd, so IngressRoute is the one way here.)
- chains/chain-{hanzo,zoo}.yaml: lux.cloud/v1 Chain CRs (alias, networkRef
  luxd, vm evm) so the bootnode/lux.cloud fleet dashboard lists both L2s.
- chain-aliases.yaml: reconcile stale git blockchainIDs to the live
  on-chain P-Chain values (+ add osage).

Verified: rpc.hanzo.network eth_chainId 0x9063 (36963), rpc.zoo.network
0x30e08 (200200), both via the public Cloudflare endpoint.

---------

Co-authored-by: zeekay <[email protected]>
2026-07-26 15:46:01 -07:00

19 lines
399 B
YAML

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: lux-mainnet
resources:
- a-chain.yaml
- b-chain.yaml
- d-chain.yaml
- g-chain.yaml
- i-chain.yaml
- k-chain.yaml
- m-chain.yaml
- o-chain.yaml
- q-chain.yaml
- r-chain.yaml
- z-chain.yaml
# Primary-network-validating L2s (own EVMs, validated by the Lux fleet)
- chain-hanzo.yaml
- chain-zoo.yaml