fix: 补齐 HWLAB Kafka ACL 与入口口径

This commit is contained in:
Codex
2026-07-15 06:47:27 +02:00
parent 9db03eae12
commit 9d3d57433f
2 changed files with 29 additions and 3 deletions
+2
View File
@@ -143,6 +143,7 @@ clients:
- agentrun.event.v1
- agentrun.event.debug.v1
- agentrun.hwlab.event.v1
- hwlab.event.v1
- hwlab.event.debug.v1
dlqTopics:
- agentrun.hwlab.event.dlq.v1
@@ -159,6 +160,7 @@ clients:
- agentrun.event.v1
- agentrun.event.debug.v1
- agentrun.hwlab.event.v1
- hwlab.event.v1
- hwlab.event.debug.v1
dlqTopics:
- agentrun.hwlab.event.dlq.v1
+27 -3
View File
@@ -73,7 +73,10 @@ HWLAB v0.2/v0.3 仓库内 `docs/reference/spec-*`,以及已收编的 `cloud-wo
## DEV 入口
- 当前入口必须从 `config/hwlab-node-lanes.yaml#lanes.v03.targets.NC01` 读取,不从长期文档硬编码推断。
- NC01 `v0.3` 前端/API 入口固定为 `https://hwlab.pikapython.com`,只能按 `config/hwlab-node-lanes.yaml` 中的 `lanes.v03.targets.NC01.publicExposure` 验证;域名侧浏览器验收比裸 IP 或旧端口更能覆盖 Caddy、FRP、同源 cookie 和 Vue workbench 路由。
- 当前 lane 入口:
- development `NC01/v03` 前端/API 入口为 `http://152.53.229.148:32009`
- production release lane `NC01/production` 的正式入口为 `https://hwlab.pikapython.com`
- 两者都必须从 `config/hwlab-node-lanes.yaml` 中对应 target 的 `publicExposure` 读取并验证,不能把 production HTTPS 复用于 development 验收。
- HWLAB Cloud Web/Workbench 的最终 web-probe 证据必须来自 PR 合并并经 CI/CD/GitOps/Argo 部署后的公网入口;本地 fake-server、localhost dist、临时 `--url` 和源码/API preflight 只能证明开发面,不得作为关闭用户入口 issue 或声明上线成功的替代证据。公网 web-probe 发现问题时继续修复 PR 或运行面,再重新部署复测。
- 旧公网端口不是浏览器验收入口;内部 k3s service 仍可使用 `6667` 作为服务端口。
- 不要把 master 上的其他 UniDesk frontend/backend-core 路径误判为 HWLAB 前端。
@@ -86,7 +89,18 @@ NC01 `v0.3` 已按 `pikasTech/HWLAB#1176` 收敛到 Sub2API-style 的最小多
NC01 `v0.3` 的 DB 执行面不再硬编码为外置 PostgreSQL,而由 UniDesk YAML `config/hwlab-node-lanes.yaml` 中选中 target 的 `runtimeStore.postgres.mode` 决定。mode 为 `local-k3s` 时,Cloud API、user-billing、workbench-runtime、project-management 和 OpenFGA 消费 `hwlab-v03` namespace 内的本地 `hwlab-v03-postgres`;复验和关闭证据应来自 `hwlab nodes control-plane plan|status``hwlab nodes secret status`、运行面 workload/Secret 摘要和 `external bridge/secrets not-required`,而不是要求本地 PostgreSQL 缺失。`externalPostgres` 与 PK01 platform DB YAML 必须继续保留为 `platform-service` mode 的候选配置;把 mode 切回 `platform-service` 时应重新启用 bridge/Secret 路径,但不得因为当前使用 `local-k3s` 删除外置配置。
复验 NC01 `v0.3` user-billing 管理闭环时使用 `https://hwlab.pikapython.com`。最小 smoke 应覆盖:`/health/live` revision 指向目标 source commitadmin Web session 登录;admin 创建/list/disable redeem code;普通用户注册或登录后兑换 code;重复兑换 one-time code 不重复入账;admin redemptions 和 ledger 能查到同一 ledger/redemptionsubscription/payment summary 在没有真实 provider 配置时明确返回 `unconfigured``/billing``/admin/billing` 页面加载且部署 bundle 包含对应 endpoint。验证输出只能记录对象 id、prefix、状态、计数和 redacted presence,不能打印 bootstrap admin password、raw redeem code、API key secret、DB DSN 或 provider token。
复验 NC01 `v0.3` user-billing 管理闭环时遵循以下口径:
- 入口必须从 `config/hwlab-node-lanes.yaml#lanes.v03.targets.NC01.publicExposure` 读取;
- 当前 development 入口为 `http://152.53.229.148:32009`
- 最小 smoke 应覆盖:
- `/health/live` revision 指向目标 source commit
- admin Web session 登录和 admin 创建、查询、停用 redeem code
- 普通用户注册或登录后兑换 code,重复兑换 one-time code 不重复入账;
- admin redemptions 和 ledger 能查到同一 ledger/redemption
- subscription/payment summary 在没有真实 provider 配置时明确返回 `unconfigured`
- `/billing``/admin/billing` 页面加载且部署 bundle 包含对应 endpoint
- 验证输出只能记录对象 id、prefix、状态、计数和 redacted presence,不能打印 bootstrap admin password、raw redeem code、API key secret、DB DSN 或 provider token。
真实 payment provider、外部支付回调、订单结算和增长活动策略不是 #1176 完成态的一部分。只有当 `config/hwlab-node-lanes.yaml` 或 HWLAB 自有受控 YAML 明确声明 provider/sourceRef,并且 Secret sync、回调入口、ledger/order 状态机和 public end-to-end smoke 都齐备时,才可以把 NC01 `v0.3` 从 provider-agnostic placeholder 扩展到真实支付;不得通过硬编码 provider、手写 k8s Secret、临时 SQL 或 Cloud API 平行账本绕过 user-billing authority。
@@ -160,7 +174,17 @@ HWLAB 公网 FRP server 由 master server 上的 `hwlab-frps-dev` 容器承担
当前 HWLAB FRP server allowlist 至少应覆盖 `config/hwlab-node-lanes.yaml` 中 NC01 active target 声明的 publicExposure 入口以及仍被明确使用的维护端口。旧节点历史端口只作为历史对照,不应作为新增 runtime 入口要求。新增端口或域名必须对应 NC01 的明确 node/lane/namespace/runtime 入口,不能把大范围端口段作为默认放行策略。
FRP 维护验证顺序是:确认 `hwlab-frps-dev``config/hwlab-node-lanes.yaml` 指定的 publicExposure 入口仍挂载/渲染目标配置;重启或 apply 后用等价只读命令确认 FRP/Caddy 正在监听目标公网端口或 hostname;再在 NC01 目标 namespace 查看 `frpc` 日志,确认对应 proxy `start proxy success`;最后验证 NC01 active runtime 入口。NC01 `v0.3` 验证使用 `https://hwlab.pikapython.com`
FRP 维护验证顺序
- 确认 `hwlab-frps-dev``config/hwlab-node-lanes.yaml` 指定的 publicExposure 入口仍挂载或渲染目标配置;
- 重启或 apply 后用等价只读命令确认 FRP/Caddy 正在监听目标公网端口或 hostname;
- 在 NC01 目标 namespace 查看 `frpc` 日志,确认对应 proxy `start proxy success`
- 最后验证 NC01 active runtime 入口。
入口必须从所选 lane 的 target 读取:
- 当前 development `NC01/v03` 使用 `http://152.53.229.148:32009`
- production release lane `NC01/production` 使用 `https://hwlab.pikapython.com`
当 public URL 返回 404/502 或 Caddy local probe 失败时,不要只凭某个历史端口、旧 worktree YAML 或当前 Caddyfile 猜测修复方向。先对齐三层事实:UniDesk `config/hwlab-node-lanes.yaml` 的 publicExposure、目标 runtime GitOps/ConfigMap 渲染出的 `frpc` 配置、以及 PK01 loopback 对每个 FRP remote port 的真实响应;同时查看 `frpc` 日志中对应 proxy 是 `start proxy success``port already used` 还是 `port not allowed`。Caddy 主站的 API 路径应指向 edge-proxy,上层 Web/auth/OpenCode iframe 路径应由 Cloud Web 处理;若三层事实不一致,先修拥有该事实的 YAML/source,再用受控 public-exposure 或 GitOps render 收敛,不能手工把 Caddy 临时指向看似可用的旧端口。