# ============================================================ # 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