CHECKLIST.md 5.9 KB

DataOps Platform 部署检查清单

部署前

  • 服务器为 Ubuntu 20.04/22.04,可 sudo
  • Python 3.8+ 已安装(python3 --version
  • Supervisor 已安装并运行(systemctl status supervisor
  • PostgreSQL 三身份分离:role-init(DBA/CREATEROLE)、migrator(无 CREATEROLE)、runtime(非 owner);WP06 另有 NOLOGIN trusted-delivery owner / writer,runtime 仅可执行受控写入过程
  • DB_ROLE_INIT_DATABASE_URL 仅在一次性角色初始化期间可用,完成后已回收
  • MIGRATION_DATABASE_URL 与 runtime DATABASE_URL 分别测试通过
  • Neo4j 可连接(Bolt 7687 / HTTP 7474)
  • MinIO 可访问,bucket dataops-bucket 已创建
  • MinIO access key / secret key 与 dataops.env 一致
  • n8n 可访问,API Key 有效
  • DeepSeek API Key 已申请且有余额
  • 发布包已上传(deployment/dataops-platform-release-*.tar.gz
  • /data/upload/data/archive 磁盘空间充足

首次部署

  • chmod +x deploy_dataops.sh scripts/*.sh
  • sudo bash deploy_dataops.sh(首次会生成 env 并退出)
  • 编辑 /etc/dataops-platform/dataops.env
    • SECRET_KEY 已改为长随机字符串
    • DEEPSEEK_API_KEY 已填入真实密钥
    • N8N_API_KEY 已填入真实密钥
    • DB_ROLE_INIT_DATABASE_URL / MIGRATION_DATABASE_URL / runtime DATABASE_URL / NEO4J_* / MINIO_* 与生产环境一致且无占位值
    • LLM_BASE_URL=https://api.deepseek.com(无 /v1 后缀)
    • LLM_MODEL_NAME=deepseek-v4-pro(或实际使用模型)
    • LOG_FILE 为绝对路径
  • sudo chown root:ubuntu /etc/dataops-platform/dataops.env
  • sudo chmod 640 /etc/dataops-platform/dataops.env
  • 再次执行 sudo bash deploy_dataops.sh

部署后验证

  • supervisorctl status dataops-platform 为 RUNNING
  • curl http://127.0.0.1:5500/api/system/health 返回 200
  • 日志无 ERROR:tail -50 /opt/dataops-platform/logs/flask_production.log
  • 日志含 DeepSeek 加载信息(base_url、model)
  • 翻译 API 返回英文标识符: bash curl -X POST http://127.0.0.1:5500/api/system/translate \ -H "Content-Type: application/json" \ -d '{"node_name":"测试宁波数据加工"}' - [ ] MinIO 上传接口正常(业务域上传测试) - [ ] DDL 解析接口不 504(若走 Nginx,确认 ddlparse 超时 300s) ## Nginx / HTTPS(可选) - [ ] config/nginx-dataops-platform.conf 证书路径已修改 - [ ] nginx -t 通过 - [ ] 公网 https://company.citupro.com:18183/api/system/health 可达 ## 安全 - [ ] dataops.env 权限为 640,属主 root:ubuntu - [ ] 未将 API Key 提交到 Git - [ ] 防火墙仅开放必要端口(18183 / 22 等) ## P3-WP04 企业边缘门禁 - [ ] scripts/edge_gateway_admin.py init/csr 使用批准绝对路径和数值 runtime UID/GID,根目录 0700secrets/client.key0600,日志/工单没有私钥或 credential - [ ] init 的 UID/GID、edge.envEDGE_RUNTIME_UID/GID 和 Compose user 完全一致;真实容器进程可读只读挂载的 client key - [ ] 边缘 Compose 无 ports/expose,non-root、read-only、cap-drop ALL、no-new-privileges 和资源/日志上限已复核 - [ ] Edge 镜像从归档内 edge/Dockerfile.edge 构建或按已验签 immutable digest 拉取,pull-only runtime 在 120 秒内 healthy,断网仅 degraded、SIGTERM 干净退出 - [ ] credential 与整个 secrets 目录只读挂载;证书/CA/CRL/task+release Ed25519 公钥只读挂载,env/Compose 不含 secret - [ ] 控制 origin、可选 proxy origin 和 host allowlist 精确一致;企业防火墙、DNS、代理和抓包由网络负责人批准 - [ ] PostgreSQL migration current/head 均为 20260809_479,runtime/migrator/evidence owner role 最小权限已验证 - [ ] 注册固定材料、证书轮换、canonical Ed25519 撤销状态、断网/重连、取消、签名升级、verified bundle 回滚与 fsync 崩溃恢复、queue 备份恢复已按归档内运行手册演练 - [ ] 包内 SHA256SUMS 全通过,OpenAPI、Failure Injection、edge config schema/示例完整;admin status、queue v2、retention/legal hold/delete receipt、DB 三身份和 client/server CRL 步骤已演练 - [ ] enterprise_source_1enterprise_source_2networksecurity_legal 有企业证据;否则保持 ENGINEERING_COMPLETE_ENTERPRISE_EDGE_UAT_BLOCKED ## 回滚准备 - [ ] 已保存上一版离线镜像包和 SHA-256 - [ ] 已执行升级前 preflight.sh - [ ] 已生成升级前 WP13 备份且 checksums.sha256 校验通过 - [ ] 企业配置和密钥已通过独立加密渠道备份,未混入普通工单或 Git - [ ] 已准备新的恢复项目名、独立端口和网络 - [ ] 知晓回滚不执行数据库 downgrade,而是用上一版镜像包和匹配备份恢复候选项目 ## P2-WP11 产品交付门禁 - [ ] 开发、测试、预生产配置差异检查通过,项目、网络、数据命名空间和端口无碰撞 - [ ] 目标环境六类就绪报告为 ready,且没有敏感凭据出现在报告中 - [ ] 晋级对象绑定版本、SHA-256、审批、测试证据和回滚引用,并通过包摘要复核 - [ ] 客户迁移 dry-run 的映射完整、增量滞后为 0、记录数/摘要一致、回滚已准备 - [ ] 离线包包含 OpenAPI、前后端 CycloneDX SBOM、版本清单和全文件校验值 - [ ] 正式构建未使用 --skip-images,最终镜像与归档已签名并进入企业制品库 - [ ] 预生产和生产 TLS、密钥、域名、监控、告警、值班及变更审批已落实 ## WP13 恢复验收 - [ ] 恢复目标项目与源项目名称不同 - [ ] 源、目标卷标签和实际卷名无交集 - [ ] PostgreSQL 迁移 current/head 一致,关键表和记录数匹配 - [ ] Neo4j 节点、MinIO bucket/对象与备份时一致 - [ ] 后端、前端、n8n 和核心依赖健康 - [ ] 演练报告记录 RTO、数据对比、清理范围和企业未完成门禁