- Remove 名词概述 and 架构描述 sections - Add 需求与边界 section: system boundaries, user stories, key decisions - Add 关键功能 section: resource management, service delivery, subsystem features - Update table of contents and section numbering (4 sections total)
30 KiB
theme, title, author, infoLine, transition, mdc, drawings
| theme | title | author | infoLine | transition | mdc | drawings | ||
|---|---|---|---|---|---|---|---|---|
| frankfurt | XINFRA 平台架构 | 实训小组 | true | slide-left | true |
|
XINFRA 平台需求与架构
layout: default
目录
一、需求与边界
- 系统边界
- 用户故事
- 关键决策
二、关键功能
- 资源纳管
- 服务交付
- 子系统功能
三、架构图
- 平台分层架构
- 部署架构
- 监控告警链路
- 安全认证流程
四、对接子系统
- Wayne · CloudDM
- CacheCloud · Apollo
- Grafana · qpass
section: 需求与边界 layout: center
一、需求与边界
系统边界
graph TB
subgraph XINFRA["XINFRA 平台边界"]
Portal["统一门户<br/>SSO 跳转入口"]
Resource["资源纳管<br/>物理机/虚机/云主机/K8s"]
Service["服务交付入口<br/>跳转 Wayne/CloudDM/Apollo"]
BasicSvc["基础服务交付<br/>Ansible 编排部署"]
DBReview["数据库审核<br/>SQL 工单审批"]
Monitor["监控纳管<br/>对接夜莺展示"]
Config["配置中心接入<br/>Apollo 配置管理"]
Audit["审计中心<br/>登录/操作/任务审计"]
TaskCenter["任务中心<br/>Ansible 执行记录"]
end
subgraph External["专业系统(不在平台内重做)"]
Wayne["Wayne<br/>容器管理"]
CloudDM["CloudDM<br/>SQL 审核"]
Apollo["Apollo<br/>配置中心"]
Grafana["Grafana<br/>监控可视化"]
Nightingale["夜莺<br/>告警引擎"]
CacheCloud["CacheCloud<br/>Redis 管理"]
end
subgraph OutOfScope["不在范围内"]
AI["AI 排障<br/>其他项目负责"]
VMCreate["虚机创建<br/>统一走线下"]
MonitorEngine["自研监控引擎<br/>成本高非重点"]
end
Portal --> Resource & Service & Monitor & Audit
Service -.->|SSO 跳转| Wayne & CloudDM & Apollo
Monitor -.->|数据接入| Nightingale
BasicSvc -.->|自动注册| CloudDM & CacheCloud
style XINFRA fill:#e0f2fe,stroke:#0284c7
style External fill:#f3e8fd,stroke:#9333ea
style OutOfScope fill:#fee2e2,stroke:#dc2626
边界原则:XINFRA 做入口聚合和统一纳管,不替代专业系统;虚机创建走线下,AI 排障由其他项目负责。
系统边界 — 做什么 vs 不做什么
✅ 做什么
| 范围 | 说明 |
|---|---|
| 统一入口 | 一个入口登录,集中展示各子系统和平台能力 |
| 资源台账 | 统一查看物理机、虚机、云主机、K8s 资源 |
| 容器纳管 | 管理 K8s 集群、Namespace、配额和业务线归属 |
| 业务交付 | 跳转 Wayne、CloudDM、Apollo 等系统 |
| 基础服务交付 | 标准化模板 + Ansible 编排 |
| 数据库审核 | SQL 工单、审批、审计 |
| 监控纳管 | 对接夜莺,按业务线展示告警 |
| 权限管理 | 业务线维度授权、子系统角色管理 |
| 审计 | 记录登录、跳转、审批和自动化执行 |
❌ 不做什么
| 范围 | 不做原因 |
|---|---|
| 替代 Wayne、Apollo、CloudDM、夜莺 | 专业系统继续保留 |
| 全量自研监控和告警引擎 | 成本高,非当前重点 |
| 复杂 AI 排障 | 由其他项目负责 |
| 虚机创建主流程 | 统一走线下流程 |
| 大而全的运维平台 | 两个月内不现实,也不必要 |
用户故事 — 资源查看
sequenceDiagram
actor SRE as 业务 SRE
participant XINFRA as XINFRA 主系统
participant CMDB as SINA CMDB
participant Cloud as 云平台 API
participant K8s as RKE2 集群
SRE->>XINFRA: 登录,选择业务线
XINFRA->>CMDB: 同步物理机/虚机数据
XINFRA->>Cloud: 同步云主机数据
XINFRA->>K8s: 查询集群节点状态
XINFRA-->>SRE: 展示全量资源分布<br/>业务线归属 · 节点状态 · 容量概览
场景:运维人员登录 XINFRA 后,直接看到全量资源分布、业务线归属、节点状态和容量概览,不需要在多个 CMDB 和云平台之间来回切换。
用户故事 — 业务交付
sequenceDiagram
actor SRE as 业务 SRE
participant XINFRA as XINFRA 业务交付
participant Wayne as Wayne
participant CloudDM as CloudDM
participant Apollo as Apollo
SRE->>XINFRA: 进入业务交付,选择业务线
XINFRA-->>SRE: 展示可用子系统入口
alt 容器部署
SRE->>XINFRA: 点击 Wayne 卡片
XINFRA->>Wayne: SSO 跳转 + 上下文传递
Wayne-->>SRE: 免登录进入 Wayne
else 数据库变更
SRE->>XINFRA: 点击 CloudDM 卡片
XINFRA->>CloudDM: SSO 跳转 + 上下文传递
CloudDM-->>SRE: 免登录进入 CloudDM
else 配置管理
SRE->>XINFRA: 点击 Apollo 卡片
XINFRA->>Apollo: SSO 跳转 + 上下文传递
Apollo-->>SRE: 免登录进入 Apollo
end
XINFRA->>XINFRA: 记录跳转审计日志
场景:业务 SRE 在 XINFRA 中进入"业务交付",选择对应业务线后跳转到 Wayne、CloudDM 或 Apollo 完成实际操作,平台保留入口、上下文和审计。
用户故事 — 基础服务交付
sequenceDiagram
actor Ops as 运维人员
participant XINFRA as XINFRA 服务目录
participant Ansible as Ansible 控制中心
participant Target as 目标主机/RKE2
participant Reg as 子系统注册
Ops->>XINFRA: 选择 MySQL/Redis/Nginx 服务卡片
XINFRA-->>Ops: 展示标准化模板,填写业务线、规格
Ops->>XINFRA: 确认提交
XINFRA->>Ansible: 提交 playbook 任务
Ansible->>Target: 执行标准化部署
Ansible-->>XINFRA: WebSocket 实时日志推送
XINFRA-->>Ops: 任务中心查看执行进度
Target-->>Reg: 部署完成,自动注册至 CloudDM/CacheCloud
XINFRA-->>Ops: 部署完成通知
场景:运维人员在 XINFRA 中提交 MySQL、Redis 等基础服务交付任务,平台调用 Ansible 控制中心执行标准化部署,并在任务中心查看日志和结果。
用户故事 — 数据库审核
sequenceDiagram
actor Dev as 开发/运维
participant XINFRA as XINFRA 审核入口
participant CloudDM as CloudDM
participant DB as 目标数据库
Dev->>XINFRA: 提交 SQL 工单
XINFRA->>CloudDM: 转发工单至 CloudDM
CloudDM-->>XINFRA: 返回审核状态
actor Reviewer as 审核人
Reviewer->>XINFRA: 查看待审核工单
XINFRA->>CloudDM: 获取工单详情
Reviewer->>XINFRA: 审批通过
XINFRA->>CloudDM: 执行变更
CloudDM->>DB: Sidecar 代理执行 SQL
CloudDM-->>XINFRA: 返回执行结果
XINFRA->>XINFRA: 记录审计日志
XINFRA-->>Dev: 通知执行完成
场景:开发或运维提交 SQL 工单后,审核人可以在 XINFRA 中完成审批、查看执行记录和审计信息,减少线下沟通和手工操作。
用户故事 — 业务线切换场景
场景一:系统运维查看全局
| 步骤 | 操作 |
|---|---|
| 1 | 系统运维登录 XINFRA |
| 2 | 业务线选择器显示"全部业务线" |
| 3 | 资源大盘展示 Kodo、LAS、灵矽、LTOKEN、MAAS 全量数据 |
| 4 | 可切换到任意业务线查看详细资源 |
场景二:业务 SRE 切换业务线
| 步骤 | 操作 |
|---|---|
| 1 | 业务 SRE 登录,默认归属业务线(如 Kodo) |
| 2 | 资源大盘仅展示 Kodo 相关资源 |
| 3 | 点击业务线切换器,切换到 LAS |
| 4 | 资源大盘、子系统入口、监控数据同步切换至 LAS |
场景三:跨业务线操作
| 步骤 | 操作 |
|---|---|
| 1 | 运维人员需要为灵矽部署 Redis |
| 2 | 切换业务线至"灵矽" |
| 3 | 进入服务目录,选择 Redis 卡片 |
| 4 | 提交部署任务,自动关联灵矽 Namespace |
场景四:只读用户查看状态
| 步骤 | 操作 |
|---|---|
| 1 | 只读用户登录,仅能查看授权业务线 |
| 2 | 资源大盘展示授权范围内的只读数据 |
| 3 | 子系统入口灰显,点击提示"无权限" |
| 4 | 可查看监控告警,不可执行操作 |
关键决策 — 入口聚合而非替代
决策
XINFRA 做入口聚合,不替代 Wayne、CloudDM、Apollo 等专业系统。
背景
| 现状 | 问题 |
|---|---|
| 运维需要登录 6+ 个系统 | 入口分散,效率低 |
| 各系统独立认证 | 重复登录,体验差 |
| 操作记录分散在各系统 | 审计困难,无法追溯 |
| 新人不知道该用哪个系统 | 上手门槛高 |
方案对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| 入口聚合(选定) | 开发量小,复用现有系统能力 | 依赖子系统稳定性 |
| 全量自研替代 | 完全可控 | 开发周期长,团队人力不足 |
| 仅做文档指引 | 零开发成本 | 无法解决认证和审计问题 |
预期收益
- 运维人员一个入口完成所有操作
- SSO 免登录跳转子系统
- 统一审计记录所有跨系统操作
- 降低新人上手门槛
关键决策 — 业务线作为核心隔离维度
决策
以业务线作为资源、权限、监控的核心隔离维度。
背景
| 现状 | 问题 |
|---|---|
| 资源按机房/集群管理 | 无法按业务视角查看成本 |
| 权限按系统独立管理 | 跨系统权限不一致 |
| 监控按技术栈分散 | 排障时需要多系统切换 |
| 业务线有 5+ 条 | Kodo、LAS、灵矽、LTOKEN、MAAS |
隔离模型
graph TB
BL["业务线<br/>Kodo / LAS / 灵矽 / ..."]
BL --> NS["K8s Namespace<br/>ResourceQuota"]
BL --> Perm["权限隔离<br/>RBAC 业务线维度"]
BL --> Monitor["监控隔离<br/>告警按业务线展示"]
BL --> Resource["资源台账<br/>按业务线统计成本"]
style BL fill:#e0f2fe,stroke:#0284c7
预期收益
- 资源成本按业务线可视
- 权限一次配置,全系统生效
- 监控告警按业务线隔离展示
- 运维人员聚焦自己负责的业务线
关键决策 — Ansible 编排而非自研部署引擎
决策
基础服务交付采用 Ansible Playbook 编排,不自研部署引擎。
背景
| 现状 | 问题 |
|---|---|
| 基础服务部署依赖人工操作 | 效率低,容易出错 |
| 不同运维人员操作方式不同 | 缺少标准化 |
| 部署过程不可见 | 排障困难 |
| 跨机房部署需要 SSH 到各机房 | 操作繁琐 |
方案对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| Ansible 编排(选定) | 运维团队熟悉,生态成熟 | 需要自建任务队列 |
| 自研部署引擎 | 完全可控 | 开发周期长,重复造轮子 |
| AWX/Tower | 开源方案 | 引入新组件,增加复杂度 |
执行模型
graph LR
XINFRA["XINFRA<br/>任务提交"] --> Queue["任务队列"]
Queue --> Ansible["Ansible 控制中心"]
Ansible -->|SSH| Host1["机房 A 主机"]
Ansible -->|SSH| Host2["机房 B 主机"]
Ansible -.->|WebSocket| XINFRA
style XINFRA fill:#e0f2fe,stroke:#0284c7
关键决策 — 对接夜莺而非自建监控引擎
决策
监控数据对接夜莺(Nightingale),不在 XINFRA 内自建监控和告警引擎。
背景
| 现状 | 问题 |
|---|---|
| 告警分散在基础资源和业务系统 | 排障时信息割裂 |
| 夜莺已有告警聚合能力 | 重复建设浪费资源 |
| 监控分析和告警治理复杂 | 非当前重点 |
| 业务线需要隔离查看告警 | 缺少统一视图 |
方案对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| 对接夜莺(选定) | 复用现有能力,开发量小 | 依赖夜莺稳定性 |
| 自建监控引擎 | 完全可控 | 成本高,非核心能力 |
| 仅做文档指引 | 零成本 | 无法统一视图 |
数据流
graph LR
VM["VictoriaMetrics<br/>指标存储"] --> Nightingale["夜莺<br/>告警聚合"]
Zabbix["Zabbix<br/>硬件监控"] --> Nightingale
Nightingale --> XINFRA["XINFRA<br/>按业务线展示"]
Nightingale --> IM["企业 IM 推送"]
style XINFRA fill:#e0f2fe,stroke:#0284c7
关键功能 — 资源纳管
功能概述
统一展示和管理物理机、虚机、云主机、K8s 节点等资源,形成可视化资源台账。
核心能力
| 能力 | 说明 |
|---|---|
| 资源统一展示 | 物理机、虚机、云主机、K8s 节点统一视图 |
| 业务线关联 | 资源与业务线绑定,支持按业务线筛选 |
| 多维度筛选 | 机房、集群、状态、业务线组合筛选 |
| 容量统计 | 资源使用率、剩余容量、成本概览 |
| 数据同步 | CMDB + 云平台 API 自动同步 |
资源类型
graph TB
subgraph 资源纳管
Physical["物理机<br/>CMDB 同步"]
VM["虚机<br/>CMDB 同步"]
Cloud["云主机<br/>云平台 API 同步"]
K8sNode["K8s 节点<br/>RKE2 集群同步"]
end
XINFRA["XINFRA 资源大盘"] --> Physical & VM & Cloud & K8sNode
style XINFRA fill:#e0f2fe,stroke:#0284c7
页面入口
- 资源管理 — 资源台账列表,支持筛选和导出
- 资源状态看板 — 机房健康度、告警汇总
- 业务配额 — 按业务线划分 K8s 命名空间与资源配额
关键功能 — 服务交付
基础服务交付
通过 Ansible 编排实现基础服务标准化部署,支持任务提交、执行状态、日志和历史记录。
| 服务 | 交付方式 | 自动注册 |
|---|---|---|
| MySQL | Ansible Playbook | 部署完成自动注册至 CloudDM |
| PostgreSQL | Ansible Playbook | 部署完成自动注册至 CloudDM |
| Redis | Ansible Playbook | 部署完成自动注册至 CacheCloud |
| Nginx | Ansible Playbook | — |
业务交付入口
在"业务交付"菜单下提供统一入口,跳转到专业系统完成实际操作。
| 目标系统 | 用途 | 上下文传递 |
|---|---|---|
| Wayne | 容器应用部署 | 业务线 + Namespace |
| CloudDM | 数据库管理与 SQL 审核 | 业务线 + 数据库实例 |
| Apollo | 配置管理 | 业务线 + 应用 |
交付流程
graph TB
User["运维人员"] --> Catalog["服务目录<br/>选择服务卡片"]
Catalog --> Template["标准化模板<br/>填写业务线、规格"]
Template --> Submit["提交任务"]
Submit --> Ansible["Ansible 控制中心"]
Ansible --> Deploy["执行部署"]
Deploy --> Register["自动注册<br/>CloudDM/CacheCloud"]
Deploy --> Log["任务中心<br/>实时日志"]
style Catalog fill:#e0f2fe,stroke:#0284c7
style Ansible fill:#ecfdf5,stroke:#059669
任务中心
- 任务列表:所有 Ansible 任务执行记录
- 执行详情:实时日志、执行结果、耗时
- 历史回溯:支持任务重跑和结果对比
关键功能 — 子系统功能
子系统导航
XINFRA 提供统一的子系统入口卡片列表,支持 SSO 免登录跳转。
| 子系统 | 功能定位 | XINFRA 集成方式 |
|---|---|---|
| Wayne | 多集群容器管理 | SSO 跳转 + APIKey |
| CloudDM | 数据库管理与 SQL 审核 | SSO 跳转 + 自动注册 |
| CacheCloud | Redis 缓存管理 | SSO 跳转 + 自动注册 |
| Apollo | 配置中心 | SSO 跳转 |
| Grafana | 监控可视化 | SSO 跳转 |
| qpass | 密码管理 | SSO 跳转 |
子系统赋权
用户首次跳转子系统时,XINFRA 自动完成角色授权。
| 子系统 | 授权模型 | 说明 |
|---|---|---|
| Wayne | Namespace 映射 | 业务线 → Wayne Namespace |
| CloudDM | 角色分配 | 业务线 → 数据库访问权限 |
| Apollo | 环境权限 | 业务线 → 配置环境访问 |
| Grafana | 仪表盘权限 | 业务线 → 监控面板 |
审计记录
所有子系统跳转和操作均记录审计日志:
- 跳转时间、用户、目标系统
- 操作类型、操作结果
- 支持按业务线、用户、时间筛选
section: 关键功能 layout: center
二、关键功能
section: 架构图 layout: center
三、架构图
平台分层架构 — 总体分层
graph LR
User["用户层<br/>LDAP SSO 统一认证"] --> Main["主系统层<br/>统一门户 + 功能模块"]
Main --> Sub["子系统层<br/>独立部署,各自授权"]
Main --> Infra["基础设施层<br/>计算 · 网络 · 存储 · 自动化"]
Sub --> Infra
style User fill:#f3e8fd,stroke:#9333ea
style Main fill:#e0f2fe,stroke:#0284c7
style Sub fill:#e8f0fe,stroke:#4285f4
style Infra fill:#ecfdf5,stroke:#059669
四层模型:用户层 → 主系统层 → 子系统层 → 基础设施层,主系统是统一入口,子系统各司其职。
平台分层架构 — 主系统功能
graph TB
Portal["统一门户<br/>LDAP SSO 跳转入口"]
subgraph 全局视图
DashBoard["资源大盘<br/>集群拓扑 · 节点方格图"]
MonitorView["资源状态看板<br/>物理机/虚机/服务三层告警"]
end
subgraph 运维能力
TaskCenter["任务中心<br/>Ansible/Wayne 实时日志"]
OpsTerminal["运维终端<br/>Ansible / SSH<br/>仅管理员"]
end
subgraph 治理能力
AuditDash["审计面板<br/>登录记录 · 运维操作日志"]
CMDB["资源台账<br/>CMDB 多云同步"]
SvcDir["服务目录<br/>Consul 只读聚合"]
end
Portal --> DashBoard & MonitorView & TaskCenter & AuditDash & CMDB & SvcDir
主系统不替代子系统,只自建子系统无法覆盖的能力:全局视图、运维兜底、审计、资源台账。
平台分层架构 — 子系统集成
graph LR
Portal["XINFRA 主系统"]
subgraph 子系统
Wayne["Wayne<br/>多集群容器管理"]
CloudDM["CloudDM<br/>SQL 审核"]
CacheCloud["CacheCloud<br/>Redis 管理"]
Apollo["Apollo<br/>配置中心"]
Grafana["Grafana<br/>监控可视化"]
QPass["qpass<br/>密码管理"]
end
Portal -.->|SSO 跳转| Wayne & CloudDM & CacheCloud & Apollo & Grafana & QPass
Wayne -->|Client-Go| RKE2["RKE2 集群"]
CloudDM -->|SQL 审核| MySQL[("MySQL")]
CacheCloud -->|Agent| Redis[("Redis")]
Apollo -->|ConfigService| RKE2
平台分层架构 — 基础设施层
graph TB
subgraph 计算
RKE2["RKE2 集群 × 7 机房<br/>CIS 安全加固"]
end
subgraph 网络
Calico["Calico BGP<br/>每集群独立 AS 号<br/>跨机房扁平互通"]
end
subgraph 存储
Ceph["Ceph RBD<br/>MySQL/Redis 有状态服务 PV"]
end
subgraph 自动化
Ansible["Ansible Playbook<br/>节点初始化 · 服务部署<br/>WebSocket 实时日志"]
end
RKE2 --> Calico
RKE2 --> Ceph
Ansible -->|SSH| RKE2
部署架构
graph TB
subgraph "RKE2 集群(任一机房)"
subgraph "xinfra 命名空间"
FE["Nginx<br/>前端静态文件 + 反向代理"]
BE["Go API Server<br/>Deployment × 2"]
WS["WebSocket Gateway<br/>任务日志实时推送"]
end
subgraph "监控命名空间"
VM[("VictoriaMetrics")]
Grafana["Grafana"]
NE["Nightingale"]
end
subgraph "子系统命名空间"
Wayne["Wayne"]
CloudDM["CloudDM"]
CacheCloud["CacheCloud"]
Apollo["Apollo"]
end
end
LB["SLB / NodePort"] --> FE
FE -->|/api/*| BE
FE -->|WebSocket| WS
BE --> MySQL[("MySQL 8.0 主从")]
BE --> Redis[("Redis 会话缓存")]
BE -->|SSH/Ansible| Nodes["业务节点池"]
WS --> BE
style FE fill:#e0f2fe,stroke:#0284c7
style BE fill:#e0f2fe,stroke:#0284c7
style WS fill:#e0f2fe,stroke:#0284c7
监控告警数据流
graph LR
subgraph 采集源
RKE2["RKE2 集群"]
Zabbix["Zabbix<br/>硬件监控"]
end
subgraph 指标存储
VM[("VictoriaMetrics<br/>容器/业务指标")]
end
subgraph 可视化
Grafana["Grafana 仪表盘"]
end
subgraph 告警链路
Nightingale["夜莺<br/>去重 · 收敛 · 分级"]
IM["企业 IM 推送"]
end
RKE2 -.->|Metrics| VM
VM --> Grafana
VM --> Nightingale
Zabbix -.->|Webhook| Nightingale
Nightingale --> IM
Zabbix -->|Zabbix API| Main["XINFRA 主系统<br/>资源状态看板"]
Zabbix 硬件监控分两条链路:告警事件通过 Webhook 推送至夜莺统一聚合;可观测数据(IPMI/温度/电源/风扇等)由主系统直接调用 Zabbix API 采集展示。
基础服务交付流程
sequenceDiagram
actor User as 业务人员
participant Portal as XINFRA 服务目录
participant Ansible as Ansible Playbook
participant Infra as RKE2 / 主机
participant Sub as 子系统注册
User->>Portal: 选择服务卡片,填写业务线、规格
Portal->>Portal: 实时预览 playbook 参数(YAML)
User->>Portal: 确认部署
Portal->>Ansible: 提交 playbook 任务
Ansible->>Infra: 内核初始化 · containerd · 加入集群
Ansible-->>Portal: 任务状态 → WebSocket 实时日志
Portal->>Sub: 自动注册(CloudDM / CacheCloud)
Portal-->>User: 部署完成,跳转任务中心
多租户隔离模型
graph LR
LDAP["企业 LDAP"] -->|部门 DN| BL["业务线租户<br/>Kodo / LAS / 灵矽 / ..."]
BL --> NS["Kubernetes Namespace<br/>+ ResourceQuota + LimitRange"]
BL --> NP["物理节点池<br/>node-label + taint"]
NS -.->|Pod 只能调度到<br/>本业务线节点| NP
style LDAP fill:#f3e8fd,stroke:#9333ea
style BL fill:#e0f2fe,stroke:#0284c7
style NS fill:#ecfdf5,stroke:#059669
style NP fill:#fef3c7,stroke:#d97706
双重隔离:节点层通过
business-line=xxx标签 + Taint 确保 Pod 调度隔离;命名空间层通过 ResourceQuota / LimitRange 限制资源用量上限。
安全认证流程
sequenceDiagram
actor User as 用户
participant Main as XINFRA 主系统
participant LDAP as 企业 LDAP
participant Sub as 子系统
User->>Main: 访问主系统
Main->>LDAP: SAML 认证请求
LDAP-->>Main: SAML Response(用户身份 + LDAP 组信息)
Main->>Main: 签发 JWT Token(含角色 + 业务线)
Main-->>User: 登录成功,返回 Token
User->>Main: 点击子系统卡片
Main->>Sub: OAuth 2.0 Authorization Code
Sub->>Main: 验证 Token,创建子系统会话
Main-->>User: 跳转至子系统(免登录)
外部 LDAP 通过 SAML 集成统一认证;子系统 SSO 通过 OAuth 2.0 对接,实现单点登录免跳转。
section: 对接子系统 layout: center
四、对接子系统
子系统 — Wayne(多集群容器管理)
定位
多集群 Kubernetes 容器管理平台,统一管理 7 机房 RKE2 集群。
核心能力
- 多集群纳管 — 通过 Client-Go 对接各机房 RKE2 集群 API
- 应用部署 — 支持 Deployment、StatefulSet 等 K8s 工作负载管理
- CI/CD 集成 — 对外提供 APIKey,GitLab CI 自动触发部署
- 一键回滚 — 应用发布异常时快速回滚至历史版本
关键对接
graph LR
CI["GitLab CI"] -->|APIKey 认证| Wayne["Wayne"]
Wayne -->|Client-Go| RKE2["RKE2 集群"]
Main["XINFRA 主系统"] -.->|SSO| Wayne
说明
- 独立 WebUI + API 服务
- APIKey 遵循最小权限原则
- 主系统通过 SSO 跳转,各自维护操作审计
子系统 — CloudDM(数据库管理与 SQL 审核)
定位
SQL 审核与变更平台,统一管控数据库上线流程。
核心能力
- SQL 审核 — 上线前自动检查 SQL 语句合规性与风险
- 多库支持 — 原生支持 MySQL,后续扩展 PostgreSQL 等
- 变更执行 — 审核通过后通过 Sidecar SQL 代理执行变更
- 操作审计 — 所有 SQL 操作全程记录,可追溯
关键对接
graph LR
User["DBA / 开发"] --> CloudDM["CloudDM"]
CloudDM -->|Sidecar 代理| MySQL[("MySQL")]
Deploy["服务部署完成"] -.->|自动注册| CloudDM
Main["XINFRA 主系统"] -.->|SSO| CloudDM
说明
- 基础服务交付流程中,MySQL 部署完成后自动注册至 CloudDM
- 白名单机制防止规则误判拦截合法 SQL
子系统 — CacheCloud(Redis 缓存管理)
定位
Redis 实例生命周期管理平台,覆盖创建、监控、运维全流程。
核心能力
- 实例管理 — Redis 实例的创建、扩缩容、下线
- Agent 模式 — 通过 Agent 远程管理各机房 Redis 实例
- 诊断工具 — 大 Key / 热 Key 检测,慢查询分析
- 监控集成 — 实例指标上报至 VictoriaMetrics
关键对接
graph LR
User["运维人员"] --> CacheCloud["CacheCloud"]
CacheCloud -->|Agent| Redis[("Redis")]
Deploy["服务部署完成"] -.->|自动注册| CacheCloud
Main["XINFRA 主系统"] -.->|SSO| CacheCloud
说明
- 基础服务交付流程中,Redis 部署完成后自动注册至 CacheCloud
- 配合应用侧治理解决大 Key / 热 Key 性能问题
子系统 — Apollo(配置中心)
定位
携程开源的分布式配置中心,统一管理各业务线应用配置。
核心能力
- 多机房部署 — 支持 Cluster 模式,7 机房独立部署
- 配置灰度 — 配置变更可灰度发布,降低变更风险
- 版本回滚 — 配置历史版本管理,异常时一键回滚
- 操作审计 — 配置变更全程记录,可追溯
关键对接
graph LR
App["业务应用"] -->|ConfigService| Apollo["Apollo"]
Apollo -->|配置下发| RKE2["RKE2 集群"]
Main["XINFRA 主系统"] -.->|SSO| Apollo
说明
- 本地缓存降级保障多机房配置一致性
- 灰度发布验证避免配置下发错误
子系统 — Grafana(监控可视化)
定位
统一监控可视化平台,对接 VictoriaMetrics 等数据源。
核心能力
- 仪表盘 — 集群、节点、应用多维度监控面板
- PromQL 查询 — 直接查询 VictoriaMetrics 中的指标数据
- 告警可视化 — 告警规则与历史趋势展示
- 多数据源 — 支持 VictoriaMetrics、Zabbix 等多种数据源
关键对接
graph LR
VM["VictoriaMetrics"] -->|PromQL| Grafana["Grafana"]
Zabbix["Zabbix"] -->|数据源| Grafana
Main["XINFRA 主系统"] -.->|SSO| Grafana
说明
- 直接复用现有 Grafana 仪表盘,无需主系统重建监控视图
- 主系统资源状态看板侧重告警聚合,Grafana 侧重指标可视化
子系统 — qpass(密码管理平台)
定位
企业级密码管理平台,统一管理各业务线和基础设施的账号密码。
核心能力
- 密码托管 — 集中存储和管理各类账号密码、密钥、证书
- 权限控制 — 基于 RBAC 的密码访问权限,按业务线隔离
- 审计追溯 — 密码访问、修改、共享全程记录
- 自动轮换 — 支持定期密码轮换策略,降低泄露风险
关键对接
graph LR
QPass["qpass"] -->|密码分发| RKE2["RKE2 集群"]
QPass -->|密码注入| DB["MySQL / Redis"]
Main["XINFRA 主系统"] -.->|SSO| QPass
说明
- 基础设施部署完成后,密码由 qpass 统一管理并注入
- 配合 Ansible 实现自动化密码分发与轮换