--- theme: frankfurt title: XINFRA 平台架构 author: 实训小组 infoLine: true transition: slide-left mdc: true drawings: persist: false --- # XINFRA 平台需求与架构
统一基础设施管理平台 · 总体架构设计
实训小组
--- layout: default --- # 目录
### 一、系统需求 - 系统边界 - 做什么 vs 不做什么
### 二、用户故事 - 资源查看 - 业务交付 - 基础服务交付 - 数据库审核 - 业务线切换
### 三、关键决策 - 入口聚合 - 业务线隔离 - Ansible 编排 - 对接夜莺
### 四、关键功能 - 资源纳管 - 服务交付 - 子系统功能
### 五、架构图 - 平台分层 - 部署架构 - 监控告警 - 安全认证
### 六、对接子系统 - Wayne · CloudDM - CacheCloud · Apollo - qpass · Grafana - Superset
--- section: 系统需求 layout: center --- # 一、系统需求
系统边界 · 做什么 vs 不做什么
--- # 系统边界
```mermaid graph TB subgraph XINFRA["XINFRA 平台边界"] Portal["统一门户
SSO 跳转入口"] Resource["资源纳管
物理机/虚机/云主机/K8s"] Service["服务交付入口
跳转 Wayne/CloudDM/Apollo/Superset"] BasicSvc["基础服务交付
Ansible 编排部署"] DBReview["数据库审核
SQL 工单审批"] Monitor["监控纳管
对接夜莺展示"] Config["配置中心接入
Apollo 配置管理"] Audit["审计中心
登录/操作/任务审计"] TaskCenter["任务中心
Ansible 执行记录"] end subgraph External["专业系统(不在平台内重做)"] Wayne["Wayne
容器管理"] CloudDM["CloudDM
SQL 审核"] Apollo["Apollo
配置中心"] Grafana["Grafana
监控可视化"] Superset["Superset
日志可视化"] Nightingale["夜莺
告警引擎"] CacheCloud["CacheCloud
Redis 管理"] end subgraph OutOfScope["不在范围内"] AI["AI 排障
其他项目负责"] VMCreate["虚机创建
统一走线下"] MonitorEngine["自研监控引擎
成本高非重点"] 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、Superset 等系统 | | 基础服务交付 | 标准化模板 + Ansible 编排 | | 数据库审核 | SQL 工单、审批、审计 | | 监控纳管 | 对接夜莺,按业务线展示告警 | | 权限管理 | 业务线维度授权、子系统角色管理 | | 审计 | 记录登录、跳转、审批和自动化执行 |
### ❌ 不做什么 | 范围 | 不做原因 | |------|---------| | 替代 Wayne、Apollo、CloudDM、CacheCloud、Grafana、Superset 等 | 专业系统继续保留 | | 全量自研监控和告警引擎 | 成本高,非当前重点 | | 复杂 AI 排障 | 由其他项目负责 | | 虚机创建主流程 | 统一走线下流程 | | 大而全的运维平台 | 两个月内不现实,也不必要 |
--- section: 用户故事 layout: center --- # 二、用户故事
资源查看 · 业务交付 · 基础服务交付 · 数据库审核 · 业务线切换
--- # 用户故事 — 资源查看
**场景**:运维人员登录 XINFRA 后,直接看到全量资源分布、业务线归属、节点状态和容量概览,不需要在多个 CMDB 和云平台之间来回切换。 **链路**:业务 SRE 登录 XINFRA → 选择业务线 → 平台同步 CMDB / 云平台 / RKE2 数据 → 展示全量资源大盘
--- # 用户故事 — 资源查看 · 交互图
```mermaid 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: 展示全量资源分布
业务线归属 · 节点状态 · 容量概览 ```
--- # 用户故事 — 业务交付
**场景**:业务 SRE 在 XINFRA 中进入"业务交付",选择对应业务线后跳转到 Wayne、CloudDM、Apollo 或 Superset 完成实际操作,平台保留入口、上下文和审计。 **链路**:业务 SRE 登录 → 进入业务交付 → 选择业务线 → 展示子系统入口 → SSO 跳转至目标系统 → 记录审计日志
--- # 用户故事 — 业务交付 · 交互图
```mermaid sequenceDiagram actor SRE as 业务 SRE participant XINFRA as XINFRA participant Sub as 子系统
Wayne/CloudDM/Apollo/Superset SRE->>XINFRA: 进入业务交付,选择业务线 XINFRA-->>SRE: 展示子系统入口卡片 SRE->>XINFRA: 点击目标子系统卡片 XINFRA->>Sub: SSO 跳转 + 上下文传递 Sub-->>SRE: 免登录进入子系统 XINFRA->>XINFRA: 记录跳转审计日志 ```
--- # 用户故事 — 基础服务交付
**场景**:运维人员在 XINFRA 中提交 MySQL、Redis 等基础服务交付任务,平台调用 Ansible 控制中心执行标准化部署,并在任务中心查看日志和结果。 **链路**:运维人员登录 → 选择服务卡片 → 填写业务线和规格 → 提交任务 → Ansible 执行部署 → 自动注册至子系统 → 部署完成通知
--- # 用户故事 — 基础服务交付 · 交互图
```mermaid 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: 部署完成通知 ```
--- # 用户故事 — 数据库审核
**场景**:开发或运维提交 SQL 工单后,审核人可以在 XINFRA 中完成审批、查看执行记录和审计信息,减少线下沟通和手工操作。 **链路**:开发/运维提交 SQL 工单 → 转发至 CloudDM → 审核人审批 → 执行变更 → Sidecar 代理执行 SQL → 审计记录 → 通知完成
--- # 用户故事 — 数据库审核 · 交互图
```mermaid sequenceDiagram actor Dev as 开发/运维 participant XINFRA as XINFRA participant CloudDM as CloudDM participant DB as 目标数据库 Dev->>XINFRA: 提交 SQL 工单 XINFRA->>CloudDM: 转发至 CloudDM 审核 actor Reviewer as 审核人 Reviewer->>CloudDM: 审批通过 CloudDM->>DB: 执行 SQL CloudDM-->>XINFRA: 返回执行结果 XINFRA-->>Dev: 通知完成 ```
--- # 用户故事 — 业务线切换
**场景**:XINFRA 以业务线作为核心隔离维度,不同角色登录后默认看到自己负责的业务线数据,支持一键切换。系统运维可查看全局,业务 SRE 聚焦本业务线,只读用户仅能查看授权范围。 **角色**:系统运维(全局视角)、业务 SRE(本业务线)、跨业务线运维(按需切换)、只读用户(受限查看)
--- # 用户故事 — 业务线切换 · 交互图
### 场景一:系统运维查看全局 | 步骤 | 操作 | |------|------| | 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 | 可查看监控告警,不可执行操作 |
--- section: 关键决策 layout: center --- # 三、关键决策
入口聚合 · 业务线隔离 · Ansible 编排 · 对接夜莺
--- # 关键决策 — 入口聚合而非替代
### 决策 XINFRA 做**入口聚合**,不替代 Wayne、CloudDM、Apollo、CacheCloud、Grafana、Superset 等专业系统。 ### 背景 | 现状 | 问题 | |------|------| | 运维需要登录 7+ 个系统 | 入口分散,效率低 | | 各系统独立认证 | 重复登录,体验差 | | 操作记录分散在各系统 | 审计困难,无法追溯 | | 新人不知道该用哪个系统 | 上手门槛高 |
### 方案对比 | 方案 | 优点 | 缺点 | |------|------|------| | **入口聚合(选定)** | 开发量小,复用现有系统能力 | 依赖子系统稳定性 | | 全量自研替代 | 完全可控 | 开发周期长,团队人力不足 | | 仅做文档指引 | 零开发成本 | 无法解决认证和审计问题 | ### 预期收益 - 运维人员**一个入口**完成所有操作 - **SSO 免登录**跳转子系统 - **统一审计**记录所有跨系统操作 - **降低新人上手门槛**
--- # 关键决策 — 业务线作为核心隔离维度
### 决策 以**业务线**作为资源、权限、监控的核心隔离维度。 ### 背景 | 现状 | 问题 | |------|------| | 资源按机房/集群管理 | 无法按业务视角查看成本 | | 权限按系统独立管理 | 跨系统权限不一致 | | 监控按技术栈分散 | 排障时需要多系统切换 | | 业务线有 5+ 条 | Kodo、LAS、灵矽、LTOKEN、MAAS |
### 隔离模型 ```mermaid graph TB BL["业务线
Kodo / LAS / 灵矽 / ..."] BL --> NS["K8s Namespace
ResourceQuota"] BL --> Perm["权限隔离
RBAC 业务线维度"] BL --> Monitor["监控隔离
告警按业务线展示"] BL --> Resource["资源台账
按业务线统计成本"] style BL fill:#e0f2fe,stroke:#0284c7 ``` ### 预期收益 - 资源成本**按业务线可视** - 权限**一次配置,全系统生效** - 监控告警**按业务线隔离展示** - 运维人员**聚焦自己负责的业务线**
--- # 关键决策 — 基础服务交付自动化
### 决策 引入**自动化部署引擎**(Ansible Playbook),打通交付全流程。 ### 痛点背景 | 现状 | 问题 | |------|------| | 业务上线依赖员工手动操作 | 交付效率低,周期长 | | 工具链复杂,命令行门槛高 | 新人上手慢,培训成本高 | | 操作方式因人而异 | 缺少标准化,易出错 | | 部署过程不可见 | 排障困难 |
### 方案对比 | 方案 | 优点 | 缺点 | |------|------|------| | **Ansible 编排(选定)** | 运维团队熟悉,生态成熟 | 需要自建任务队列 | | 自研部署引擎 | 完全可控 | 开发周期长,重复造轮子 | ### 执行模型 ```mermaid graph LR XINFRA["XINFRA
任务提交"] --> Queue["任务队列"] Queue --> Ansible["Ansible 控制中心"] Ansible -->|SSH| Host1["机房 A 主机"] Ansible -->|SSH| Host2["机房 B 主机"] Ansible -.->|WebSocket| XINFRA style XINFRA fill:#e0f2fe,stroke:#0284c7 ```
--- # 关键决策 — 对接夜莺而非自建监控引擎
### 决策 监控数据**对接夜莺(Nightingale)**,不在 XINFRA 内自建监控和告警引擎。 ### 背景 | 现状 | 问题 | |------|------| | 告警分散在基础资源和业务系统 | 排障时信息割裂 | | 夜莺已有告警聚合能力 | 重复建设浪费资源 | | 监控分析和告警治理复杂 | 非当前重点 | | 业务线需要隔离查看告警 | 缺少统一视图 |
### 方案对比 | 方案 | 优点 | 缺点 | |------|------|------| | **对接夜莺(选定)** | 复用现有能力,开发量小 | 依赖夜莺稳定性 | | 自建监控引擎 | 完全可控 | 成本高,非核心能力 | | 仅做文档指引 | 零成本 | 无法统一视图 | ### 数据流 ```mermaid graph LR VM["VictoriaMetrics
指标存储"] --> Nightingale["夜莺
告警聚合"] Zabbix["Zabbix
硬件监控"] --> Nightingale Nightingale --> XINFRA["XINFRA
按业务线展示"] Nightingale --> IM["企业 IM 推送"] style XINFRA fill:#e0f2fe,stroke:#0284c7 ```
--- # 关键功能 — 资源纳管
### 功能概述 统一展示和管理物理机、虚机、云主机、K8s 节点等资源,形成可视化资源台账。 ### 核心能力 | 能力 | 说明 | |------|------| | 资源统一展示 | 物理机、虚机、云主机、K8s 节点统一视图 | | 业务线关联 | 资源与业务线绑定,支持按业务线筛选 | | 多维度筛选 | 机房、集群、状态、业务线组合筛选 | | 容量统计 | 资源使用率、剩余容量、成本概览 | | 数据同步 | CMDB + 云平台 API 自动同步 |
### 资源类型 ```mermaid graph TB subgraph 资源纳管 Physical["物理机
CMDB 同步"] VM["虚机
CMDB 同步"] Cloud["云主机
云平台 API 同步"] K8sNode["K8s 节点
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 | 配置管理 | 业务线 + 应用 | | Superset | 日志数据分析 | 业务线 + 数据源 |
### 交付流程 ```mermaid graph TB User["运维人员"] --> Catalog["服务目录
选择服务卡片"] Catalog --> Template["标准化模板
填写业务线、规格"] Template --> Submit["提交任务"] Submit --> Ansible["Ansible 控制中心"] Ansible --> Deploy["执行部署"] Deploy --> Register["自动注册
CloudDM/CacheCloud"] Deploy --> Log["任务中心
实时日志"] 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 跳转 | | qpass | 七牛统一运维平台 | SSO 跳转 | | Grafana | K8s / 容器 / 业务指标仪表盘 | SSO 跳转 | | Superset | 日志数据探索与可视化分析 | SSO 跳转 |
### 子系统赋权 用户首次跳转子系统时,XINFRA 自动完成角色授权。 | 子系统 | 授权模型 | 说明 | |--------|---------|------| | Wayne | Namespace 映射 | 业务线 → Wayne Namespace | | CloudDM | LDAP 组映射 | LDAP 用户组 → CloudDM 角色 | | Apollo | 环境权限 | 业务线 → 配置环境访问 | | Grafana | 仪表盘权限 | 业务线 → 监控面板 | | Superset | 数据源权限 | 业务线 → 日志数据访问 | ### 审计记录 所有子系统跳转和操作均记录审计日志: - 跳转时间、用户、目标系统 - 操作类型、操作结果 - 支持按业务线、用户、时间筛选
--- section: 关键功能 layout: center --- # 四、关键功能
资源纳管 · 服务交付 · 子系统功能
--- section: 架构图 layout: center --- # 五、架构图
平台分层 · 部署 · 监控 · 安全
--- # 平台分层架构 — 总体分层
```mermaid graph LR User["用户层
LDAP SSO 统一认证"] --> Main["主系统层
统一门户 + 功能模块"] Main --> Sub["子系统层
独立部署,各自授权"] Main --> Infra["基础设施层
计算 · 网络 · 存储 · 自动化"] 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 ```
> 四层模型:用户层 → 主系统层 → 子系统层 → 基础设施层,主系统是统一入口,子系统各司其职。
--- # 平台分层架构 — 主系统功能
```mermaid graph TB Portal["统一门户
LDAP SSO 跳转入口"] subgraph 全局视图 DashBoard["资源大盘
集群拓扑 · 节点方格图"] MonitorView["资源状态看板
物理机/虚机/服务三层告警"] end subgraph 运维能力 TaskCenter["任务中心
Ansible/Wayne 实时日志"] OpsTerminal["运维终端
Ansible / SSH
仅管理员"] end subgraph 治理能力 AuditDash["审计面板
登录记录 · 运维操作日志"] CMDB["资源台账
CMDB 多云同步"] SvcDir["服务目录
Consul 只读聚合"] end Portal --> DashBoard & MonitorView & TaskCenter & AuditDash & CMDB & SvcDir ```
> 主系统不替代子系统,只自建子系统无法覆盖的能力:全局视图、运维兜底、审计、资源台账。
--- # 平台分层架构 — 子系统集成
```mermaid graph LR Portal["XINFRA 主系统"] subgraph 子系统 Wayne["Wayne
容器发布与配额管理"] CloudDM["CloudDM
SQL 审核"] CacheCloud["CacheCloud
Redis 全生命周期"] Apollo["Apollo
配置中心"] QPass["qpass
七牛运维平台"] Grafana["Grafana
指标可视化"] Superset["Superset
日志可视化"] end Portal -.->|SSO 跳转| Wayne & CloudDM & CacheCloud & Apollo & QPass & Grafana & Superset Wayne -->|Client-Go| RKE2["RKE2 集群"] CloudDM -->|SQL 审核| MySQL[("MySQL")] CacheCloud -->|Agent| Redis[("Redis")] Apollo -->|ConfigService| RKE2 Grafana -->|PromQL| VM["VictoriaMetrics"] Superset -->|SQL| CH["ClickHouse"] ```
--- # 平台分层架构 — 基础设施层
```mermaid graph TB subgraph 计算 RKE2["RKE2 集群 × 7 机房
CIS 安全加固"] end subgraph 网络 Calico["Calico BGP
每集群独立 AS 号
跨机房扁平互通"] end subgraph 存储 Ceph["Ceph RBD
MySQL/Redis 有状态服务 PV"] end subgraph 自动化 Ansible["Ansible Playbook
节点初始化 · 服务部署
WebSocket 实时日志"] end RKE2 --> Calico RKE2 --> Ceph Ansible -->|SSH| RKE2 ```
--- # 部署架构
```mermaid graph TB subgraph "RKE2 集群(任一机房)" subgraph "xinfra 命名空间" FE["Nginx
前端静态文件 + 反向代理"] BE["Go API Server
Deployment × 2"] WS["WebSocket Gateway
任务日志实时推送"] end subgraph "监控命名空间" VM[("VictoriaMetrics")] Grafana["Grafana"] NE["Nightingale"] end subgraph "子系统命名空间" Wayne["Wayne"] CloudDM["CloudDM"] CacheCloud["CacheCloud"] Apollo["Apollo"] Superset["Superset"] 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 ```
--- # 监控告警数据流
```mermaid graph LR subgraph 采集源 RKE2["RKE2 集群"] Zabbix["Zabbix
硬件监控"] end subgraph 指标存储 VM[("VictoriaMetrics
容器/业务指标")] end subgraph 可视化 Grafana["Grafana 仪表盘"] end subgraph 告警链路 Nightingale["夜莺
去重 · 收敛 · 分级"] IM["企业 IM 推送"] end RKE2 -.->|Metrics| VM VM --> Grafana VM --> Nightingale Zabbix -.->|Webhook| Nightingale Nightingale --> IM Zabbix -->|Zabbix API| Main["XINFRA 主系统
资源状态看板"] ```
> Zabbix 硬件监控分两条链路:告警事件通过 Webhook 推送至夜莺统一聚合;可观测数据(IPMI/温度/电源/风扇等)由主系统直接调用 Zabbix API 采集展示。
--- # 基础服务交付流程
```mermaid 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: 部署完成,跳转任务中心 ```
--- # 多租户隔离模型
```mermaid graph LR LDAP["企业 LDAP"] -->|部门 DN| BL["业务线租户
Kodo / LAS / 灵矽 / ..."] BL --> NS["Kubernetes Namespace
+ ResourceQuota + LimitRange"] BL --> NP["物理节点池
node-label + taint"] NS -.->|Pod 只能调度到
本业务线节点| 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 限制资源用量上限。
--- # 安全认证流程
```mermaid 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 · CloudDM · CacheCloud · Apollo · qpass · Grafana · Superset
--- # 子系统 — Wayne(多集群容器管理)
### 定位 多集群 Kubernetes 容器管理平台,负责**业务容器发布**和**命名空间与配额管理**,复用 Wayne 原生多租户能力。 ### 核心能力 - **业务容器发布** — Deployment、StatefulSet 等工作负载的部署与回滚 - **命名空间管理** — 按业务线创建 Namespace,隔离资源边界 - **配额管理** — 为每个 Namespace 设置 ResourceQuota,控制 CPU / 内存上限 - **多租户隔离** — 复用 Wayne 原生租户模型,业务线 ↔ Namespace 自动映射 - **CI/CD 集成** — 对外提供 APIKey,GitLab CI 自动触发部署
### 关键对接 ```mermaid graph LR BL["业务线"] -->|租户映射| Wayne["Wayne"] Wayne -->|Namespace + Quota| RKE2["RKE2 集群"] CI["GitLab CI"] -->|APIKey| Wayne Main["XINFRA 主系统"] -.->|SSO| Wayne ``` ### 说明 - 独立 WebUI + API 服务 - XINFRA 负责"哪个业务线用哪些资源",Wayne 负责"怎么发布和管理容器" - APIKey 遵循最小权限原则,主系统通过 SSO 跳转
--- # 子系统 — CloudDM(数据库 SQL 审核)
### 定位 数据库 SQL 上线**统一审核平台**,所有数据库变更必须经过 CloudDM 审批才能执行。 ### 核心能力 - **SQL 审核** — 上线前自动检查 SQL 语句的合规性、语法风险和性能影响 - **LDAP 角色映射** — 支持 LDAP 用户组到 CloudDM 角色的自动映射,无需手动配权限 - **变更执行** — 审核通过后通过 Sidecar SQL 代理安全执行变更 - **操作审计** — 所有 SQL 操作全程记录,可追溯谁在什么时候改了什么
### 关键对接 ```mermaid graph LR LDAP["企业 LDAP"] -->|用户组映射| CloudDM["CloudDM"] User["DBA / 开发"] --> CloudDM CloudDM -->|Sidecar 代理| MySQL[("MySQL")] Deploy["服务部署完成"] -.->|自动注册| CloudDM Main["XINFRA 主系统"] -.->|SSO| CloudDM ``` ### 说明 - 基础服务交付流程中,MySQL 部署完成后自动注册至 CloudDM - LDAP 用户组映射:运维组 → DBA 角色,开发组 → 只读角色,入职即有权限
--- # 子系统 — CacheCloud(Redis 全生命周期管理)
### 定位 Redis 实例**全生命周期管理平台**,从创建到下线一站式管理,登录与监控运维统一入口。 ### 核心能力 - **全生命周期** — 实例创建、扩缩容、版本升级、下线销毁全覆盖 - **统一入口** — 登录、监控、运维操作统一在 CacheCloud 内完成 - **Agent 模式** — 通过 Agent 远程管理各机房 Redis 实例 - **诊断工具** — 大 Key / 热 Key 检测,慢查询分析,内存碎片率监控 - **监控集成** — 实例指标上报至 VictoriaMetrics,Grafana 仪表盘展示
### 关键对接 ```mermaid graph LR User["运维人员"] --> CacheCloud["CacheCloud"] CacheCloud -->|Agent| Redis[("Redis")] CacheCloud -->|指标上报| VM["VictoriaMetrics"] Deploy["服务部署完成"] -.->|自动注册| CacheCloud Main["XINFRA 主系统"] -.->|SSO| CacheCloud ``` ### 说明 - 基础服务交付流程中,Redis 部署完成后自动注册至 CacheCloud - 运维人员无需 SSH 到机器上操作,所有运维操作在 Web 界面完成
--- # 子系统 — Apollo(统一配置中心)
### 定位 携程开源的分布式配置中心,**统一管理各业务线应用配置**,按机房 Cluster 隔离部署。 ### 核心能力 - **按机房隔离** — 每个机房独立 Cluster,配置就近读取,降低跨机房延迟 - **灰度发布** — 配置变更可先推送给部分实例验证,确认无误后再全量发布 - **版本回滚** — 每次配置变更自动保存历史版本,出问题可一键回滚 - **变更审计** — 谁改了什么配置、什么时候改的、改之前是什么值,全程可追溯
### 关键对接 ```mermaid graph LR App["业务应用"] -->|ConfigService| Apollo["Apollo"] Apollo -->|按机房 Cluster 隔离| IDC1["机房 A"] Apollo -->|按机房 Cluster 隔离| IDC2["机房 B"] Main["XINFRA 主系统"] -.->|SSO| Apollo ``` ### 说明 - 本地缓存降级:Apollo 服务不可用时,应用使用本地缓存的配置继续运行 - 灰度发布流程:先推 1 台 → 观察指标 → 确认无异常 → 全量推送
--- # 子系统 — Grafana(指标可视化平台)
### 定位 **K8s / 容器 / 业务指标统一仪表盘**,对接 VictoriaMetrics 数据源,提供多维度监控可视化。 ### 核心能力 - **统一仪表盘** — K8s 集群、容器、业务指标集中展示,一个页面看全局 - **VictoriaMetrics 对接** — 作为主数据源,PromQL 直接查询指标数据 - **多维度监控** — 节点资源、Pod 状态、应用 QPS / 延迟 / 错误率 - **告警可视化** — 告警规则配置与历史趋势展示
### 关键对接 ```mermaid graph LR VM["VictoriaMetrics
指标存储"] -->|PromQL| Grafana["Grafana"] K8s["RKE2 集群"] -->|Metrics| VM Main["XINFRA 主系统"] -.->|SSO| Grafana ``` ### 说明 - 直接复用现有 Grafana 仪表盘,无需主系统重建监控视图 - 主系统资源状态看板侧重告警聚合,Grafana 侧重指标深度可视化
--- # 子系统 — Superset(日志数据可视化)
### 定位 **日志数据探索与可视化分析平台**,支持多数据源接入和丰富的图表展示。 ### 核心能力 - **日志数据探索** — 交互式查询日志数据,支持筛选、聚合、下钻 - **多数据源接入** — 支持 ClickHouse、Elasticsearch、MySQL 等多种数据源 - **丰富图表** — 折线图、柱状图、饼图、热力图、表格等 40+ 图表类型 - **仪表盘** — 拖拽式组合图表,构建业务专属的日志分析大盘
### 关键对接 ```mermaid graph LR Log["日志数据
ClickHouse / ES"] --> Superset["Superset"] User["运维 / 开发"] --> Superset Main["XINFRA 主系统"] -.->|SSO| Superset ``` ### 说明 - 与 Grafana 互补:Grafana 侧重实时指标监控,Superset 侧重日志数据的探索分析 - 支持 SQL 自定义查询,适合复杂日志场景的灵活分析
--- # 子系统 — qpass(七牛统一运维平台)
### 定位 七牛云内部的**统一运维平台**,提供基础设施运维、密码管理等基础能力。 ### 核心能力 - **密码管理** — 集中存储和管理各类账号密码、密钥、证书 - **权限控制** — 基于 RBAC 的访问权限,按业务线隔离 - **审计追溯** — 密码访问、修改、共享全程记录 - **自动轮换** — 支持定期密码轮换策略,降低泄露风险
### 关键对接 ```mermaid graph LR QPass["qpass
七牛运维平台"] -->|密码分发| RKE2["RKE2 集群"] QPass -->|密码注入| DB["MySQL / Redis"] Main["XINFRA 主系统"] -.->|SSO| QPass ``` ### 说明 - 七牛内部系统,XINFRA 通过 SSO 跳转对接 - 基础设施部署完成后,密码由 qpass 统一管理并注入