Files
slide/decks/xinfra/slides.md
T

35 KiB
Raw Blame History

theme, title, author, infoLine, transition, mdc, drawings
theme title author infoLine transition mdc drawings
frankfurt XINFRA 平台架构 实训小组 true slide-left true
persist
false

XINFRA 平台需求与架构

统一基础设施管理平台 · 总体架构设计
实训小组

layout: default

目录

一、系统需求

  • 系统边界
  • 做什么 vs 不做什么

二、用户故事

  • 资源查看
  • 业务交付
  • 基础服务交付
  • 数据库审核
  • 业务线切换

三、关键决策

  • 入口聚合
  • 业务线隔离
  • Ansible 编排
  • 对接夜莺

四、关键功能

  • 资源纳管
  • 服务交付
  • 子系统功能

五、架构图

  • 平台分层
  • 部署架构
  • 监控告警
  • 安全认证

六、对接子系统

  • Wayne · CloudDM
  • CacheCloud · Apollo
  • qpass · Grafana
  • Superset

section: 系统需求 layout: center

一、系统需求

系统边界 · 做什么 vs 不做什么

系统边界

graph TB
    subgraph XINFRA["XINFRA 平台边界"]
        Portal["统一门户<br/>SSO 跳转入口"]
        Resource["资源纳管<br/>物理机/虚机/云主机/K8s"]
        Service["服务交付入口<br/>跳转 Wayne/CloudDM/Apollo/Superset"]
        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/>监控可视化"]
        Superset["Superset<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、Superset 等系统
基础服务交付 标准化模板 + Ansible 编排
数据库审核 SQL 工单、审批、审计
监控纳管 对接夜莺,按业务线展示告警
权限管理 业务线维度授权、子系统角色管理
审计 记录登录、跳转、审批和自动化执行

❌ 不做什么

范围 不做原因
替代 Wayne、Apollo、CloudDM、CacheCloud、Grafana、Superset 等 专业系统继续保留
全量自研监控和告警引擎 成本高,非当前重点
复杂 AI 排障 由其他项目负责
虚机创建主流程 统一走线下流程
大而全的运维平台 两个月内不现实,也不必要

section: 用户故事 layout: center

二、用户故事

资源查看 · 业务交付 · 基础服务交付 · 数据库审核 · 业务线切换

用户故事 — 资源查看

场景:运维人员登录 XINFRA 后,直接看到全量资源分布、业务线归属、节点状态和容量概览,不需要在多个 CMDB 和云平台之间来回切换。

链路:业务 SRE 登录 XINFRA → 选择业务线 → 平台同步 CMDB / 云平台 / RKE2 数据 → 展示全量资源大盘


用户故事 — 资源查看 · 交互图

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/>业务线归属 · 节点状态 · 容量概览

用户故事 — 业务交付

场景:业务 SRE 在 XINFRA 中进入"业务交付",选择对应业务线后跳转到 Wayne、CloudDM、Apollo 或 Superset 完成实际操作,平台保留入口、上下文和审计。

链路:业务 SRE 登录 → 进入业务交付 → 选择业务线 → 展示子系统入口 → SSO 跳转至目标系统 → 记录审计日志


用户故事 — 业务交付 · 交互图

sequenceDiagram
    actor SRE as 业务 SRE
    participant XINFRA as XINFRA
    participant Sub as 子系统<br/>Wayne/CloudDM/Apollo/Superset

    SRE->>XINFRA: 进入业务交付,选择业务线
    XINFRA-->>SRE: 展示子系统入口卡片
    SRE->>XINFRA: 点击目标子系统卡片
    XINFRA->>Sub: SSO 跳转 + 上下文传递
    Sub-->>SRE: 免登录进入子系统
    XINFRA->>XINFRA: 记录跳转审计日志

用户故事 — 基础服务交付

场景:运维人员在 XINFRA 中提交 MySQL、Redis 等基础服务交付任务,平台调用 Ansible 控制中心执行标准化部署,并在任务中心查看日志和结果。

链路:运维人员登录 → 选择服务卡片 → 填写业务线和规格 → 提交任务 → Ansible 执行部署 → 自动注册至子系统 → 部署完成通知


用户故事 — 基础服务交付 · 交互图

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 → 审计记录 → 通知完成


用户故事 — 数据库审核 · 交互图

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

隔离模型

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 Playbook),打通交付全流程。

痛点背景

现状 问题
业务上线依赖员工手动操作 交付效率低,周期长
工具链复杂,命令行门槛高 新人上手慢,培训成本高
操作方式因人而异 缺少标准化,易出错
部署过程不可见 排障困难

方案对比

方案 优点 缺点
Ansible 编排(选定) 运维团队熟悉,生态成熟 需要自建任务队列
自研部署引擎 完全可控 开发周期长,重复造轮子

执行模型

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

关键决策 — 引入统一监控引擎整合分散数据

决策

引入可对接多种业务线、多种场景、多种数据源的监控引擎,整合分散的监控数据,而非自建。

背景

现状 问题
监控数据散落在不同服务和渠道 缺少统一的数据整合
告警分散在基础资源和业务系统 排障时信息割裂
夜莺已有告警聚合能力 重复建设浪费资源
业务线需要隔离查看告警 缺少统一看板视图

方案对比

方案 优点 缺点
对接夜莺(选定) 支持多数据源多场景,生态成熟 依赖夜莺稳定性
仅做文档指引 零成本 无法统一视图

数据流

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 配置管理 业务线 + 应用
Superset 日志数据分析 业务线 + 数据源

交付流程

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 跳转
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

五、架构图

平台分层 · 部署 · 监控 · 安全

平台分层架构 — 总体分层

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/>配置中心"]
        QPass["qpass<br/>七牛运维平台"]
        Grafana["Grafana<br/>指标可视化"]
        Superset["Superset<br/>日志可视化"]
    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"]

平台分层架构 — 基础设施层

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"]
            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

监控告警数据流

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 · CloudDM · CacheCloud · Apollo · qpass · Grafana · Superset

子系统 — Wayne(多集群容器管理)

定位

多集群 Kubernetes 容器管理平台,负责业务容器发布和命名空间与配额管理,复用 Wayne 原生多租户能力。

核心能力

  • 业务容器发布 — Deployment、StatefulSet 等工作负载的部署与回滚
  • 命名空间管理 — 按业务线创建 Namespace,隔离资源边界
  • 配额管理 — 为每个 Namespace 设置 ResourceQuota,控制 CPU / 内存上限
  • 多租户隔离 — 复用 Wayne 原生租户模型,业务线 ↔ Namespace 自动映射
  • CI/CD 集成 — 对外提供 APIKey,GitLab CI 自动触发部署

关键对接

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 操作全程记录,可追溯谁在什么时候改了什么

关键对接

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 仪表盘展示

关键对接

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,配置就近读取,降低跨机房延迟
  • 灰度发布 — 配置变更可先推送给部分实例验证,确认无误后再全量发布
  • 版本回滚 — 每次配置变更自动保存历史版本,出问题可一键回滚
  • 变更审计 — 谁改了什么配置、什么时候改的、改之前是什么值,全程可追溯

关键对接

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 / 延迟 / 错误率
  • 告警可视化 — 告警规则配置与历史趋势展示

关键对接

graph LR
    VM["VictoriaMetrics<br/>指标存储"] -->|PromQL| Grafana["Grafana"]
    K8s["RKE2 集群"] -->|Metrics| VM
    Main["XINFRA 主系统"] -.->|SSO| Grafana

说明

  • 直接复用现有 Grafana 仪表盘,无需主系统重建监控视图
  • 主系统资源状态看板侧重告警聚合,Grafana 侧重指标深度可视化

子系统 — Superset(日志数据可视化)

定位

日志数据探索与可视化分析平台,支持多数据源接入和丰富的图表展示。

核心能力

  • 日志数据探索 — 交互式查询日志数据,支持筛选、聚合、下钻
  • 多数据源接入 — 支持 ClickHouse、Elasticsearch、MySQL 等多种数据源
  • 丰富图表 — 折线图、柱状图、饼图、热力图、表格等 40+ 图表类型
  • 仪表盘 — 拖拽式组合图表,构建业务专属的日志分析大盘

关键对接

graph LR
    Log["日志数据<br/>ClickHouse / ES"] --> Superset["Superset"]
    User["运维 / 开发"] --> Superset
    Main["XINFRA 主系统"] -.->|SSO| Superset

说明

  • 与 Grafana 互补:Grafana 侧重实时指标监控,Superset 侧重日志数据的探索分析
  • 支持 SQL 自定义查询,适合复杂日志场景的灵活分析

子系统 — qpass(七牛统一运维平台)

定位

七牛云内部的统一运维平台,提供基础设施运维、密码管理等基础能力。

核心能力

  • 密码管理 — 集中存储和管理各类账号密码、密钥、证书
  • 权限控制 — 基于 RBAC 的访问权限,按业务线隔离
  • 审计追溯 — 密码访问、修改、共享全程记录
  • 自动轮换 — 支持定期密码轮换策略,降低泄露风险

关键对接

graph LR
    QPass["qpass<br/>七牛运维平台"] -->|密码分发| RKE2["RKE2 集群"]
    QPass -->|密码注入| DB["MySQL / Redis"]
    Main["XINFRA 主系统"] -.->|SSO| QPass

说明

  • 七牛内部系统,XINFRA 通过 SSO 跳转对接
  • 基础设施部署完成后,密码由 qpass 统一管理并注入