aps-agent/packaging/k8s/deployment.yaml

118 lines
3.5 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ============================================================
# APS Agent · Web 端 K8s 部署清单(与现有 PVC aps-agent-server-data 对应)
# 关键点:
# 1. 持久卷挂载在 /app/server/data —— 项目/会话/世界状态/导出全部落在这里
# 2. securityContext.fsGroup=10001 与镜像内 aps 用户同组 —— 否则挂载卷属 root,
# 容器内 aps(10001) 无法写入,表现为「创建项目失败/接口 500」
# 3. APS_WEB_DEMO_SEED=1:每个租户首次打开工作区时自动播种一套演示项目
# (不需要演示数据时改为 "0")
# ============================================================
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: aps-agent-server-data
namespace: aps
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1000Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: aps-agent
namespace: aps
labels:
app: aps-agent
spec:
replicas: 1
selector:
matchLabels:
app: aps-agent
template:
metadata:
labels:
app: aps-agent
spec:
securityContext:
runAsUser: 10001
runAsGroup: 10001
fsGroup: 10001 # 关键:让挂载卷对 aps 组可写
fsGroupChangePolicy: OnRootMismatch # 仅根属主不匹配时递归改组,避免每次全量 chown
containers:
- name: aps-agent
image: aps-agent:REPLACE_WITH_TAG
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8000
env:
- name: APS_MODE
value: "web"
- name: APS_DATA_DIR
value: /app/server/data
- name: APS_WEB_DEMO_SEED
value: "1"
- name: APS_PORT
value: "8000"
# ---- JMS 认证(地址由现场 ConfigMap 注入,密钥由 Secret 注入)----
- name: APS_AUTH_PROVIDER
value: "jms"
- name: JMS_AUTH_BASE_URL
valueFrom:
configMapKeyRef:
name: aps-agent-config
key: jms-auth-base-url
- name: JMS_AUTH_TENANT_CODE
value: ""
- name: JMS_AUTH_TENANT_NAME
value: ""
- name: JMS_AUTH_DEFAULT_ROLE
value: "planner"
- name: JMS_AUTH_SESSION_SECRET
valueFrom:
secretKeyRef:
name: aps-agent-secrets
key: jms-session-secret
optional: true
volumeMounts:
- name: aps-agent-server-data
mountPath: /app/server/data # 读写:所有运行数据持久化于此
readinessProbe:
httpGet:
path: /api/health
port: http
initialDelaySeconds: 10
periodSeconds: 15
livenessProbe:
httpGet:
path: /api/health
port: http
initialDelaySeconds: 30
periodSeconds: 30
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: "2"
memory: 2Gi
volumes:
- name: aps-agent-server-data
persistentVolumeClaim:
claimName: aps-agent-server-data
---
apiVersion: v1
kind: Service
metadata:
name: aps-agent
namespace: aps
spec:
selector:
app: aps-agent
ports:
- name: http
port: 8000
targetPort: http