AirSpark/k8s/web-deployment.yaml
zyc 3f33485632
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m42s
ci: 添加 Gitea Actions 部署流水线 + K3s 清单
对齐 AirShelf 的部署模型(master→prod / dev→dev),适配 Next.js 16 SSR 形态:
- frontend/Dockerfile · multi-stage(deps→builder→runner),Next.js standalone + node:20-alpine,非 root 运行
- frontend/next.config.ts · 启用 output: "standalone"(打 Docker 镜像必需)
- frontend/.dockerignore · 排除 .next/node_modules/env 等
- k8s/ · web-deployment(:3000) + ingress + cert-issuer + redirect middleware
- .gitea/workflows/deploy.yaml · build/push 重试 3 次,deploy 重试 5 次,失败上报日志中心 project_id=airspark
- prod 域名 airspark.airlabs.art / dev 域名 airspark.test.airlabs.art

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 11:49:43 +08:00

67 lines
1.4 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: airspark-web
labels:
app: airspark-web
spec:
replicas: 1
selector:
matchLabels:
app: airspark-web
template:
metadata:
labels:
app: airspark-web
spec:
imagePullSecrets:
- name: cr-pull-secret
containers:
- name: airspark-web
image: ${CI_REGISTRY_IMAGE}/airspark-web:latest
imagePullPolicy: Always
ports:
- containerPort: 3000
env:
- name: NODE_ENV
value: "production"
- name: PORT
value: "3000"
- name: HOSTNAME
value: "0.0.0.0"
livenessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 20
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
resources:
requests:
memory: "128Mi"
cpu: "50m"
limits:
memory: "512Mi"
cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:
name: airspark-web
spec:
selector:
app: airspark-web
ports:
- protocol: TCP
port: 80
targetPort: 3000