feat: 接通 Database 凭据准备闭环 #14

Merged
panxiao81 merged 2 commits from feat/database-credential-checkpoint into main 2026-09-27 18:57:36 +00:00
Owner

一个完整行为:为已绑定的 Provision Database 准备应用凭据

检查双向绑定、Instance 当前身份与 Ready、finalizer 和删除状态 → 固定凭据位置 → 观察是否已有值 → 记录创建开始 → Bao CAS=0 创建并回读 → 持久确认版本。

默认停用外部写入;配置 OpenBao 认证并显式指定 --database-credential-mount 后启用。复用同一公共 Bao client 与 manager Kubernetes client,不增加认证实例、连接池或 registry。

Review 入口

  1. internal/database/application/credential_preparation.go 与 credential_target.go:执行顺序、资格检查和恢复决定。
  2. internal/database/adapter/kubernetes/credential_resources.go:快照读取、resourceVersion 写入保护、相关依赖回查与 CRD 字段裁剪保护。
  3. internal/database/controller/credential_controller.go 与 bootstrap/database.go:薄 controller、watch、30 秒重查及显式启用装配。

失败边界

  • 已有凭据无确认记录:Conflict,不认领或覆盖。
  • 创建开始后没有成功确认:新一轮协调转 Conflict,即使进程可能在实际请求前退出;不重新生成密码。
  • 明确未执行写入的权限拒绝可重试;响应丢失、回读失败、确认保存失败均保守停止。
  • 确认后的读取故障保留版本;删除、版本漂移或连接目标变化不生成替代密码。
  • 无关 Tenant/Instance Conditions 刷新不造成假冲突;实际绑定、generation、删除与 Ready 变化仍停止旧操作。
  • 条件 CredentialsReady=True 不表示 Database/Tenant Ready。

验证

  • make test、make build、普通与 integration lint 通过。
  • make test-database-integration 通过:真实 PostgreSQL、OpenBao、API server 与 bootstrap。
  • Bao 包两轮 race 回归;专门的真实 manager watch/重启测试再次两轮通过。
  • 新测试覆盖并发、依赖恢复、未确认已有值、写入结果不确定、确认保存失败、创建中删除、位置不迁移以及 API 裁剪字段时拒绝外部写入。
  • 文档检查通过;生产未部署。

不包含

不创建 PostgreSQL role/database,不安装扩展,不导入已有数据库,不做 ESO 交付、Retain 释放或 Delete 清理。下一片在 review 后推进 PostgreSQL 基础供应,不继续增加无消费者的基础组件。

## 一个完整行为:为已绑定的 Provision Database 准备应用凭据 检查双向绑定、Instance 当前身份与 Ready、finalizer 和删除状态 → 固定凭据位置 → 观察是否已有值 → 记录创建开始 → Bao CAS=0 创建并回读 → 持久确认版本。 默认停用外部写入;配置 OpenBao 认证并显式指定 --database-credential-mount 后启用。复用同一公共 Bao client 与 manager Kubernetes client,不增加认证实例、连接池或 registry。 ## Review 入口 1. internal/database/application/credential_preparation.go 与 credential_target.go:执行顺序、资格检查和恢复决定。 2. internal/database/adapter/kubernetes/credential_resources.go:快照读取、resourceVersion 写入保护、相关依赖回查与 CRD 字段裁剪保护。 3. internal/database/controller/credential_controller.go 与 bootstrap/database.go:薄 controller、watch、30 秒重查及显式启用装配。 ## 失败边界 - 已有凭据无确认记录:Conflict,不认领或覆盖。 - 创建开始后没有成功确认:新一轮协调转 Conflict,即使进程可能在实际请求前退出;不重新生成密码。 - 明确未执行写入的权限拒绝可重试;响应丢失、回读失败、确认保存失败均保守停止。 - 确认后的读取故障保留版本;删除、版本漂移或连接目标变化不生成替代密码。 - 无关 Tenant/Instance Conditions 刷新不造成假冲突;实际绑定、generation、删除与 Ready 变化仍停止旧操作。 - 条件 CredentialsReady=True 不表示 Database/Tenant Ready。 ## 验证 - make test、make build、普通与 integration lint 通过。 - make test-database-integration 通过:真实 PostgreSQL、OpenBao、API server 与 bootstrap。 - Bao 包两轮 race 回归;专门的真实 manager watch/重启测试再次两轮通过。 - 新测试覆盖并发、依赖恢复、未确认已有值、写入结果不确定、确认保存失败、创建中删除、位置不迁移以及 API 裁剪字段时拒绝外部写入。 - 文档检查通过;生产未部署。 ## 不包含 不创建 PostgreSQL role/database,不安装扩展,不导入已有数据库,不做 ESO 交付、Retain 释放或 Delete 清理。下一片在 review 后推进 PostgreSQL 基础供应,不继续增加无消费者的基础组件。
panxiao81 added 1 commit 2026-09-27 18:08:52 +00:00
feat: 固定 Database 凭据位置与确认版本
Verify / test (pull_request) Successful in 13m42s
Verify / lint (pull_request) Successful in 14m26s
Verify / database-integration (pull_request) Successful in 16m16s
371248659b
panxiao81 added 1 commit 2026-09-27 18:35:15 +00:00
feat: 接通 Database 凭据准备闭环
Verify / test (pull_request) Successful in 11m23s
Verify / lint (pull_request) Successful in 12m18s
Verify / database-integration (pull_request) Successful in 13m49s
35ada6d7eb
panxiao81 changed title from feat: 固定 Database 凭据位置与确认版本 to feat: 接通 Database 凭据准备闭环 2026-09-27 18:35:47 +00:00
panxiao81 merged commit 72ce3eda40 into main 2026-09-27 18:57:36 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: panxiao81/ayatori#14