Files
slide/decks/xinfra/slides.md
T

894 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
theme: frankfurt
title: XINFRA 平台架构
author: 实训小组
infoLine: true
transition: slide-left
mdc: true
drawings:
persist: false
---
# XINFRA 平台架构
<div class="text-xl mt-4 text-gray-400">
统一基础设施管理平台 · 总体架构设计
</div>
<div class="mt-8 text-lg text-gray-500">
实训小组
</div>
<!--
封面:XINFRA 平台架构总览
-->
---
layout: default
---
# 目录
<div class="grid grid-cols-4 gap-8 mt-8">
<div>
### 一、名词概述
- 组内约定
- 通用术语
</div>
<div>
### 二、架构图
- 平台分层架构
- 部署架构
- 监控告警链路
- 安全认证流程
</div>
<div>
### 三、对接子系统
- Wayne
- CloudDM
- CacheCloud
- Apollo
- Grafana
- qpass
</div>
<div>
### 四、架构描述
- 技术选型
- 安全机制
- 运维模型与风险
</div>
</div>
---
section: 名词概述
layout: center
---
# 一、名词概述
<div class="text-gray-400 mt-2">平台核心概念与通用术语</div>
---
layout: default
---
# 组内约定
<div class="grid grid-cols-2 gap-6 mt-4">
<div>
### 主系统
XINFRA 平台自身的统管层,负责子系统无法覆盖的能力:
- 统一门户(SSO 跳转入口)
- 资源大盘、运维终端
- 登录审计与运维操作审计
- 资源指标面板
</div>
<div>
### 子系统
XINFRA 纳管的专项平台(独立 WebUI + API):
- **Wayne** — 多集群容器管理
- **CloudDM** — 数据库管理与 SQL 审核
- **CacheCloud** — Redis 缓存管理
- **Apollo** — 配置中心
- **Grafana** — 监控可视化
- **qpass** — 密码管理平台
</div>
</div>
<div class="grid grid-cols-2 gap-6 mt-6">
<div>
### 工具层
纳管的 CLI / IaC 工具,无常驻 WebUI:
- **Ansible Playbook** — 自动化部署与基础设施即代码
</div>
<div>
### 监控告警层
聚合异构告警源,统一去重、收敛、分级:
- **Nightingale(夜莺)** — 告警聚合引擎
- **VictoriaMetrics** — 容器/业务指标存储
- **Zabbix** — 物理机硬件监控
</div>
</div>
<!--
主系统不替代子系统,只自建子系统无法覆盖的能力
-->
---
# 通用术语(一)
<div class="grid grid-cols-2 gap-x-8 gap-y-3 mt-4 text-sm">
<div>
| 术语 | 说明 |
|------|------|
| **APIKey** | Wayne 对外 API 认证密钥,CI/CD 自动化场景使用,最小权限 |
| **RBAC** | 基于角色的访问控制,用户与角色关联实现权限隔离 |
| **RKE2** | Rancher K8s 发行版,CIS 安全加固,支持离线安装 |
| **Calico BGP** | 纯路由模式无隧道开销,每集群独立 AS 号,跨机房扁平网络 |
| **Ceph RBD** | 分布式块存储,供给 K8s PV 给有状态服务 |
| **Nightingale** | 夜莺,统一告警聚合引擎,去重收敛分级后推送 |
| **Apollo** | 携程开源配置中心,多机房部署、灰度、回滚、审计 |
</div>
<div>
| 术语 | 说明 |
|------|------|
| **Consul** | 各机房服务注册发现,XINFRA 只读聚合展示 |
| **CD** | 持续部署,自动化服务上线流水线 |
| **WAF** | Web 应用防火墙,防护 SQL 注入、XSS、CSRF |
| **SLA** | 服务等级协议,定义可用性承诺指标 |
| **IaC** | 基础设施即代码,通过 Ansible 实现自动化管理 |
| **SINA CMDB** | 公司内部 CMDB,物理机与虚机资产数据基础来源 |
| **SSO** | 单点登录,主系统通过 LDAP 统一认证后跳转子系统 |
</div>
</div>
---
section: 架构图
layout: center
---
# 二、架构图
<div class="text-gray-400 mt-2">平台分层 · 部署 · 监控 · 安全</div>
---
# 平台分层架构 — 总体分层
<div class="mt-2">
```mermaid
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
```
</div>
<div class="mt-4 text-sm text-gray-400">
> 四层模型:用户层 → 主系统层 → 子系统层 → 基础设施层,主系统是统一入口,子系统各司其职。
</div>
---
# 平台分层架构 — 主系统功能
<div class="mt-2">
```mermaid
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
```
</div>
<div class="mt-2 text-sm text-gray-400">
> 主系统不替代子系统,只自建子系统无法覆盖的能力:全局视图、运维兜底、审计、资源台账。
</div>
---
# 平台分层架构 — 子系统集成
<div class="mt-2">
```mermaid
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
```
</div>
<div class="mt-2 text-sm text-gray-400">
> 子系统各自独立部署和授权,主系统只做 SSO 跳转入口,各子系统自行维护操作审计。
</div>
---
# 平台分层架构 — 基础设施层
<div class="mt-2" style="transform: scale(0.5); transform-origin: top left; height: 50vh;">
```mermaid
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
```
</div>
<div class="mt-2 text-sm text-gray-400">
> RKE2 是计算底座,Calico BGP 构建跨机房扁平网络,Ceph RBD 提供持久化存储,Ansible 贯穿自动化运维。
</div>
---
# 部署架构
<div class="mt-2" style="transform: scale(0.5); transform-origin: top left; height: 50vh;">
```mermaid
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
```
</div>
<!--
Nginx 托管前端静态文件并反向代理后端 API,Go API Server 无状态水平扩展,WebSocket Gateway 独立处理实时日志推送
-->
---
# 监控告警数据流
<div class="mt-2" style="transform: scale(0.5); transform-origin: top left; height: 50vh;">
```mermaid
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/>资源状态看板"]
```
</div>
<div class="mt-2 text-sm text-gray-400">
> Zabbix 硬件监控分两条链路:告警事件通过 Webhook 推送至夜莺统一聚合;可观测数据(IPMI/温度/电源/风扇等)由主系统直接调用 Zabbix API 采集展示。
</div>
---
# 基础服务交付流程
<div class="mt-2">
```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: 部署完成,跳转任务中心
```
</div>
<div class="mt-2 text-sm text-gray-400">
> 用户通过服务卡片填参 → Ansible 自动化部署 → 完成后自动注册到对应子系统,全程日志实时查看。
</div>
---
# 多租户隔离模型(Phase 2+)
<div class="mt-2" style="transform: scale(0.5); transform-origin: top left; height: 50vh;">
```mermaid
graph TB
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
```
</div>
<div class="mt-4 text-sm text-gray-400">
> **双重隔离**:节点层通过 `business-line=xxx` 标签 + Taint 确保 Pod 调度隔离;命名空间层通过 ResourceQuota / LimitRange 限制资源用量上限。
> Phase 1 仅做基础设施准备(节点标签预留),多租户功能为 Phase 2+。
</div>
---
# 安全认证流程
<div class="mt-2" style="transform: scale(0.5); transform-origin: top left; height: 50vh;">
```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: 跳转至子系统(免登录)
```
</div>
<div class="mt-2 text-sm text-gray-400">
> 外部 LDAP 通过 SAML 集成统一认证;子系统 SSO 通过 OAuth 2.0 对接,实现单点登录免跳转。
</div>
---
section: 对接子系统
layout: center
---
# 三、对接子系统
<div class="text-gray-400 mt-2">Wayne · CloudDM · CacheCloud · Apollo · Grafana · qpass</div>
---
# 子系统 — Wayne(多集群容器管理)
<div class="grid grid-cols-2 gap-6 mt-4">
<div>
### 定位
多集群 Kubernetes 容器管理平台,统一管理 7 机房 RKE2 集群。
### 核心能力
- **多集群纳管** — 通过 Client-Go 对接各机房 RKE2 集群 API
- **应用部署** — 支持 Deployment、StatefulSet 等 K8s 工作负载管理
- **CI/CD 集成** — 对外提供 APIKey,GitLab CI 自动触发部署
- **一键回滚** — 应用发布异常时快速回滚至历史版本
</div>
<div>
### 关键对接
```mermaid
graph LR
CI["GitLab CI"] -->|APIKey 认证| Wayne["Wayne"]
Wayne -->|Client-Go| RKE2["RKE2 集群"]
Main["XINFRA 主系统"] -.->|SSO| Wayne
```
### 说明
- 独立 WebUI + API 服务
- APIKey 遵循最小权限原则
- 主系统通过 SSO 跳转,各自维护操作审计
</div>
</div>
---
# 子系统 — CloudDM(数据库管理与 SQL 审核)
<div class="grid grid-cols-2 gap-6 mt-4">
<div>
### 定位
SQL 审核与变更平台,统一管控数据库上线流程。
### 核心能力
- **SQL 审核** — 上线前自动检查 SQL 语句合规性与风险
- **多库支持** — 原生支持 MySQL,后续扩展 PostgreSQL 等
- **变更执行** — 审核通过后通过 Sidecar SQL 代理执行变更
- **操作审计** — 所有 SQL 操作全程记录,可追溯
</div>
<div>
### 关键对接
```mermaid
graph LR
User["DBA / 开发"] --> CloudDM["CloudDM"]
CloudDM -->|Sidecar 代理| MySQL[("MySQL")]
Deploy["服务部署完成"] -.->|自动注册| CloudDM
Main["XINFRA 主系统"] -.->|SSO| CloudDM
```
### 说明
- 基础服务交付流程中,MySQL 部署完成后自动注册至 CloudDM
- 白名单机制防止规则误判拦截合法 SQL
</div>
</div>
---
# 子系统 — CacheCloud(Redis 缓存管理)
<div class="grid grid-cols-2 gap-6 mt-4">
<div>
### 定位
Redis 实例生命周期管理平台,覆盖创建、监控、运维全流程。
### 核心能力
- **实例管理** — Redis 实例的创建、扩缩容、下线
- **Agent 模式** — 通过 Agent 远程管理各机房 Redis 实例
- **诊断工具** — 大 Key / 热 Key 检测,慢查询分析
- **监控集成** — 实例指标上报至 VictoriaMetrics
</div>
<div>
### 关键对接
```mermaid
graph LR
User["运维人员"] --> CacheCloud["CacheCloud"]
CacheCloud -->|Agent| Redis[("Redis")]
Deploy["服务部署完成"] -.->|自动注册| CacheCloud
Main["XINFRA 主系统"] -.->|SSO| CacheCloud
```
### 说明
- 基础服务交付流程中,Redis 部署完成后自动注册至 CacheCloud
- 配合应用侧治理解决大 Key / 热 Key 性能问题
</div>
</div>
---
# 子系统 — Apollo(配置中心)
<div class="grid grid-cols-2 gap-6 mt-4">
<div>
### 定位
携程开源的分布式配置中心,统一管理各业务线应用配置。
### 核心能力
- **多机房部署** — 支持 Cluster 模式,7 机房独立部署
- **配置灰度** — 配置变更可灰度发布,降低变更风险
- **版本回滚** — 配置历史版本管理,异常时一键回滚
- **操作审计** — 配置变更全程记录,可追溯
</div>
<div>
### 关键对接
```mermaid
graph LR
App["业务应用"] -->|ConfigService| Apollo["Apollo"]
Apollo -->|配置下发| RKE2["RKE2 集群"]
Main["XINFRA 主系统"] -.->|SSO| Apollo
```
### 说明
- 本地缓存降级保障多机房配置一致性
- 灰度发布验证避免配置下发错误
</div>
</div>
---
# 子系统 — Grafana(监控可视化)
<div class="grid grid-cols-2 gap-6 mt-4">
<div>
### 定位
统一监控可视化平台,对接 VictoriaMetrics 等数据源。
### 核心能力
- **仪表盘** — 集群、节点、应用多维度监控面板
- **PromQL 查询** — 直接查询 VictoriaMetrics 中的指标数据
- **告警可视化** — 告警规则与历史趋势展示
- **多数据源** — 支持 VictoriaMetrics、Zabbix 等多种数据源
</div>
<div>
### 关键对接
```mermaid
graph LR
VM["VictoriaMetrics"] -->|PromQL| Grafana["Grafana"]
Zabbix["Zabbix"] -->|数据源| Grafana
Main["XINFRA 主系统"] -.->|SSO| Grafana
```
### 说明
- 直接复用现有 Grafana 仪表盘,无需主系统重建监控视图
- 主系统资源状态看板侧重告警聚合,Grafana 侧重指标可视化
</div>
</div>
---
# 子系统 — qpass(密码管理平台)
<div class="grid grid-cols-2 gap-6 mt-4">
<div>
### 定位
企业级密码管理平台,统一管理各业务线和基础设施的账号密码。
### 核心能力
- **密码托管** — 集中存储和管理各类账号密码、密钥、证书
- **权限控制** — 基于 RBAC 的密码访问权限,按业务线隔离
- **审计追溯** — 密码访问、修改、共享全程记录
- **自动轮换** — 支持定期密码轮换策略,降低泄露风险
</div>
<div>
### 关键对接
```mermaid
graph LR
QPass["qpass"] -->|密码分发| RKE2["RKE2 集群"]
QPass -->|密码注入| DB["MySQL / Redis"]
Main["XINFRA 主系统"] -.->|SSO| QPass
```
### 说明
- 基础设施部署完成后,密码由 qpass 统一管理并注入
- 配合 Ansible 实现自动化密码分发与轮换
</div>
</div>
---
section: 架构描述
layout: center
---
# 四、架构描述
<div class="text-gray-400 mt-2">技术选型 · 安全机制 · 运维模型</div>
---
layout: default
---
# 技术选型
<div class="grid grid-cols-2 gap-6 mt-4 text-sm">
<div>
| 层级 | 选型 |
|------|------|
| 前端框架 | Vue 3 + Element Plus |
| 后端框架 | Go + Gin |
| 前后端通信 | REST/JSON,URL 路径版本 |
| 主系统数据库 | MySQL 8.0 |
| 缓存 | Redis |
| 前端部署 | Nginx |
| 主系统部署 | K8s Deployment |
</div>
<div>
| 层级 | 选型 |
|------|------|
| SSO 协议 | OAuth 2.0 + SAML |
| 告警数据源 | Nightingale + Zabbix API |
| Ansible 调度 | SSH 直接执行 |
| 实时推送 | 原生 WebSocket |
| 接口文档 | Swagger/OpenAPI |
| 界面语言 | 纯中文 |
| 测试策略 | 后端单元 + 集成测试 |
</div>
</div>
### 选型依据
| 选型 | 理由 | 备选淘汰原因 |
|------|------|------------|
| Vue 3 + Element Plus | 七牛内部技术栈统一,团队有 Vue 2 迁移经验 | React + Ant Design — 学习成本更高 |
| Go + Gin | Wayne/CloudDM 同生态,可复用 Client-Go、GORM | Java Spring Boot — 部署资源占用更大 |
| MySQL 8.0 | 运维团队已有经验和工具链,CloudDM 原生支持 | PostgreSQL — 团队运维经验不足 |
---
# 安全机制
<div class="grid grid-cols-2 gap-6 mt-4">
<div>
### 认证与授权
| 层面 | 机制 |
|------|------|
| 身份认证 | SAML + OAuth 2.0 |
| 访问控制 | RBAC + 业务线维度 |
| 传输安全 | HTTPS + TLS 1.2+ |
| 数据加密 | AES-256,敏感字段加密存储 |
| APIKey 管理 | SHA-256 哈希存储,scope 粒度授权 |
</div>
<div>
### 审计与隔离
| 层面 | 机制 |
|------|------|
| 审计留痕 | 登录/运维/API 全程记录,不可篡改 |
| 网络隔离 | BGP + 防火墙,管理面与数据面分离 |
| 凭证管理 | 禁止默认凭证,Vault / K8s Secret |
| Ansible/SSH | 仅管理员可见,普通用户菜单不包含 |
</div>
</div>
<div class="mt-6 p-4 bg-blue-50 rounded-lg text-sm text-blue-800">
> **RBAC 二维模型**:权限维度(角色能力)× 业务线维度(资源范围),遵循最小权限原则。
> 所有跨层操作全程审计留痕。
</div>
---
# 运维分层模型
<div class="mt-4">
| 故障层级 | 处理方 | 工具链 | 权限要求 |
|---------|--------|--------|---------|
| 应用发布异常 | 子系统自愈 | Wayne 一键回滚 | 项目成员 |
| 中间件故障 | 子系统自恢复 | CacheCloud / CloudDM 内置能力 | 子系统运维角色 |
| 配置变更异常 | Apollo 回滚 | Apollo 版本回滚 + 灰度发布 | 配置管理员 |
| 基础设施故障 | 主系统管理员 | Ansible Playbook / SSH 终端 | 仅主系统管理员 |
| 机房级故障 | 主系统管理员 | Ansible + 大内网链路切换 | 仅主系统管理员 |
</div>
<div class="mt-6 p-4 bg-amber-50 rounded-lg text-sm text-amber-800">
> 故障按层级自愈,跨层操作需主系统管理员权限。Ansible / SSH 终端等基础设施级操作仅对管理员角色可见,所有跨层操作全程审计留痕。
</div>
---
# 风险与约束
<div class="grid grid-cols-2 gap-6 mt-4 text-sm">
<div>
| 风险 | 缓解措施 |
|------|---------|
| RKE2 版本升级不兼容 | 测试环境验证,灰度发布 |
| Wayne 开源维护不确定 | 内部 Fork,保持核心可维护 |
| 七机房网络链路故障 | 网络冗余 + BGP 自动切换 |
| SQL 审核规则误判 | 白名单机制 + 规则持续调优 |
| Redis 大 Key / 热 Key | CacheCloud 诊断 + 应用侧治理 |
</div>
<div>
| 风险 | 缓解措施 |
|------|---------|
| Apollo 多机房配置一致性 | 本地缓存降级 + 灰度发布 |
| Consul 跨机房同步延迟 | 30 秒轮询 + 健康状态标注 |
| 云平台 API 限流 | 增量同步 + 重试 + 状态告警 |
| AWX 未引入,Ansible 直调 | 自建任务队列 + WebSocket 日志 |
| Go/Gin 开发人力 | 复用 Wayne/CloudDM 生态降低学习成本 |
</div>
</div>
---
layout: center
---
# 总结
<div class="grid grid-cols-3 gap-8 mt-8 text-sm">
<div class="text-center">
### 🏗 四层架构
用户层 → 主系统层<br/>→ 子系统层 → 基础设施层
</div>
<div class="text-center">
### 🔐 统一安全
LDAP SAML 认证<br/>RBAC + 业务线隔离<br/>全程审计留痕
</div>
<div class="text-center">
### 🚀 自动化运维
Ansible IaC 交付<br/>WebSocket 实时日志<br/>故障分层自愈
</div>
</div>
<div class="mt-12 text-gray-400 text-center">
XINFRA — 统一基础设施管理平台
</div>