Files
zeekay 37225b81ae infra: import lux-targeted manifests from hanzo universe
Per separation-of-concerns: hanzo universe was holding 11 manifests
that target lux-k8s. Moved them here where they belong.

Imported into k8s/lux-k8s/:
  - agnost/, api-gateway/, bootnode-lux/, bridge/, exchange/,
    explorer/, operator/  (unique to hanzo universe, fresh copies)
  - gateway/  (hanzo had newer pins than lux's local copy)

Skipped: validators/ — lux universe already has the newer
(luxd v1.27.4) version. Hanzo's older v1.23.31 copy is being
dropped, not merged.

Imported into k8s/:
  - status/{deployment,configmap,ingressroute}.yaml
    (Hanzo status SPA in lux-system ns on lux-k8s)
  - nchain/crs/mainnet.yaml
    (Network CR for lux-mainnet ns on lux-k8s)
2026-05-22 20:36:19 -07:00

183 lines
3.6 KiB
YAML

# Lux Bridge — Cross-chain bridge UI + backend + MPC
# Deployed at bridge.lux.network + mpc.lux.network
---
apiVersion: v1
kind: Namespace
metadata:
name: lux-bridge
---
# Bridge UI (Next.js standalone)
apiVersion: apps/v1
kind: Deployment
metadata:
name: bridge-ui
namespace: lux-bridge
labels:
app: bridge-ui
spec:
replicas: 1
selector:
matchLabels:
app: bridge-ui
template:
metadata:
labels:
app: bridge-ui
spec:
imagePullSecrets:
- name: ghcr-luxfi
containers:
- name: bridge-ui
image: ghcr.io/luxfi/bridge-ui:1.0.6
imagePullPolicy: Always
ports:
- containerPort: 3000
env:
- name: HOSTNAME
value: "0.0.0.0"
- name: NODE_OPTIONS
value: "--max-old-space-size=768"
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: "2"
memory: 2Gi
readinessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 30
periodSeconds: 10
livenessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 60
periodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
name: bridge-ui
namespace: lux-bridge
spec:
type: ClusterIP
ports:
- port: 3000
targetPort: 3000
selector:
app: bridge-ui
---
# Bridge API Server (Express)
apiVersion: apps/v1
kind: Deployment
metadata:
name: bridge-server
namespace: lux-bridge
labels:
app: bridge-server
spec:
replicas: 1
selector:
matchLabels:
app: bridge-server
template:
metadata:
labels:
app: bridge-server
spec:
imagePullSecrets:
- name: ghcr-luxfi
containers:
- name: bridge-server
image: ghcr.io/luxfi/bridge-server:1.0.6
imagePullPolicy: Always
ports:
- containerPort: 5000
env:
- name: NODE_ENV
value: "production"
- name: PORT
value: "5000"
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: bridge-secrets
key: database-url
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 1Gi
---
apiVersion: v1
kind: Service
metadata:
name: bridge-server
namespace: lux-bridge
spec:
type: ClusterIP
ports:
- port: 5000
targetPort: 5000
selector:
app: bridge-server
---
# Bridge IngressRoutes
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: bridge-ui
namespace: lux-bridge
spec:
entryPoints:
- websecure
routes:
- match: Host(`bridge.lux.network`)
kind: Rule
services:
- name: bridge-ui
port: 3000
tls:
secretName: bridge-lux-network-tls
---
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: bridge-api
namespace: lux-bridge
spec:
entryPoints:
- websecure
routes:
- match: Host(`bridge-api.lux.network`)
kind: Rule
services:
- name: bridge-server
port: 5000
tls:
secretName: bridge-api-lux-network-tls
---
# MPC whitelabel (mpc.lux.network → mpc.hanzo.ai)
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: mpc-lux
namespace: lux-bridge
spec:
entryPoints:
- websecure
routes:
- match: Host(`mpc.lux.network`)
kind: Rule
services:
- name: mpc-api
namespace: hanzo
port: 80
tls:
secretName: mpc-lux-network-tls