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

关键决策 — 对接夜莺而非自建监控引擎

决策

监控数据对接夜莺(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 配置管理 业务线 + 应用
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 统一管理并注入