feat/database-admin-credentials
main
Instance 管理凭据需要从 controller namespace 的 Kubernetes Secret 获取,并在有效用户名或密码变化时重新建立连接。本变更直接读取 API server,避免使用共享 Secret cache;引用不能选择其他 namespace。缺失、无效或无权读取的 Secret 均返回安全失败。
应用层 InstanceService 适配自原 PostgreSQL Tenant Operator 的 internal/instance/service.go(固定基线 dae546e58efa1be81e930861c87f7fb13bb12113),保留 CredentialReader → Connector → Database 边界及串行释放规则。每轮读取有效凭据,变化时关闭旧连接并重新装配;metadata 和无关字段变化不重建。观测后再次读取 Secret,中途轮换则丢弃结果。UID、endpoint 或引用变化会释放旧连接,Forget/Close 只释放本地资源。
PostgreSQL adapter 仅负责连接、版本查询和关闭,使用原项目已有的 pgxpool v5.11.0;不实现池算法、不读取 Secret,也不负责连接更新调度。通过 pgx LookupFunc 使用 hostaddr 拨号,TLS 仍验证 host;驱动错误不会携带凭据穿过适配器边界。
测试按独立场景和共享 fixture 组织:真实 envtest API server 与一次性 PostgreSQL 覆盖 namespace/RBAC、缺失依赖恢复、有效值轮换与连接复用、中途轮换、超时恢复、服务重建、并发观察/释放、TLS DNS/IP SAN、错误 CA/主机名及禁止明文降级。fixture 不接受外部 DSN,镜像固定摘要,随机回环端口并自动清理。新增 VM runner 集成测试 job,lint 同时检查 integration 标签。
验证:全仓库 lint(含 integration 标签)通过;真实 API/PostgreSQL 集成测试和 race 测试通过;生成文件检查无额外变化,git diff --check 通过。
边界:当前只提供 ObserveVersion,不产生完整 CapabilityObservation 或 Ready;尚未接入 CRD/controller、Secret watch、status/finalizer、registry 与权限探测。resourceVersion 并发保存、ESO 和 Tenant 生命周期由后续切片验证。文档已说明实际可运行命令、来源与验证边界;wiki 的持久设计和使用入口未改变,因此本次不更新 wiki。
No dependencies set.
The note is not visible to the blocked user.
Instance 管理凭据需要从 controller namespace 的 Kubernetes Secret 获取,并在有效用户名或密码变化时重新建立连接。本变更直接读取 API server,避免使用共享 Secret cache;引用不能选择其他 namespace。缺失、无效或无权读取的 Secret 均返回安全失败。
应用层 InstanceService 适配自原 PostgreSQL Tenant Operator 的 internal/instance/service.go(固定基线 dae546e58efa1be81e930861c87f7fb13bb12113),保留 CredentialReader → Connector → Database 边界及串行释放规则。每轮读取有效凭据,变化时关闭旧连接并重新装配;metadata 和无关字段变化不重建。观测后再次读取 Secret,中途轮换则丢弃结果。UID、endpoint 或引用变化会释放旧连接,Forget/Close 只释放本地资源。
PostgreSQL adapter 仅负责连接、版本查询和关闭,使用原项目已有的 pgxpool v5.11.0;不实现池算法、不读取 Secret,也不负责连接更新调度。通过 pgx LookupFunc 使用 hostaddr 拨号,TLS 仍验证 host;驱动错误不会携带凭据穿过适配器边界。
测试按独立场景和共享 fixture 组织:真实 envtest API server 与一次性 PostgreSQL 覆盖 namespace/RBAC、缺失依赖恢复、有效值轮换与连接复用、中途轮换、超时恢复、服务重建、并发观察/释放、TLS DNS/IP SAN、错误 CA/主机名及禁止明文降级。fixture 不接受外部 DSN,镜像固定摘要,随机回环端口并自动清理。新增 VM runner 集成测试 job,lint 同时检查 integration 标签。
验证:全仓库 lint(含 integration 标签)通过;真实 API/PostgreSQL 集成测试和 race 测试通过;生成文件检查无额外变化,git diff --check 通过。
边界:当前只提供 ObserveVersion,不产生完整 CapabilityObservation 或 Ready;尚未接入 CRD/controller、Secret watch、status/finalizer、registry 与权限探测。resourceVersion 并发保存、ESO 和 Tenant 生命周期由后续切片验证。文档已说明实际可运行命令、来源与验证边界;wiki 的持久设计和使用入口未改变,因此本次不更新 wiki。