feat: 接入管理 Secret 凭据与连接刷新 #6

Merged
panxiao81 merged 4 commits from feat/database-admin-credentials into main 2026-09-24 14:45:58 +00:00
Owner

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。

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。
panxiao81 added 1 commit 2026-09-21 08:35:26 +00:00
feat: 接入管理 Secret 凭据与连接刷新
Verify / test (pull_request) Successful in 4m45s
Verify / lint (pull_request) Successful in 7m5s
Verify / database-integration (pull_request) Failing after 11m1s
c110aceb0f
panxiao81 added 1 commit 2026-09-21 15:48:29 +00:00
fix: 在 Pod CI 初始化 Docker 并保留 fixture 诊断
Verify / database-integration (pull_request) Failing after 58s
Verify / test (pull_request) Successful in 11m30s
Verify / lint (pull_request) Successful in 13m59s
505aeb8e50
panxiao81 added 1 commit 2026-09-21 15:51:15 +00:00
fix: 不将 Docker 数据目录独立挂载作为启动前置条件
Verify / database-integration (pull_request) Failing after 11m16s
Verify / lint (pull_request) Successful in 15m38s
Verify / test (pull_request) Successful in 16m2s
fb2c34ce46
panxiao81 added 1 commit 2026-09-21 15:59:21 +00:00
fix: 按 runner 默认提供 Docker 的约定仅执行预检
Verify / test (pull_request) Successful in 5m45s
Verify / lint (pull_request) Successful in 7m44s
Verify / database-integration (pull_request) Successful in 11m42s
3d91abe380
panxiao81 merged commit 77848c7dc8 into main 2026-09-24 14:45:58 +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#6