Files
explore/deploy/k8s/explore-fe/ingress-api-mainnet.yaml
T
zeekayandHanzo Dev b2d18db7a3 fix(explore): un-stub org explorers (TLS) + mobile detail pages (v1.1.10)
Two mobile-QA defects across the block explorers.

Defect 1 (org explorers showed goerli stub data): api-explore.{zoo,hanzo,
pars}.network served the self-signed INGRESS DEFAULT CERT (no cert-manager
Ingress for those SNIs), so browsers rejected every FE fetch and react-query
fell back to the goerli stubs behind stuck skeletons. FE wiring + backend were
already correct (all 6 chains served real per-chain data via the existing
IngressRoutes). Fix: dedicated letsencrypt-prod Ingress per org api host ->
explorer-unified:8090, mirroring api-explore-lux-network. Certs issued, all
three now ssl_verify=0, real data flows. Also source per-org brand identity
(NETWORK_NAME/currency) in the configmaps so titles render the right brand.

Defect 2 (mobile 390px detail pages: dropped labels, horizontal clip, tab
overlap): three shared-UI fixes.
- Footer: was the real horizontal-overflow driver — inline gridTemplateColumns
  minmax(auto,470px) never collapsed on mobile. Now grid-cols-1 on mobile.
- DetailedInfo.ItemValue: add min-w-0 + mobile wrap so long address/hash values
  stop forcing the page wider than the viewport (desktop unchanged).
- AdaptiveTabsList: @luxfi/ui Tabs silently discard Chakra style props
  (overflowX/w/flexShrink/...), so express mobile scroll + shrink-0 as
  className. Tab strip now scrolls instead of collapsing/overlapping.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-18 10:31:56 -07:00

144 lines
5.0 KiB
YAML

---
# Lux Mainnet — explorer BACKEND API ingress (api-explore.lux.network).
#
# WHY THIS EXISTS (do not delete): the explorer Go backend serves the API by
# Host header via the ingress default backend, so api-explore.lux.network
# *answered* even with no ingress rule — but with NO TLS block for that SNI the
# controller served the self-signed "INGRESS DEFAULT CERT". Browsers then reject
# every api-explore.lux.network request (ERR_CERT_AUTHORITY_INVALID) and the
# whole explorer FE is stuck in skeleton loaders ("0/5 CONNECTED", no blocks).
#
# This dedicated Ingress gives the host a real letsencrypt-prod cert (served for
# that SNI) and routes to the explorer API service. Mirrors the working
# api-explore.osage.network wiring. Verified: explore.lux.network then loads
# live blocks/transactions/stats (curl ssl_verify_result=0).
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: api-explore-lux-network
namespace: lux-mainnet
labels: {app: explore-fe, brand: lux, network: mainnet}
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/proxy-body-size: "10m"
nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
spec:
ingressClassName: ingress
rules:
- host: api-explore.lux.network
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: explorer-unified
port:
number: 8090
tls:
- hosts:
- api-explore.lux.network
secretName: api-explore-lux-network-tls
---
# Zoo Mainnet — explorer BACKEND API ingress (api-explore.zoo.network).
#
# Same root cause as lux above: without a dedicated Ingress declaring a TLS
# block for this SNI, the controller serves the self-signed "INGRESS DEFAULT
# CERT", browsers reject every api-explore.zoo.network request
# (ERR_CERT_AUTHORITY_INVALID), the FE data fetches fail, and react-query
# falls back to the goerli stub placeholders behind stuck skeleton loaders.
# The chain routing already works (the IngressRoute lux-explorer-zoo rewrites
# to /v1/indexer/zoo via the blockscout-prefix-zoo middleware and returns real
# Zoo 200200 data) — this Ingress only supplies the browser-valid LE cert.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: api-explore-zoo-network
namespace: lux-mainnet
labels: {app: explore-fe, brand: zoo, network: mainnet}
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/proxy-body-size: "10m"
nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
spec:
ingressClassName: ingress
rules:
- host: api-explore.zoo.network
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: explorer-unified
port:
number: 8090
tls:
- hosts:
- api-explore.zoo.network
secretName: api-explore-zoo-network-tls
---
# Hanzo Mainnet — explorer BACKEND API ingress (api-explore.hanzo.network).
# See the zoo block above; routes real Hanzo 36963 data via the
# lux-explorer-hanzo IngressRoute + blockscout-prefix-hanzo. This Ingress only
# supplies the browser-valid LE cert for the api-explore.hanzo.network SNI.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: api-explore-hanzo-network
namespace: lux-mainnet
labels: {app: explore-fe, brand: hanzo, network: mainnet}
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/proxy-body-size: "10m"
nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
spec:
ingressClassName: ingress
rules:
- host: api-explore.hanzo.network
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: explorer-unified
port:
number: 8090
tls:
- hosts:
- api-explore.hanzo.network
secretName: api-explore-hanzo-network-tls
---
# Pars Mainnet — explorer BACKEND API ingress (api-explore.pars.network).
# See the zoo block above; routes real Pars 494949 data via the
# lux-explorer-pars IngressRoute + blockscout-prefix-pars. This Ingress only
# supplies the browser-valid LE cert for the api-explore.pars.network SNI.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: api-explore-pars-network
namespace: lux-mainnet
labels: {app: explore-fe, brand: pars, network: mainnet}
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/proxy-body-size: "10m"
nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
spec:
ingressClassName: ingress
rules:
- host: api-explore.pars.network
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: explorer-unified
port:
number: 8090
tls:
- hosts:
- api-explore.pars.network
secretName: api-explore-pars-network-tls