fix: dashboard deploy, 5-of-3 MPC cluster, pnpm migration

- Dockerfile: use pnpm exclusively (was falling back to npm)
- StatefulSet: 5 replicas with threshold 3 (was 3 replicas, threshold 2)
- deploy.yml: fix namespace typo (lux-bridge -> lux-mpc), add mpc-api restart
- Migrate dashboard from npm to pnpm (pnpm-lock.yaml replaces package-lock.json)

Deploying latest code fixes auth (middleware.ts enforces lux_mpc_session),
dynamic data fetching (dashboard/page.tsx calls API), and Geist font loading
(font files are included in the Next.js build output).
This commit is contained in:
2026-02-20 11:16:24 -08:00
parent b2d2f28277
commit dd2e0faeed
6 changed files with 3833 additions and 6236 deletions
+4 -2
View File
@@ -155,10 +155,12 @@ jobs:
- name: Restart deployments to pick up new images
run: |
kubectl rollout restart statefulset/mpc-node -n lux-bridge
kubectl rollout restart statefulset/mpc-node -n lux-mpc
kubectl rollout restart deployment/mpc-api -n lux-mpc
kubectl rollout restart deployment/mpc-dashboard -n lux-mpc
- name: Wait for rollout
run: |
kubectl rollout status statefulset/mpc-node -n lux-bridge --timeout=300s
kubectl rollout status statefulset/mpc-node -n lux-mpc --timeout=300s
kubectl rollout status deployment/mpc-api -n lux-mpc --timeout=180s
kubectl rollout status deployment/mpc-dashboard -n lux-mpc --timeout=180s
+1
View File
@@ -35,6 +35,7 @@ logs/
# Dashboard build
dashboard/node_modules/
dashboard/.next/
dashboard/package-lock.json
# Environment
.env
+5 -6
View File
@@ -1,13 +1,12 @@
FROM node:20-alpine AS deps
WORKDIR /app
COPY package.json pnpm-lock.yaml* package-lock.json* ./
RUN corepack enable && corepack prepare pnpm@latest --activate || true
RUN if [ -f pnpm-lock.yaml ]; then pnpm install --frozen-lockfile; \
elif [ -f package-lock.json ]; then npm ci; \
else npm install; fi
RUN corepack enable && corepack prepare pnpm@latest --activate
COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile
FROM node:20-alpine AS builder
WORKDIR /app
RUN corepack enable && corepack prepare pnpm@latest --activate
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1
@@ -17,7 +16,7 @@ ARG NEXT_PUBLIC_IAM_CLIENT_ID=lux-mpc
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
ENV NEXT_PUBLIC_IAM_URL=$NEXT_PUBLIC_IAM_URL
ENV NEXT_PUBLIC_IAM_CLIENT_ID=$NEXT_PUBLIC_IAM_CLIENT_ID
RUN npm run build
RUN pnpm build
FROM node:20-alpine AS runner
WORKDIR /app
-6224
View File
File diff suppressed because it is too large Load Diff
+3819
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -8,7 +8,7 @@ metadata:
app.kubernetes.io/part-of: lux-mpc
spec:
serviceName: mpc-node-headless
replicas: 3
replicas: 5
podManagementPolicy: Parallel
selector:
matchLabels:
@@ -35,7 +35,7 @@ spec:
# Build peer list (all other nodes)
PEERS=""
for i in 0 1 2; do
for i in 0 1 2 3 4; do
if [ "$i" != "$INDEX" ]; then
PEERS="${PEERS}node${i}@mpc-node-${i}.mpc-node-headless.lux-mpc.svc:9651,"
fi
@@ -66,14 +66,14 @@ spec:
NODE_ID="node${INDEX}"
PEERS=""
for i in 0 1 2; do
for i in 0 1 2 3 4; do
if [ "$i" != "$INDEX" ]; then
PEERS="${PEERS} --peer node${i}@mpc-node-${i}.mpc-node-headless.lux-mpc.svc:9651"
fi
done
# Build command
CMD="mpcd start --mode consensus --node-id ${NODE_ID} --listen :9651 --api :9800 --data /data/mpc --threshold 2 ${PEERS}"
CMD="mpcd start --mode consensus --node-id ${NODE_ID} --listen :9651 --api :9800 --data /data/mpc --threshold 3 ${PEERS}"
# Node 0 also serves the Dashboard API
if [ "$INDEX" = "0" ]; then