k8s/zoo-mainnet: bring zoo-bot + zoo-build under zoo/universe ownership
Coordination with the Lux universe DX cleanup — Zoo brand sites belong in Zoo universe, not Lux universe. The corresponding files in ~/work/lux/universe/k8s/zoo-mainnet/ will be removed in the matched Lux universe commit. zoo-bot.yaml and zoo-build.yaml each declare a Deployment + Service + hanzo.ai/v1alpha1 IngressRoute. The previous lux/universe/k8s/zoo-mainnet/ directory had no kustomization.yaml, so these were applied imperatively to lux-k8s; folding them into the zoo/universe kustomization brings them under the same brand-bounded reconciliation path as zoo-industries. Live deployments preserved: lux-k8s zoo-mainnet/zoo-bot 1/1 33d lux-k8s zoo-mainnet/zoo-build 1/1 34d lux-k8s zoo-mainnet/zoo-industries 1/1 33d (already in repo) zoo-build image still on ghcr.io/luxfi/build-zoo:0.1.7 — follow-up to migrate the build pipeline to ghcr.io/zooai/* per the canonical container registry rule.
This commit is contained in:
@@ -3,6 +3,8 @@ kind: Kustomization
|
||||
namespace: zoo-mainnet
|
||||
resources:
|
||||
- ../base
|
||||
- zoo-bot.yaml
|
||||
- zoo-build.yaml
|
||||
- zoo-industries.yaml
|
||||
labels:
|
||||
- pairs:
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
# zoo.bot — Zoo Labs Foundation chat/bot SPA.
|
||||
#
|
||||
# Lives on lux-k8s zoo-mainnet (Zoo brand sites run alongside Zoo L2
|
||||
# validators on the Lux cluster — no separate zoo-k8s cluster).
|
||||
#
|
||||
# Moved 2026-06-03 from lux/universe/k8s/zoo-mainnet/zoo-bot.yaml as part
|
||||
# of cross-repo cleanup (brand isolation: Zoo content belongs in Zoo
|
||||
# universe, not Lux universe).
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: zoo-bot
|
||||
namespace: zoo-mainnet
|
||||
labels:
|
||||
app: zoo-bot
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: zoo-bot
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: zoo-bot
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
- name: ghcr-luxfi
|
||||
containers:
|
||||
- name: spa
|
||||
image: ghcr.io/zooai/zoo-bot:0.1.0
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
readinessProbe:
|
||||
httpGet: { path: /health, port: 3000 }
|
||||
initialDelaySeconds: 2
|
||||
periodSeconds: 10
|
||||
livenessProbe:
|
||||
httpGet: { path: /health, port: 3000 }
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 30
|
||||
resources:
|
||||
requests: { cpu: 50m, memory: 32Mi }
|
||||
limits: { cpu: 200m, memory: 128Mi }
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: zoo-bot
|
||||
namespace: zoo-mainnet
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 3000
|
||||
targetPort: 3000
|
||||
selector:
|
||||
app: zoo-bot
|
||||
---
|
||||
apiVersion: hanzo.ai/v1alpha1
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: zoo-bot
|
||||
namespace: zoo-mainnet
|
||||
spec:
|
||||
entryPoints: [websecure]
|
||||
routes:
|
||||
- match: Host(`zoo.bot`) || Host(`www.zoo.bot`)
|
||||
kind: Rule
|
||||
services:
|
||||
- name: zoo-bot
|
||||
port: 3000
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
@@ -0,0 +1,112 @@
|
||||
# zoo.builders / build.zoo.network — Zoo developer onboarding SPA.
|
||||
#
|
||||
# Lives on lux-k8s zoo-mainnet (Zoo brand sites run alongside Zoo L2
|
||||
# validators on the Lux cluster — no separate zoo-k8s cluster).
|
||||
#
|
||||
# Image is built by luxfi/build CI from the Zoo content image; once Zoo
|
||||
# CI takes over the build, the image should move to ghcr.io/zooai/* per
|
||||
# CLAUDE.md container registry rules.
|
||||
#
|
||||
# Moved 2026-06-03 from lux/universe/k8s/zoo-mainnet/zoo-build.yaml as
|
||||
# part of cross-repo cleanup (brand isolation: Zoo content belongs in
|
||||
# Zoo universe, not Lux universe).
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: zoo-build
|
||||
namespace: zoo-mainnet
|
||||
labels:
|
||||
app: zoo-build
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: zoo-build
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: zoo-build
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
- name: ghcr-luxfi
|
||||
containers:
|
||||
- name: build
|
||||
image: ghcr.io/luxfi/build-zoo:0.1.7
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
env:
|
||||
- name: NODE_ENV
|
||||
value: production
|
||||
- name: NEXT_TELEMETRY_DISABLED
|
||||
value: "1"
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: 3000
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 30
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: 3000
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: zoo-build
|
||||
namespace: zoo-mainnet
|
||||
labels:
|
||||
app: zoo-build
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 3000
|
||||
targetPort: 3000
|
||||
protocol: TCP
|
||||
selector:
|
||||
app: zoo-build
|
||||
---
|
||||
apiVersion: hanzo.ai/v1alpha1
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: zoo-build
|
||||
namespace: zoo-mainnet
|
||||
spec:
|
||||
entryPoints:
|
||||
- websecure
|
||||
routes:
|
||||
- match: Host(`zoo.builders`) || Host(`www.zoo.builders`)
|
||||
kind: Rule
|
||||
services:
|
||||
- name: zoo-build
|
||||
port: 3000
|
||||
- match: Host(`build.zoo.network`)
|
||||
kind: Rule
|
||||
middlewares:
|
||||
- name: redirect-build-zoo-network
|
||||
services:
|
||||
- name: zoo-build
|
||||
port: 3000
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
---
|
||||
apiVersion: hanzo.ai/v1alpha1
|
||||
kind: Middleware
|
||||
metadata:
|
||||
name: redirect-build-zoo-network
|
||||
namespace: zoo-mainnet
|
||||
spec:
|
||||
redirectRegex:
|
||||
regex: "^https://build\\.zoo\\.network/(.*)"
|
||||
replacement: "https://zoo.builders/${1}"
|
||||
permanent: true
|
||||
Reference in New Issue
Block a user