Skip to content

M1 自拆解简报 · 入口级交付 #14

@JIAQIA

Description

@JIAQIA

M1 自拆解简报 · 主仓 hashmatrix(deploy + contracts + libs + 协调)

粗粒度里程碑简报。目的:只读本简报 + 本仓代码即可自行拆出可执行子任务并自验收,无需再问人。
上位总纲:docs/milestones/M1-单命名空间端到端贯通.md(端口基线 §3、决策 D1–D6、推进顺序 §5)。

0. 一句话目标

让"一条 helm install 把平台装进单个 namespace 起 Pod"成为现实,并把契约/部署/身份的全局规则补齐到不阻塞各子仓。

1. 起点 · 代码现状

  • deploy/charts/tenant(真实,7 模板:ns/quota/limit/netpol/tenant-context/services/externalsecret)、privacy(真实,engine-py+orchestrator-java 两 Deployment)、platform(umbrella,file://../<svc> 依赖 + baseNamespaces 建 4 个 ns);其余 7 个子 chart 仅 templates/NOTES.txt 占位image.repository=""
  • deploy/values/values.yaml(共享) + values-{prod,test,xc}.yaml + values-tenant-<id>.yaml;三层叠加。校验脚本 deploy/scripts/{validate,secrets-guard,tenant-diff}.sh;CI .github/workflows/deploy-ci.yml
  • contracts/:OpenAPI3.1 + AsyncAPI + proto(buf) + ICD;registry.yaml(8 契约 draft)、.spectral.yamlcontracts-ci.yml(Spectral+buf 已跑,oasdiff 破坏性门是 TODO @ contracts-ci.yml:60);传播模板 contracts/integration.md⚠️ contracts/icd/tenant-context-headers-icd.md §3.4 现写死「多 org→403」,与 D1/D2 冲突。
  • libs-java/starter-tenantTenantContext{tenantId,org} + TenantContextFilter 解析 X-Tenant-Id)、starter-securityGatewayPreAuthFilter 信任网关 X-User/X-Roles + @PreAuthorize)。已发 0.2.0。

2. 范围边界

  • ✅ M1:黄金 Deployment 模板范式;单 ns demo values;contracts 三处治理(ICD 修订 + oasdiff + error-envelope);D1/D2 落档;webui 纳入/排除 Helm 标准的决断。
  • ⛔ 不做:Argo CD 自动化、CDC/Pact 契约测试、xc 信创全量镜像接线、多 ns 生产拓扑。

3. 工作项 & 拆分指引

WP1 黄金 Deployment 模板范式(解 7 个占位子 chart 的阻塞)

  • 要达成:给 deploy/charts/control-plane(或 governance)写真实 Deployment+Service+readiness/liveness probe,作为其余子 chart 可复制的范式。
  • 入手点:照抄 deploy/charts/privacy/templates/orchestrator-java.yamldeploy/charts/tenant/templates/services.yaml 的写法;helpers 仿 deploy/charts/tenant/templates/_helpers.tpl
  • 可拆:- [ ] 写 1 个范式子 chart - [ ] 抽公共 _helpers.tpl/labels - [ ] 其余 6 个按范式补(可作独立子任务/分人)。
  • 验收:helm template deploy/charts/control-plane 出完整工作负载;deploy/scripts/validate.sh test 通过。

WP2 单 ns demo values(一条命令起 Pod)

  • 要达成:deploy/values/values-localdev.yamlbaseNamespaces.create=false、ESO/NetPol 关、本地 image tag、≥1 服务 enabled=true
  • 参考:现有 values-test.yamltools/local-infra 起 kind + kind load docker-image
  • 验收:helm install platform deploy/charts/platform -n demo -f values-localdev.yamlkubectl get po -n demo 有 Running。

WP3 deploy/README 落 D5 + webui 归属

  • 要达成:写明「子仓交付 Dockerfile/image、主仓 owns charts」;决断 webui 是否进 umbrella(建 charts/webui 或文档化排除)。

WP4 contracts 治理三件

  • ICD:改 tenant-context-headers-icd.md §3.4(多 org→403 ⇒ 解析到单活动租户、头/模型预留多 membership,切换经重新换 token)。
  • oasdiff:落地 contracts-ci.yml:60 的破坏性门。
  • error-envelope:新建 contracts/icd/error-envelope-icd.md{code,message,traceId},三个 OpenAPI $ref 之。

WP5 决策落档

  • 把 D1/D2 写入 docs/architecture/05-多租户与控制平面.mdprototype/docs/01-管理中心/02-工作空间与租户开通(自研).md

4. 关键参考

  • 部署标准:deploy/README.mddocs/architecture/04-工程与部署.md;范式:deploy/charts/{privacy,tenant}/templates/*
  • 契约:contracts/README.mdcontracts/CONVENTIONS.mdcontracts/integration.mdcontracts/icd/tenant-context-headers-icd.md
  • 身份:docs/architecture/05-多租户与控制平面.md;libs libs-java/starter-tenantstarter-security

5. 依赖 & 约束

  • 被所有子仓依赖(charts + 契约 + libs);WP1/WP2 是 ③单 ns demo 的前置。
  • D5(charts 归属)、D1/D2(ICD 修订)约束。

6. 完成判据

  • 1 个黄金子 chart 范式 + values-localdev.yaml,单 ns helm install 出 Running Pod
  • ICD §3.4 修订 + oasdiff 门启用 + error-envelope ICD 抽出
  • D1/D2 落档;deploy/README 落 D5 与 webui 归属
  • 提交前过红线自检;validate.sh / contracts-ci 绿

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions