Files
configcenter/REMAINING_TASKS.md

6.0 KiB
Raw Blame History

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.GetConfigConfigService.WatchConfig,复用现有 Store、WatchHub、灰度匹配和 RBAC 逻辑。
  • 在 gRPC 层落实 start_revision 契约:0 表示首次订阅;>0 表示第一个期望接收的 revisionSDK 使用 last_seen_revision + 1 重连revision 已 compact 时返回最新完整快照并从 snapshot_revision + 1 继续监听。
  • 实现 AdminService.PublishConfigAdminService.RollbackConfig,保持与 REST API 相同的 Outbox、审计和权限语义。
  • 增加 JWT metadata unary/stream interceptor、gRPC TLS、健康检查、优雅停机、错误码映射和请求指标。
  • 增加 bufconn 集成测试,覆盖读取、指定 revision 回放、compact 全量恢复、客户端主动断线后重新建流、发布、回滚、无权限和过期令牌。
  • Go/Python SDK 增加 gRPC transportREST/SSE transport 在迁移期继续兼容。

完成标准gRPC 与 REST 对同一配置范围返回一致结果;断线恢复测试无丢失;认证、竞态检查、静态检查和端到端测试全部通过。

P1上线阻断生产 mTLS 与灾备实地验收

  • 签发 etcd server、peer、client 证书,覆盖 etcdetcd.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 负责生效配置与 revisionetcd Watch + WatchHub 负责运行时变更分发Web Console 使用 release status 查询发布结果。

完成标准:生产架构中不存在“已部署但未使用”的 Redis运行时不存在 Redis 客户端依赖和隐式调用链。

P3发布工程化

  • CI 执行 Go 单元测试与 race、golangci-lint、govulncheck、前端构建、YAML/Compose 校验、migration 规则检查和生成代码漂移检查。
  • 增加 tag Release workflow构建并推送 server/web 的 linux/amd64linux/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.PATCH tag 上验证 GHCR push、SBOM artifact、Cosign OIDC 签名/验签的真实 GitHub 执行结果,并记录最终 image digest。
  • 在预生产执行持续压测和故障注入,验证 p95、错误率、Outbox 积压和 Watch 重连告警。

仓库侧发布工程已完成;本地 server/web 最终镜像 HIGH/CRITICAL 扫描均为 0。完成标准仍要求首个真实 tag 的远端制品链验证,以及预生产持续压测/故障注入达到既定 SLO。

推荐实施顺序

  1. 固定 revision / Watch / Outbox 一致性模型。 已完成。
  2. gRPC 代码生成、服务端和 SDK transport。 已完成。
  3. 审计控制台与用户生命周期,并明确 JWT 即时失效策略。 已完成。
  4. Redis ADR 和清理。 已完成,结论为移除 Redis。
  5. CI/CD、制品签名、SBOM、漏洞扫描和发布规则。 仓库实现完成,待首个真实 tag 验证远端制品链。
  6. 预生产 mTLS、备份恢复、故障演练与生产准入验收。