feat: OpenBao Kubernetes 认证与短期会话续期 #13

Open
panxiao81 wants to merge 4 commits from feat/database-openbao-auth into main
Owner

设计与分层

Kubernetes 是控制面 API,不是 controller 的部署前提。systemd 与 Pod 共用 manager 的标准 --kubeconfig / KUBECONFIG 或 in-cluster 配置,不读取 Pod 投射文件,也不另建身份体系。

公共 infra 管理连接、认证与官方读写能力;领域按需要维护 repository/adapter。连接共享不扩大授权,不引入万能仓储或全局注册中心。

实现

  • internal/infra/openbao 提供官方 SDK client 的 HTTPS/CA、禁自动重试策略和 KubernetesSession;公共层不依赖 Database。
  • 每次登录使用 manager.GetClient().SubResource("token").Create,按固定 SA/audience 申请短期 JWT。SDK helper 和 LifetimeWatcher 管理登录续期;失败不回退静态 token。
  • Database Secret reader 注入 manager.GetAPIReader(),保持直连且不缓存秘密;不重复创建 Kubernetes client。
  • Database 凭据 adapter 保留七键、UID 路径、CAS=0、回读与冲突/不确定结果语义,不修改共享 client 配置。
  • 启动入口仅负责参数、装配、Runnable/readiness;示例 RBAC 精确限制 TokenRequest,controller 不自动授予权限。
  • 测试与 lint 入口同时覆盖公共 infra;源码架构和 wiki 同步边界。

验证

  • make test、默认 lint、集成标签 lint 通过。
  • 全部真实 PostgreSQL + API Server + OpenBao race 集成通过;最终 Bao 重试策略整理后再跑真实 Bao/infra race 通过。
  • 无 Pod 的受限 kubeconfig 启动 manager,验证 JWT、续期、越权拒绝、RBAC 撤回/恢复和凭据读取恢复。
  • Secret 轮换、缺失后出现、删除和受限 manager 场景回归通过。
  • 公共 infra 单测覆盖环境身份隔离、TLS 验证、禁重试、认证失败和生命周期。
  • 文档与 diff 检查通过。远端新 head CI 另行确认。

后续

Database 稳定凭据位置、已确认供应步骤、PostgreSQL 创建和 ESO 交付仍未接入。本 PR 不部署生产配置,不签发生产 kubeconfig,不触发实际建库。

## 设计与分层 Kubernetes 是控制面 API,不是 controller 的部署前提。systemd 与 Pod 共用 manager 的标准 --kubeconfig / KUBECONFIG 或 in-cluster 配置,不读取 Pod 投射文件,也不另建身份体系。 公共 infra 管理连接、认证与官方读写能力;领域按需要维护 repository/adapter。连接共享不扩大授权,不引入万能仓储或全局注册中心。 ## 实现 - internal/infra/openbao 提供官方 SDK client 的 HTTPS/CA、禁自动重试策略和 KubernetesSession;公共层不依赖 Database。 - 每次登录使用 manager.GetClient().SubResource("token").Create,按固定 SA/audience 申请短期 JWT。SDK helper 和 LifetimeWatcher 管理登录续期;失败不回退静态 token。 - Database Secret reader 注入 manager.GetAPIReader(),保持直连且不缓存秘密;不重复创建 Kubernetes client。 - Database 凭据 adapter 保留七键、UID 路径、CAS=0、回读与冲突/不确定结果语义,不修改共享 client 配置。 - 启动入口仅负责参数、装配、Runnable/readiness;示例 RBAC 精确限制 TokenRequest,controller 不自动授予权限。 - 测试与 lint 入口同时覆盖公共 infra;源码架构和 wiki 同步边界。 ## 验证 - make test、默认 lint、集成标签 lint 通过。 - 全部真实 PostgreSQL + API Server + OpenBao race 集成通过;最终 Bao 重试策略整理后再跑真实 Bao/infra race 通过。 - 无 Pod 的受限 kubeconfig 启动 manager,验证 JWT、续期、越权拒绝、RBAC 撤回/恢复和凭据读取恢复。 - Secret 轮换、缺失后出现、删除和受限 manager 场景回归通过。 - 公共 infra 单测覆盖环境身份隔离、TLS 验证、禁重试、认证失败和生命周期。 - 文档与 diff 检查通过。远端新 head CI 另行确认。 ## 后续 Database 稳定凭据位置、已确认供应步骤、PostgreSQL 创建和 ESO 交付仍未接入。本 PR 不部署生产配置,不签发生产 kubeconfig,不触发实际建库。
panxiao81 added 1 commit 2026-09-25 19:40:34 +00:00
feat: 接入 OpenBao Kubernetes 认证与短期会话续期
Verify / test (pull_request) Successful in 15m55s
Verify / lint (pull_request) Successful in 17m56s
Verify / database-integration (pull_request) Successful in 19m54s
dcf9ab50df
panxiao81 added 1 commit 2026-09-25 21:02:14 +00:00
fix: 复用 manager kubeconfig 通过 TokenRequest 登录 OpenBao
Verify / lint (pull_request) Successful in 11m47s
Verify / database-integration (pull_request) Successful in 15m24s
Verify / test (pull_request) Successful in 16m41s
f0aa86f676
panxiao81 added 1 commit 2026-09-25 21:38:59 +00:00
refactor: OpenBao 认证复用 manager Kubernetes client
Verify / test (pull_request) Successful in 4m36s
Verify / lint (pull_request) Successful in 12m25s
Verify / database-integration (pull_request) Successful in 15m49s
c20f8930f0
panxiao81 added 1 commit 2026-09-25 21:55:31 +00:00
refactor: 分离公共基础设施与 Database 适配器
Verify / lint (pull_request) Successful in 13m32s
Verify / test (pull_request) Successful in 14m5s
Verify / database-integration (pull_request) Successful in 15m1s
65c60cca45
All checks were successful
Verify / lint (pull_request) Successful in 13m32s
Verify / test (pull_request) Successful in 14m5s
Verify / database-integration (pull_request) Successful in 15m1s
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/database-openbao-auth:feat/database-openbao-auth
git checkout feat/database-openbao-auth
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#13