docs: record v0.2 cicd coexistence risks

This commit is contained in:
Codex
2026-05-28 15:02:43 +08:00
parent 331e8de898
commit f2387d2cf7
+37 -1
View File
@@ -87,6 +87,42 @@ CI/CD 的初始化规则:Tekton 执行 `v0.2` lane 时必须先读取 `v0.2-gi
- Argo 边界:`hwlab-g14-v02` 只能指向 `v0.2-gitops:deploy/gitops/g14/runtime-v02``hwlab-v02`
- 入口边界:公网验收只使用 `74.48.78.17:19666/19667`,不得把 `17666/17667``18666/18667` 作为 `v0.2` 通过证据。
## G14 与 v0.2 CI/CD 共存风险
G14 与 `v0.2` 可以共享 G14 k3s、Tekton controller、Argo CD controller、本地 registry 和 Git 仓库,但不得共享发布真相、默认入口和生成物。共存原则是:共享底层设施,隔离 source branch、GitOps branch、artifact catalog、runtime path、namespace、Argo Application、poller/reconciler/PipelineRun 名称和 FRP 入口。
| 风险 | 具体表现 | 化解方式 |
|---|---|---|
| 控制面资源覆盖 | `v0.2` render/apply 覆盖 `hwlab-g14-ci-image-publish``hwlab-g14-branch-poller``hwlab-g14-control-plane-reconciler`。 | `v0.2` 使用独立资源名,例如 `hwlab-v02-ci-image-publish``hwlab-v02-branch-poller``hwlab-v02-control-plane-reconciler`;共享 Tekton controller,不共享具体 Pipeline/CronJob。 |
| 默认值漂移 | 为支持 `v0.2` 修改 G14 默认值,导致现有 DEV/PROD 行为变化。 | G14 默认值完全不动;`v0.2` 必须显式传入 lane/source/gitops/catalog/runtime/namespace/endpoint。 |
| GitOps 写错分支 | `v0.2` promotion 误 push 到 `G14-gitops`。 | promote 前硬校验 `sourceBranch=v0.2``gitopsBranch=v0.2-gitops`,且 changed paths 只能在 `deploy/artifact-catalog.v02.json``deploy/gitops/g14/runtime-v02/**`。 |
| runtime path 串线 | `v0.2` 写入 `runtime-dev``runtime-prod`。 | `v0.2` render 输出路径硬限制为 `deploy/gitops/g14/runtime-v02`;发现 DEV/PROD runtime path 变更直接失败。 |
| artifact catalog 串线 | `v0.2` 读取或复用 `deploy/artifact-catalog.dev.json``G14-gitops` catalog 或 source branch 生成物。 | `v0.2` 只读写 `v0.2-gitops:deploy/artifact-catalog.v02.json`;缺失只能正式初始化或失败,不 fallback。 |
| 旧门禁阻塞 | DEV/D601/main 门禁拦住 `v0.2` 发布。 | 从 `v0.2` 调用链删除旧门禁;需要保护时只新增 `v0.2` 最小检查。 |
| Argo Application 指错 | `hwlab-g14-v02` 指到 `G14-gitops``runtime-dev``hwlab-dev`。 | Application spec 固定为 `v0.2-gitops:deploy/gitops/g14/runtime-v02`destination 固定为 `hwlab-v02`。 |
| namespace 资源串用 | Secret、PVC、ServiceAccount、FRP Deployment 或 runtime Service 复用 DEV/PROD。 | namespace 独立;runtime SecretRef 只在 `hwlab-v02` 内解析;cluster-scoped 资源必须独立命名或禁止进入 `v0.2` runtime。 |
| registry tag/digest 混淆 | G14 和 `v0.2` 使用同服务同 short SHA tag 时被误判为同一运行态。 | runtime manifest 优先 digest pincatalog 必须记录 lane、source branch、GitOps branch 和 source commit。若 lane-specific build args 存在,image tag 必须带 lane 前缀。 |
| 清理任务误删 | stale PipelineRun cleanup、registry GC 或 Argo prune 误触 G14 DEV/PROD。 | cleanup selector 必须带 lane labelregistry GC 以 `G14-gitops``v0.2-gitops` 两个分支的 digest union 作为保护集。 |
| 并发资源争抢 | 两个分支同时 buildG14 DEV rollout 变慢。 | `v0.2` 初期使用较低 poller 频率或手动触发;设置 Pipeline resources requests/limitsG14 DEV/PROD 优先级高于 `v0.2`。 |
| 观测混淆 | 把 `17666/17667``18666/18667` 的结果当成 `v0.2` 通过。 | `v0.2` 验收只认 `19666/19667`health payload 必须能看到 lane、namespace 或 revision 与 `hwlab-v02` 对齐。 |
`v0.2` 第一阶段不得做“一个 Pipeline 入口同时兼容两个分支”的设计。正确做法是:G14 保持现有 poller、reconciler、pipeline 和 GitOps branch 不变;`v0.2` 新增独立 poller、reconciler、pipeline 和 GitOps branch,复用底层脚本库、工具镜像、registry 和 controller。共享实现能力,不共享状态、默认入口或生成物。
## 扩容前必须冻结的决策
开始创建 namespace、改 Tekton/Argo 或触发 `v0.2` CI/CD 前,必须先冻结以下事项;未冻结时只允许继续文档和只读调查。
- `v0.2` CI 控制面资源命名:Pipeline、poller、reconciler、PipelineRun 前缀、ServiceAccount/RBAC label 和 cleanup selector。
- `v0.2-gitops` 初始化方式:首版 branch、首版 `deploy/artifact-catalog.v02.json`、首版 `deploy/gitops/g14/runtime-v02` 的创建责任和提交身份。
- `deploy.json` 的 lane 表达:是新增 `v02` environment,还是新增显式 lane 字段;不能把现有 `dev``prod` 改义成 `v0.2`
- 镜像 tag 策略:若 `v0.2` 与 G14 构建输入完全一致,可共用 digest;若存在 lane-specific build args、配置或基础镜像差异,tag 必须带 lane 前缀。
- SecretRef 与数据面:`hwlab-v02` 使用哪些 Secret 名称、DB/database/schema/PVC 是否独立,以及哪些 key 允许被 runtime 引用。
- Argo CD 边界:Application 名称、project 权限、destination namespace、source branch/path、sync policy 和 prune 范围。
- FRP 边界:`19666/19667` 的 frps 放行、frpc 名称、Service 指向和验收 URL;不得复用 DEV/PROD 端口。
- 最小验收口径:必须明确哪些 checks 算 `v0.2` 通过,哪些旧 DEV/M3/RPT smoke 不进入 `v0.2` gate。
- 回滚/暂停动作:失败时暂停 poller、删除或 suspend Application、保留/删除 namespace 资源的顺序;回滚不得触碰 `hwlab-dev``hwlab-prod`
- 资源配额和优先级:`v0.2` 构建并发、CPU/memory 上限和 poller 频率,必须避免影响 G14 DEV/PROD。
## 实施阶段
1. 文档与 issue 基线
@@ -105,7 +141,7 @@ CI/CD 的初始化规则:Tekton 执行 `v0.2` lane 时必须先读取 `v0.2-gi
- 新增 frpc runtime manifest,只暴露 `19666/19667`,内部服务端口继续按现有 Cloud Web `8080`、edge/API `6667` 约定。
4. Tekton lane 扩容
-`hwlab-ci` 中新增 `v0.2` poller/reconciler,或把现有控制面改为显式多 lane 配置
-`hwlab-ci` 中新增 `v0.2` 独立 poller/reconciler/Pipeline,不复用或覆盖现有 G14 控制面资源名
- `v0.2` PipelineRun 前缀使用 `hwlab-v02-ci-poll-<short12>`,方便和 `hwlab-g14-ci-poll-<short12>` 区分。
- Pipeline 必须 checkout `v0.2` source 和 `v0.2-gitops` generated statebuild/publish helper 可复用现有工具镜像、registry 和 BuildKit 机制,但产物 catalog、GitOps branch、runtime path 必须隔离。