6.0 KiB
6.0 KiB
Config Center 后续任务
更新时间:2026-08-30
当前基线已经完成 REST/SSE 管理面与运行时分发、PostgreSQL Outbox、etcd、JWT/RBAC、灰度规则、Web Console、Go/Python SDK、监控告警、压测和 Kubernetes 高可用清单。本文件仅记录尚未完成或必须在真实生产环境验收的工作。
P1(功能阻断):实现正式 gRPC 服务
- 固定 Runtime revision / Watch / Outbox 一致性模型:统一使用 etcd MVCC revision;普通断线从未消费 revision 继续;仅 compact 时回退到
FULL_SYNC,见docs/adr/0001-runtime-revision-watch.md。 - 为
api/proto/configcenter/v1/config.proto增加可重复执行的 Go/Python 代码生成流程,并在 CI 中检查生成代码未漂移。 - 实现
ConfigService.GetConfig与ConfigService.WatchConfig,复用现有 Store、WatchHub、灰度匹配和 RBAC 逻辑。 - 在 gRPC 层落实
start_revision契约:0表示首次订阅;>0表示第一个期望接收的 revision;SDK 使用last_seen_revision + 1重连;revision 已 compact 时返回最新完整快照并从snapshot_revision + 1继续监听。 - 实现
AdminService.PublishConfig与AdminService.RollbackConfig,保持与 REST API 相同的 Outbox、审计和权限语义。 - 增加 JWT metadata unary/stream interceptor、gRPC TLS、健康检查、优雅停机、错误码映射和请求指标。
- 增加 bufconn 集成测试,覆盖读取、指定 revision 回放、compact 全量恢复、客户端主动断线后重新建流、发布、回滚、无权限和过期令牌。
- Go/Python SDK 增加 gRPC transport;REST/SSE transport 在迁移期继续兼容。
完成标准:gRPC 与 REST 对同一配置范围返回一致结果;断线恢复测试无丢失;认证、竞态检查、静态检查和端到端测试全部通过。
P1(上线阻断):生产 mTLS 与灾备实地验收
- 签发 etcd server、peer、client 证书,覆盖
etcd、etcd.configcenter.svc.cluster.local和*.etcd-peer.configcenter.svc.cluster.local。 - 在预生产三节点集群验证双向 TLS、证书轮换、NetworkPolicy、节点滚动重启和 quorum 故障恢复。
- 将 etcd snapshot 与 PostgreSQL dump 从集群内 PVC 复制到异地对象存储,配置加密、保留周期和失败告警。
- 定期演练 etcd snapshot restore 与 PostgreSQL restore,记录实际 RPO/RTO 和恢复操作手册。
- 替换 Kubernetes 清单中的镜像、域名、存储类和资源参数占位值,使用不可变镜像 digest。
完成标准:预生产恢复演练成功;备份可校验、可恢复且有告警;证书轮换期间配置读取和 Watch 不发生不可接受的中断。
P2:审计控制台与用户生命周期
- 为审计日志 API 增加 actor、action、target type、时间范围和基于审计 ID 的游标分页过滤。
- Web Console 增加审计页面、筛选条件、详情查看和上一页/下一页游标分页。
- 增加用户启用/禁用、密码重置和删除接口及管理页面。
- 防止删除或禁用最后一个管理员,并禁止当前管理员通过管理接口禁用、重置密码或删除自身账号。
- JWT 即时失效采用
users.token_version:登录令牌携带版本,每次认证校验当前用户状态与版本;用户禁用、密码重置和应用角色变更立即递增版本,删除用户后令牌立即失效。 - 用户状态、密码重置和角色变更全部写入审计日志;已补齐 PostgreSQL 真实集成测试、内存 Store 和 HTTP 权限/令牌失效测试。
完成标准:管理员可完整管理用户生命周期并追溯操作;越权、最后管理员保护和令牌失效场景都有自动化测试。
P2:明确 Redis 去留
- 编写 ADR,确认当前不存在必须依赖 Redis 的跨实例缓存、发布状态通知或事件总线场景。
- 从 Compose、架构说明和相关残留描述中移除 Redis,避免产生无效运维成本。
- 明确替代链路:PostgreSQL Outbox 负责可靠发布,etcd 负责生效配置与 revision,etcd Watch + WatchHub 负责运行时变更分发,Web Console 使用 release status 查询发布结果。
完成标准:生产架构中不存在“已部署但未使用”的 Redis;运行时不存在 Redis 客户端依赖和隐式调用链。
P3:发布工程化
- CI 执行 Go 单元测试与 race、golangci-lint、
govulncheck、前端构建、YAML/Compose 校验、migration 规则检查和生成代码漂移检查。 - 增加 tag Release workflow:构建并推送 server/web 的
linux/amd64、linux/arm64镜像,生成 SPDX SBOM,执行依赖/最终镜像 HIGH/CRITICAL 漏洞阻断,并使用 GitHub OIDC + Cosign 对镜像 digest 做 keyless 签名和验签。 - 建立 SemVer tag、
CHANGELOG.md、构建版本追溯、数据库 migration append-only/expand-migrate-contract 规则及应用回滚准入检查,见docs/release-policy.md。 - 在首个正式
vMAJOR.MINOR.PATCHtag 上验证 GHCR push、SBOM artifact、Cosign OIDC 签名/验签的真实 GitHub 执行结果,并记录最终 image digest。 - 在预生产执行持续压测和故障注入,验证 p95、错误率、Outbox 积压和 Watch 重连告警。
仓库侧发布工程已完成;本地 server/web 最终镜像 HIGH/CRITICAL 扫描均为 0。完成标准仍要求首个真实 tag 的远端制品链验证,以及预生产持续压测/故障注入达到既定 SLO。
推荐实施顺序
固定 revision / Watch / Outbox 一致性模型。已完成。gRPC 代码生成、服务端和 SDK transport。已完成。审计控制台与用户生命周期,并明确 JWT 即时失效策略。已完成。Redis ADR 和清理。已完成,结论为移除 Redis。CI/CD、制品签名、SBOM、漏洞扫描和发布规则。仓库实现完成,待首个真实 tag 验证远端制品链。- 预生产 mTLS、备份恢复、故障演练与生产准入验收。