devperf/k8s/web-deployment.yaml
zyc 43f885e22a feat: MySQL 远程数据库 + CI/CD 流水线 + K8s 部署配置
数据库迁移:
- SQLite → MySQL (mysql-8351f937d637-public.rds.volces.com)
- Schema 从 drizzle-orm/sqlite-core 改为 drizzle-orm/mysql-core
- 全量数据迁移完成(13 张表 525 条记录)

CI/CD 流水线:
- .gitea/workflows/deploy.yaml(airlabs 分支触发)
- 前后端分别构建镜像推到火山引擎 CR internal 命名空间
- 自动部署到内部 K3s 集群

K8s 配置:
- backend-deployment.yaml(Bun 3200 端口 + MySQL 私网连接)
- web-deployment.yaml(Nginx 80 端口 + SPA fallback)
- backend-ingress.yaml(devperf-api.airlabs.art + TLS)
- web-ingress.yaml(devperf.airlabs.art + TLS)
- cert-manager-issuer.yaml(Let's Encrypt)

其他:
- 前端 Dockerfile 支持 VITE_API_BASE_URL 构建参数
- 后端 Dockerfile 改为直接运行源码(兼容 mysql2)
- 侧边栏/全局样式优化 + Git 图表修复

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 13:48:54 +08:00

60 lines
1.2 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: devperf-web
labels:
app: devperf-web
spec:
replicas: 1
selector:
matchLabels:
app: devperf-web
template:
metadata:
labels:
app: devperf-web
spec:
imagePullSecrets:
- name: cr-pull-secret
containers:
- name: devperf-web
image: ${CI_REGISTRY_IMAGE}/web:latest
imagePullPolicy: Always
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 3
resources:
requests:
memory: "64Mi"
cpu: "50m"
limits:
memory: "256Mi"
cpu: "250m"
---
apiVersion: v1
kind: Service
metadata:
name: devperf-web
spec:
selector:
app: devperf-web
ports:
- protocol: TCP
port: 80
targetPort: 80