refactor: 集中显式注入并归位凭据领域规则
Verify / test (pull_request) Successful in 13m29s
Verify / lint (pull_request) Successful in 14m13s
Verify / database-integration (pull_request) Successful in 15m48s

This commit is contained in:
2026-09-27 19:16:48 +00:00
parent 72ce3eda40
commit 7834cab97f
34 changed files with 612 additions and 259 deletions
+11
View File
@@ -56,6 +56,17 @@ Makefile 与 Dockerfile 均继续构建 `cmd/main.go`。
条件分支,也不为此引入插件注册框架。组件启动失败时释放已装配资源,正常退出则先停止
manager worker,再释放连接。
Database 使用 Wire 式的显式构造函数注入,目前手写装配,不引入 Wire 生成器、Dig/Fx
容器或运行时服务查找。`database_wiring.go` 集中展示 repository → 用例 → controller 的
对象构造;`registerDatabaseControllers` 负责注册,返回的 `closeDatabaseConnections`
只在 worker 停止后关闭 Instance 连接。controller 在启动时接收完整依赖,不在 Reconcile
或 SetupWithManager 中补建 adapter/service;缺失依赖在注册时失败。
domain 持有凭据值对象、准备资格与创建恢复规则;application 只组织读写、调用领域判断
和保存结果。用例需要的 repository 接口与并发快照仍由消费方定义,不把所有类型都强塞
进领域。Kubernetes adapter 将领域阶段映射为已有 Conditions,领域不依赖其字符串协议。
单测检查 domain/controller 的依赖边界,并验证共享 writer、直连 reader 和服务的注入。
基础设施能力属于整个 controller-manager,不因首个消费者是 Database 就归入该领域。
`internal/infra/openbao` 管理官方 SDK client 的 TLS 配置、Kubernetes 认证及 token 生命周期,
不依赖 Database 或其他产品领域。Bao client 默认禁用自动重试,写入结果不确定时由用例处理;
+4
View File
@@ -183,6 +183,10 @@ Database 已有 `status.credentialRef` 和 `status.credentialVersion` 的字段
顺序为固定位置 → 确认后端尚无凭据 → 保存 CreationStarted → 创建并回读 → 保存确认版本。
`CredentialReconciler` 只负责 Database/Tenant/Instance watch 和 30 秒依赖重查;
Kubernetes repository 负责直接读取及有 resourceVersion 保护的状态更新。
三类 controller 的依赖均在 bootstrap 显式组装,不在 Reconcile 中构造服务。
`domain/credential` 保存应用凭据值对象、准备资格、固定位置与未确认创建的恢复规则;
application 保留 I/O 顺序、消费方接口及并发快照,不再复用绑定用例的快照类型。
领域阶段与 `CredentialsReady`/Reason 的转换由 Kubernetes adapter 负责,已有 API 保持兼容。
外部操作前后回查目标:Database 必须仍是同一 UID/resourceVersion,Tenant/Instance 必须
保持绑定、spec generation、删除状态、finalizer 保护与有效 Ready;无关 Conditions 刷新