AirShelf/k8s/core/worker-deployment.yaml
zyc d41e487f08
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m40s
feat(k8s): 新增 core 真应用(前端+Django API+Celery worker)构建与部署
- core/frontend: Vite 多阶段镜像 + nginx 同源反代 /api,/admin,/static(零 CORS)
- core/backend: Django gunicorn 镜像 + entrypoint(自动 migrate/collectstatic)+ WhiteNoise
- k8s/core: api/worker/web Deployment+Service + ingress(airshelf-web.airlabs.art)
- workflow: 追加 core 前后端 build/push,从 core/backend/.env 套生产覆盖生成 env Secret 后部署
- .gitignore 放行 core/backend/.env;.env 白名单加入 airshelf-web 域名
- 含前端 WIP 还原改动

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 10:21:41 +08:00

44 lines
1.3 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: airshelf-core-worker
labels:
app: airshelf-core-worker
spec:
replicas: 1
selector:
matchLabels:
app: airshelf-core-worker
template:
metadata:
labels:
app: airshelf-core-worker
spec:
imagePullSecrets:
- name: cr-pull-secret
containers:
- name: airshelf-core-worker
image: ${CI_REGISTRY_IMAGE}/airshelf-core-api:latest
imagePullPolicy: Always
# Celery worker connects to the external (Volcano managed) Redis broker
# configured via the airshelf-core-env secret. Uses `args` (not `command`)
# so the image ENTRYPOINT still runs but skips migrate/collectstatic ($1=celery).
args: ["celery", "-A", "airshelf.celery:app", "worker", "-l", "info", "--concurrency", "2"]
envFrom:
- secretRef:
name: airshelf-core-env
livenessProbe:
exec:
command: ["sh", "-c", "celery -A airshelf.celery:app inspect ping"]
initialDelaySeconds: 40
periodSeconds: 60
timeoutSeconds: 15
failureThreshold: 3
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "768Mi"
cpu: "1000m"