fix: remove obsolete hwpod db path

This commit is contained in:
Codex
2026-06-09 07:44:48 +00:00
parent b7a44ee302
commit dab7db6ea7
5 changed files with 336 additions and 141 deletions
+13 -4
View File
@@ -4,7 +4,7 @@
## 定位
G14 platform DB 是 G14 host OS 上的原生 PostgreSQL,不是 k3s workload,也不属于 `devops-infra` namespace。它位于 HWLAB runtime lane、AgentRun、HWPOD 和未来 G14 平台控制能力之下,作为节点级基础设施承载 durable runtime、OpenFGA datastore、平台控制元数据、租约、审计和状态观测。
G14 platform DB 是 G14 host OS 上的原生 PostgreSQL,不是 k3s workload,也不属于 `devops-infra` namespace。它位于 HWLAB runtime lane、AgentRun 和未来 G14 平台控制能力之下,作为节点级基础设施承载 durable runtime、OpenFGA datastore、平台控制元数据、租约、审计和状态观测。
数据库可以保存一部分 k3s 管理所需的状态,例如节点 inventory、runtime lane registry、operation lease、k3s state observation 和 audit event;它不直接执行 `kubectl`、Argo、Tekton 或 GitHub 写操作。k3s 写操作仍必须通过 UniDesk 受控 CLI 或对应控制器执行,数据库只作为状态与协调底座。
@@ -39,10 +39,11 @@ PostgreSQL 只监听 G14 host loopback 与 k3s pod 可达的 node gateway 地址
- `g14_platform_control` / `g14_platform_app`:G14 节点平台控制元数据、租约、观测和审计。
- `hwlab_v03` / `hwlab_v03_app`HWLAB v0.3 cloud-api durable runtime。
- `openfga_v03` / `openfga_v03_app`HWLAB v0.3 OpenFGA datastore。
- `hwpod_v03` / `hwpod_v03_app`:HWPOD v0.3 迁移后的平台库目标;HWPOD 不应继续拥有自带 DB。
`postgres` 只作为管理数据库保留。新增 runtime lane 时按同一模式分配独立 database/role,不复用业务应用账号访问 `g14_platform_control`
HWPOD v0.3 不再有当前 platform DB 目标;`hwpod-v03-db``hwpod_v03``hwpod_v03_app` 出现时只能视为废弃残留,不能作为 SecretRef 完成态或平台库目标保留。
## k3s 桥接
业务 Pod 不直接访问 host IP 字面量,而是访问所在 namespace 内的 `g14-platform-postgres` Service。HWLAB v0.3 的桥接对象在 `hwlab-v03` namespace 中:
@@ -56,9 +57,8 @@ PostgreSQL 只监听 G14 host loopback 与 k3s pod 可达的 node gateway 地址
- `hwlab-cloud-api-v03-db/database-url` 指向 `hwlab_v03`
- `hwlab-v03-openfga/datastore-uri` 指向 `openfga_v03`
- `hwpod-v03-db/database-url` 指向 `hwpod_v03`
这些 SecretRef 的源凭据来自 G14 host 的 platform DB credentials file,不再从旧 lane-local Postgres Secret 派生。迁移完成后,旧的 repo-owned PostgreSQL bootstrap/ensure 路径已经删除,不能用于轮换 `hwlab-cloud-api-v03-db``hwlab-v03-openfga`。如需重复轮换,必须先补齐平台 DB 专用 UniDesk CLI,让它从 host 凭据文件读取、写入 k3s Secret,并输出 redacted 状态;不得把手写 `kubectl create secret` 或旧 StatefulSet ensure 路径沉淀成长期流程。
这些 SecretRef 的源凭据来自 G14 host 的 platform DB credentials file,不再从旧 lane-local Postgres Secret 派生。`hwpod-v03-db/database-url` 是废弃残留,应该缺席;发现它时用受控清理入口删除,不能为它补 status 可见性或轮换路径。迁移完成后,旧的 repo-owned PostgreSQL bootstrap/ensure 路径已经删除,不能用于轮换 `hwlab-cloud-api-v03-db``hwlab-v03-openfga`。如需重复轮换,必须先补齐平台 DB 专用 UniDesk CLI,让它从 host 凭据文件读取、写入 k3s Secret,并输出 redacted 状态;不得把手写 `kubectl create secret` 或旧 StatefulSet ensure 路径沉淀成长期流程。
当前运行面验证使用 control-plane status 和 live health
@@ -118,6 +118,15 @@ curl -fsS http://74.48.78.17:20667/health/live | jq '{status, ready, environment
其中 `endpoints/g14-platform-postgres` 应为空,`endpointslice/g14-platform-postgres-host` 应存在且是唯一带 `kubernetes.io/service-name=g14-platform-postgres` label 的 EndpointSlice。
HWPOD v0.3 DB 残留不属于旧自有 HWLAB Postgres StatefulSet 清理目标,必须用单独的废弃对象清理入口处理:
```bash
bun scripts/cli.ts hwlab nodes secret cleanup-obsolete --node G14 --lane v03 --name hwpod-v03-db --dry-run
bun scripts/cli.ts hwlab nodes secret cleanup-obsolete --node G14 --lane v03 --name hwpod-v03-db --confirm
```
该入口只允许清理已确认不被 workload 引用的 `hwpod-v03-db` k3s Secret,并同步清理 G14 host PostgreSQL 上同名废弃目标对应的 `hwpod_v03` database 与 `hwpod_v03_app` role;输出只披露对象是否存在、是否删除和退出码,不打印 URI、密码或可复用凭据。清理后 `hwpod-v03-db``hwpod_v03``hwpod_v03_app` 都应缺席。
## 备份与恢复
备份脚本固定在 G14 host