Files
zeekayandHanzo Dev 5c1a638589 rpc: /ext/ -> /v1/ on our own hosts
luxd serves /v1/*; /ext/* 404s. Third-party chains keep their own paths.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-03 21:02:21 -07:00

166 lines
4.2 KiB
YAML

# Zoo mainnet — 3 RPC tracking nodes joining Lux mainnet primary network (networkId 1)
# and tracking Zoo EVM chain (blockchainID 4HBM17czc7zFQMPrd9CVZ6YbABm1jecf99iwvFw8Gbo6gFaU3,
# chainID 200200, vmID mgj786NP7uDwBCcq6YwThhaN8FLyybkCa4zBWTQbNgmK6k9A6).
#
# Bootstrap IPs are public LBs of lux-mainnet luxd-0..4 in do-sfo3-lux-k8s.
# These are RPC/tracking nodes — they observe Zoo chain and serve RPC. They
# are not Zoo chain validators (Zoo chain is validated by the Lux mainnet
# validator set, as an L2/tracked-chain).
---
apiVersion: v1
kind: ConfigMap
metadata:
name: zoo-chain-config
namespace: zoo-mainnet
labels:
app: zoo-chain
data:
config.json: |
{
"api-admin-enabled": true,
"api-health-enabled": true,
"api-info-enabled": true,
"api-keystore-enabled": false,
"http-host": "0.0.0.0",
"http-port": 9630,
"staking-port": 9631,
"network-id": 1,
"log-display-level": "info",
"log-level": "info",
"sybil-protection-enabled": false,
"staking-ephemeral-signer-enabled": true,
"staking-ephemeral-cert-enabled": true,
"http-allowed-hosts": "*"
}
---
apiVersion: v1
kind: Service
metadata:
name: zoo-chain-headless
namespace: zoo-mainnet
labels:
app: zoo-chain
spec:
clusterIP: None
selector:
app: zoo-chain
ports:
- name: http
port: 9630
targetPort: 9630
- name: staking
port: 9631
targetPort: 9631
---
# Override existing zoo-rpc Service selector to point at zoo-chain pods.
apiVersion: v1
kind: Service
metadata:
name: zoo-rpc
namespace: zoo-mainnet
labels:
app: zoo-chain
spec:
type: ClusterIP
selector:
app: zoo-chain
ports:
- name: http
port: 9650
targetPort: 9630
- name: rpc
port: 9630
targetPort: 9630
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: zoo-chain
namespace: zoo-mainnet
labels:
app: zoo-chain
spec:
serviceName: zoo-chain-headless
replicas: 3
podManagementPolicy: Parallel
selector:
matchLabels:
app: zoo-chain
template:
metadata:
labels:
app: zoo-chain
spec:
imagePullSecrets:
- name: ghcr-secret
- name: hanzo
terminationGracePeriodSeconds: 30
securityContext:
fsGroup: 1000
runAsGroup: 1000
runAsUser: 1000
containers:
- name: luxd
image: ghcr.io/luxfi/node:v1.30.3
imagePullPolicy: IfNotPresent
command:
- /luxd/build/luxd
args:
- --config-file=/etc/luxd/config.json
- --bootstrap-ips=129.212.164.46:9631,137.184.246.133:9631,143.244.210.43:9631,143.244.210.71:9631,24.144.70.85:9631
- --bootstrap-ids=NodeID-Mf3JfSY91oDwfBqf7rCLmhg4NDtDghw1f,NodeID-2TwSZ2oyeBK2mv7JiseEQ8m74rotDj4QR,NodeID-Ld9VFBQ9zGbd79z2vzaAqkQ3jHuqbtRpo,NodeID-8mY2fhUehN27v3LCU84BnnKEoeRfd2weC,NodeID-DwsrqSkPoE3pXWrUt9nkJ5yBycwRQ246X
- --track-subnets=2JwuEvPyjdnHSsaYtTdjNNLkYhqfQqzAEUvPEhCJnor9J5oMuq
- --data-dir=/data
env:
- name: LUX_NETWORK_ID
value: "1"
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
ports:
- name: http
containerPort: 9630
- name: staking
containerPort: 9631
livenessProbe:
httpGet:
path: /v1/health/liveness
port: 9630
initialDelaySeconds: 300
periodSeconds: 30
timeoutSeconds: 10
failureThreshold: 10
startupProbe:
tcpSocket:
port: 9630
initialDelaySeconds: 10
periodSeconds: 10
failureThreshold: 60
resources:
requests:
cpu: "1"
memory: 4Gi
limits:
cpu: "4"
memory: 16Gi
volumeMounts:
- name: data
mountPath: /data
- name: config
mountPath: /etc/luxd
readOnly: true
volumes:
- name: config
configMap:
name: zoo-chain-config
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: do-block-storage
resources:
requests:
storage: 200Gi