feat: PikaOA切换NC01数据库与本地附件备份

This commit is contained in:
Codex
2026-07-16 02:48:39 +02:00
parent 656df984bd
commit 00b96769e4
10 changed files with 246 additions and 214 deletions
+16 -6
View File
@@ -25,15 +25,18 @@
## 数据库边界
- 测试数据库固定使用 PK01 host PostgreSQL。
- `config/platform-db/postgres-pk01.yaml` 声明独立的:
- 生产与测试数据库固定使用 NC01 host PostgreSQL,不创建 namespace-local PostgreSQL。
- `config/platform-db/postgres-nc01.yaml` 声明独立的:
- 生产 role/database`pikaoa`
- role`pikaoa_test`
- database`pikaoa_test`
- schema`pikaoa`
- `DATABASE_URL` export`platform-infra/pikaoa-test.env`
- 生产 `DATABASE_URL` export`platform-infra/pikaoa.env`
- 测试 `DATABASE_URL` export`platform-infra/pikaoa-test.env`
- `pikaoa-test` namespace 不创建 PostgreSQL StatefulSet、Service 或临时数据库。
- 数据库生命周期独立于 namespace 和业务 workload。
- 测试数据清理由 PK01 PostgreSQL 受控入口负责,不依赖删除 namespace
- 迁移采用全新 role/database,不复制旧数据
- 数据库准备、Secret export 与后续状态查询只走 `platform-db postgres` 受控入口。
## Secret 初始化
@@ -66,7 +69,7 @@
## 初始化顺序
1. 使用 `platform-db postgres` 受控入口准备 PK01 `pikaoa_test` role/database,并 export `DATABASE_URL`
1. 使用 `platform-db postgres` 受控入口`config/platform-db/postgres-nc01.yaml` 准备 `pikaoa_test` role/database,并 export `DATABASE_URL`
2. 执行 foundation
```bash
@@ -139,7 +142,14 @@
- API、Worker、Web 并行构建并以 digest 发布到生产 GitOps branch
- Argo Application `pikaoa-nc01` 自动同步 `pikaoa` namespace
- 禁止人工补建 PipelineRun 代替 source merge。
- 生产使用 PK01 host PostgreSQL 独立 `pikaoa` database/role,不使用 namespace-local PostgreSQL。
- 生产使用 NC01 host PostgreSQL 独立 `pikaoa` database/role,不使用 namespace-local PostgreSQL。
- 生产库逻辑备份由 `config/platform-db/postgres-nc01.yaml#backup.logicalDumps` 声明,写入 NC01 host 本地目录。
- 生产附件主存储保持 NC01 k3s PVC,独立备份由 `config/pikaoa.yaml#delivery.targets.NC01.attachmentsBackup` 声明:
- source PVC 只读挂载;
- Restic repository 使用 NC01 hostPath `/var/backups/unidesk/pikaoa/attachments-restic`
- `backup`、`check`、`forget/prune` 与 `restore-smoke` 均由 YAML 渲染;
- `restore-smoke` 只恢复到临时 `emptyDir`
- Secret 只包含 `RESTIC_PASSWORD`,不需要 SFTP key 或 known_hosts。
- PikaOA 公网 exposure 由 `config/pikaoa.yaml` 的产品 target 唯一声明:
- `testRuntime.targets.NC01.exposure` 拥有 `oa-dev.hwpod.com` 与 NodePort `32080`
- `releaseRuntime.targets.NC01.exposure` 拥有 `oa.hwpod.com` 与 NodePort `32096`