Skip to content

控制平面服务初始化:租户开通编排(Helm SDK + K8s client) #1

@JIAQIA

Description

@JIAQIA

背景

多租户控制平面服务实现。设计见主仓 docs/00-主仓初始化-spec.md §2.3 与架构 05-多租户与控制平面

核心定位:控制平面是一等 K8s 编排者,经 Helm SDK + Kubernetes client 命令式开通租户,生产期不依赖 Git/Argo

任务清单(DoD)

工程基座(独立可构建运行)

  • Spring Boot 服务骨架(<parent> + import BOM,Maven 坐标引用,见 libs-java:platform-parent + BOM + starter-tenant,发布 GitHub Packages hashmatrix#1);只 clone 本仓即可 mvn package
  • 本地独立运行/调试docker-compose.local.yml 起依赖(PostgreSQL + Keycloak,K8s 用 kind/可 mock);Dockerfile/actuator/health 通过
  • 复用主仓 starter-test(JUnit5 + Testcontainers);Mock 数据脱敏acme/tenant-demo

控制平面业务

  • 租户目录持久化(PostgreSQL)+ 状态机(registered→approving→provisioning→active→suspended→deleted)
  • 开通流程:自助注册 → 审批门控 → 自动 provision
  • Keycloak Admin API 集成:建 Organization + 管理员(+ 可选联邦客户 AD)
  • K8s 编排:Helm SDK/CLI 包装 + Kubernetes Java client(建 namespace / ResourceQuota / NetworkPolicy / 服务实例)
  • 数据开通:schema/db(PG) + Doris/Paimon catalog/database
  • External Secrets Operator 注入租户 secrets
  • 配额:ResourceQuota + 业务配额(用户数/数据量/作业数)硬限;metering 计费仅预留接口
  • 单测 + 集成测试(开通时序端到端)

约束

  • 🔴 红线见 CLAUDE.md(公开仓,禁甲方信息,示例脱敏)。
  • 租户 provision 不耦合 Git/Argo;Argo 仅用于平台基座(可选)。
  • 运营管理 UI 是 webuiapps/admin(管理平面),本仓只提供 API。

DoD

测试集群上 provision 一个 tenant-demo 全链路(身份 + namespace + schema/db + 服务实例 + secrets)打通。

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions