# 平台本体 —— 单副本 + Recreate(SQLite 单写者,滚动更新会双写互踩,参照 opsx-loki 同款约束) # 镜像: 把 image 改为你的仓库地址,或用本仓库根目录 Dockerfile 自行构建推送 apiVersion: apps/v1 kind: Deployment metadata: name: opsxsql namespace: opsxsql labels: app.kubernetes.io/name: opsxsql spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app.kubernetes.io/name: opsxsql template: metadata: labels: app.kubernetes.io/name: opsxsql spec: securityContext: runAsNonRoot: true runAsUser: 1000 runAsGroup: 1000 fsGroup: 1000 containers: - name: opsxsql image: opsxsql:latest # TODO: 替换为实际镜像仓库地址 imagePullPolicy: IfNotPresent ports: - name: http containerPort: 9000 env: - name: PORT value: "9000" - name: DB_PATH value: /app/data/sqlite3.db - name: DEBUG value: "false" - name: SECRET_KEY valueFrom: secretKeyRef: name: opsxsql-secrets key: SECRET_KEY - name: JWT_SECRET valueFrom: secretKeyRef: name: opsxsql-secrets key: JWT_SECRET volumeMounts: - name: data mountPath: /app/data readinessProbe: httpGet: path: /health port: http initialDelaySeconds: 5 periodSeconds: 10 livenessProbe: httpGet: path: /health port: http initialDelaySeconds: 20 periodSeconds: 30 resources: requests: cpu: 100m memory: 128Mi limits: cpu: "2" memory: 1Gi securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: false capabilities: drop: ["ALL"] volumes: - name: data persistentVolumeClaim: claimName: opsxsql-data