Compare commits
5 Commits
338cfce3f0
...
aa6bbb0f62
| Author | SHA1 | Date | |
|---|---|---|---|
| aa6bbb0f62 | |||
| 83b990afa9 | |||
| ebdddfcb03 | |||
| 137932996b | |||
| ed1df2a8ba |
+80
-306
@@ -72,10 +72,12 @@ layout: default
|
|||||||
|
|
||||||
### 五、架构图
|
### 五、架构图
|
||||||
|
|
||||||
- 平台分层
|
- 总体分层
|
||||||
|
- 主系统功能
|
||||||
|
- 子系统集成
|
||||||
|
- 自动化执行
|
||||||
- 部署架构
|
- 部署架构
|
||||||
- 监控告警
|
- 监控数据流
|
||||||
- 安全认证
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@@ -546,315 +548,111 @@ layout: center
|
|||||||
|
|
||||||
# 四、架构设计
|
# 四、架构设计
|
||||||
|
|
||||||
<div class="text-gray-400 mt-2">平台分层 · 部署 · 监控 · 安全</div>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 平台分层架构 — 总体分层
|
# 平台分层架构 — 总体分层
|
||||||
|
|
||||||
<div class="mt-2">
|
<div class="mt-4" style="transform: scale(1.0); transform-origin: top left;">
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
graph LR
|
graph LR
|
||||||
User["用户层<br/>LDAP SSO 统一认证"] --> Main["主系统层<br/>统一门户 + 功能模块"]
|
User["用户层<br/>LDAP SSO 统一认证"] --> Main["XINFRA 主系统层<br/>统一入口 + 资源纳管 + 交付 + 审计"]
|
||||||
Main --> Sub["子系统层<br/>独立部署,各自授权"]
|
Main --> Sub["专业子系统层<br/>Wayne / Apollo / CloudDM / 夜莺"]
|
||||||
Main --> Infra["基础设施层<br/>计算 · 网络 · 存储 · 自动化"]
|
Main --> Auto["自动化执行层<br/>Ansible 控制中心"]
|
||||||
|
Main --> Infra["基础设施层<br/>计算 · 网络 · 存储 · 监控源"]
|
||||||
Sub --> Infra
|
Sub --> Infra
|
||||||
|
Auto --> Infra
|
||||||
|
|
||||||
style User fill:#f3e8fd,stroke:#9333ea
|
style User fill:#f3e8fd,stroke:#9333ea
|
||||||
style Main fill:#e0f2fe,stroke:#0284c7
|
style Main fill:#e0f2fe,stroke:#0284c7
|
||||||
style Sub fill:#e8f0fe,stroke:#4285f4
|
style Sub fill:#e8f0fe,stroke:#4285f4
|
||||||
style Infra fill:#ecfdf5,stroke:#059669
|
style Auto fill:#ecfdf5,stroke:#059669
|
||||||
|
style Infra fill:#fff7ed,stroke:#f97316
|
||||||
```
|
```
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mt-4 text-sm text-gray-400">
|
|
||||||
|
|
||||||
> 四层模型:用户层 → 主系统层 → 子系统层 → 基础设施层,主系统是统一入口,子系统各司其职。
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 平台分层架构 — 主系统功能
|
# 平台分层架构 — 主系统功能架构
|
||||||
|
|
||||||
<div class="mt-2">
|
<div class="mt-4">
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
mindmap
|
||||||
|
root((统一入口))
|
||||||
|
SSO 登录
|
||||||
|
菜单聚合
|
||||||
|
资源纳管
|
||||||
|
K8s 集群管理
|
||||||
|
基础服务交付
|
||||||
|
数据库审核
|
||||||
|
任务中心
|
||||||
|
审计中心
|
||||||
|
监控概览
|
||||||
|
权限中心
|
||||||
|
配置接入
|
||||||
|
业务交付
|
||||||
|
```
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 自动化执行架构
|
||||||
|
|
||||||
|
<div class="mt-4">
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
graph TB
|
graph TB
|
||||||
Portal["统一门户<br/>LDAP SSO 跳转入口"]
|
Main["XINFRA 主系统"]
|
||||||
|
AC["Ansible 控制中心<br/>独立部署"]
|
||||||
|
|
||||||
subgraph 全局视图
|
subgraph 各区域
|
||||||
DashBoard["资源大盘<br/>集群拓扑 · 节点方格图"]
|
RegionA["区域 A"]
|
||||||
MonitorView["资源状态看板<br/>物理机/虚机/服务三层告警"]
|
RegionB["区域 B"]
|
||||||
|
RegionC["区域 C"]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph 运维能力
|
Main -->|任务提交 / 结果查询| AC
|
||||||
TaskCenter["任务中心<br/>Ansible/Wayne 实时日志"]
|
AC -->|SSH / Playbook| RegionA
|
||||||
OpsTerminal["运维终端<br/>Ansible / SSH<br/>仅管理员"]
|
AC -->|SSH / Playbook| RegionB
|
||||||
end
|
AC -->|SSH / Playbook| RegionC
|
||||||
|
|
||||||
subgraph 治理能力
|
|
||||||
AuditDash["审计面板<br/>登录记录 · 运维操作日志"]
|
|
||||||
CMDB["资源台账<br/>CMDB 多云同步"]
|
|
||||||
SvcDir["服务目录<br/>Consul 只读聚合"]
|
|
||||||
end
|
|
||||||
|
|
||||||
Portal --> DashBoard & MonitorView & TaskCenter & AuditDash & CMDB & SvcDir
|
|
||||||
```
|
```
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mt-2 text-sm text-gray-400">
|
|
||||||
|
|
||||||
> 主系统不替代子系统,只自建子系统无法覆盖的能力:全局视图、运维兜底、审计、资源台账。
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 平台分层架构 — 子系统集成
|
|
||||||
|
|
||||||
<div class="mt-2" style="transform: scale(0.5); transform-origin: top left; height: 50vh;">
|
|
||||||
|
# 监控与数据流
|
||||||
|
|
||||||
|
<div class="mt-4">
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
graph LR
|
graph LR
|
||||||
Portal["XINFRA 主系统"]
|
subgraph 资源层
|
||||||
|
K8s["K8s 集群"]
|
||||||
subgraph 子系统
|
Node["物理机 / 虚机"]
|
||||||
Wayne["Wayne<br/>容器发布与配额管理"]
|
|
||||||
CloudDM["CloudDM<br/>SQL 审核"]
|
|
||||||
CacheCloud["CacheCloud<br/>Redis 全生命周期"]
|
|
||||||
Apollo["Apollo<br/>配置中心"]
|
|
||||||
QPass["qpass<br/>七牛运维平台"]
|
|
||||||
Grafana["Grafana<br/>指标可视化"]
|
|
||||||
Superset["Superset<br/>日志可视化"]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
Portal -.->|SSO 跳转| Wayne & CloudDM & CacheCloud & Apollo & QPass & Grafana & Superset
|
subgraph 监控源
|
||||||
|
Nightingale["夜莺"]
|
||||||
|
end
|
||||||
|
|
||||||
Wayne -->|Client-Go| RKE2["RKE2 集群"]
|
subgraph 展示层
|
||||||
CloudDM -->|SQL 审核| MySQL[("MySQL")]
|
Main["XINFRA 监控概览"]
|
||||||
CacheCloud -->|Agent| Redis[("Redis")]
|
end
|
||||||
Apollo -->|ConfigService| RKE2
|
|
||||||
Grafana -->|PromQL| VM["VictoriaMetrics"]
|
K8s -.->|指标| Nightingale
|
||||||
Superset -->|SQL| CH["ClickHouse"]
|
Node -.->|指标| Nightingale
|
||||||
|
Nightingale --> Main
|
||||||
```
|
```
|
||||||
|
|
||||||
</div>
|
</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" style="transform: scale(0.45); 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"]
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Nginx 托管前端静态文件并反向代理后端 API,Go API Server 无状态水平扩展,WebSocket Gateway 独立处理实时日志推送
|
|
||||||
-->
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# 监控告警数据流
|
|
||||||
|
|
||||||
<div class="mt-2" style="transform: scale(0.8); 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/>去重 · 收敛 · 分级"]
|
|
||||||
end
|
|
||||||
|
|
||||||
RKE2 -.->|Metrics| VM
|
|
||||||
VM --> Grafana
|
|
||||||
VM --> Nightingale
|
|
||||||
Zabbix -.->|Webhook| Nightingale
|
|
||||||
Zabbix -->|Zabbix API| Main["XINFRA 主系统<br/>资源状态看板"]
|
|
||||||
```
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mt-58 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" style="transform: scale(1); transform-origin: top left; height: 50vh;">
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mt-30 text-sm text-gray-400">
|
|
||||||
|
|
||||||
> **双重隔离**:节点层通过 `business-line=xxx` 标签 + Taint 确保 Pod 调度隔离;命名空间层通过 ResourceQuota / LimitRange 限制资源用量上限。
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# 安全认证流程
|
|
||||||
|
|
||||||
<div class="mt-2" style="transform: scale(0.65); 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-60 text-sm text-gray-400">
|
|
||||||
|
|
||||||
> 外部 LDAP 通过 SAML 集成统一认证;子系统 SSO 通过 OAuth 2.0 对接,实现单点登录免跳转。
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
section: 对接子系统
|
section: 对接子系统
|
||||||
layout: center
|
layout: center
|
||||||
@@ -872,7 +670,7 @@ layout: center
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
### 定位
|
### 定位
|
||||||
多集群 Kubernetes 容器管理平台,负责**业务容器发布**和**命名空间与配额管理**,复用 Wayne 原生多租户能力。
|
**多租户 K8s 资源管理平台**,提供命名空间与资源配额管理。RKE2 集群和 GitLab CI 通过 Wayne 进行 K8s 资源管控与业务容器发布。
|
||||||
|
|
||||||
### 核心能力
|
### 核心能力
|
||||||
- **业务容器发布** — Deployment、StatefulSet 等工作负载的部署与回滚
|
- **业务容器发布** — Deployment、StatefulSet 等工作负载的部署与回滚
|
||||||
@@ -1015,6 +813,18 @@ graph LR
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
# 子系统 — qpass(七牛统一运维平台)
|
||||||
|
|
||||||
|
<div class="mt-8 text-lg leading-relaxed">
|
||||||
|
|
||||||
|
七牛云内部**统一运维平台**,提供基础设施运维操作的标准化入口。
|
||||||
|
|
||||||
|
XINFRA 通过 SSO 对接 qpass,运维人员从统一入口跳转即可使用,无需单独登录。
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
# 子系统 — Grafana(指标可视化平台)
|
# 子系统 — Grafana(指标可视化平台)
|
||||||
|
|
||||||
<div class="grid grid-cols-2 gap-6 mt-4">
|
<div class="grid grid-cols-2 gap-6 mt-4">
|
||||||
@@ -1076,44 +886,8 @@ graph LR
|
|||||||
Main["XINFRA 主系统"] -.->|SSO| Superset
|
Main["XINFRA 主系统"] -.->|SSO| Superset
|
||||||
```
|
```
|
||||||
|
|
||||||
### 说明
|
|
||||||
- 与 Grafana 互补:Grafana 侧重实时指标监控,Superset 侧重日志数据的探索分析
|
|
||||||
- 支持 SQL 自定义查询,适合复杂日志场景的灵活分析
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 子系统 — qpass(七牛统一运维平台)
|
|
||||||
|
|
||||||
<div class="grid grid-cols-2 gap-6 mt-4">
|
|
||||||
<div>
|
|
||||||
|
|
||||||
### 定位
|
|
||||||
七牛云内部的**统一运维平台**,提供基础设施运维、密码管理等基础能力。
|
|
||||||
|
|
||||||
### 核心能力
|
|
||||||
- **密码管理** — 集中存储和管理各类账号密码、密钥、证书
|
|
||||||
- **权限控制** — 基于 RBAC 的访问权限,按业务线隔离
|
|
||||||
- **审计追溯** — 密码访问、修改、共享全程记录
|
|
||||||
- **自动轮换** — 支持定期密码轮换策略,降低泄露风险
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
|
|
||||||
### 关键对接
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
graph LR
|
|
||||||
QPass["qpass<br/>七牛运维平台"] -->|密码分发| RKE2["RKE2 集群"]
|
|
||||||
QPass -->|密码注入| DB["MySQL / Redis"]
|
|
||||||
Main["XINFRA 主系统"] -.->|SSO| QPass
|
|
||||||
```
|
|
||||||
|
|
||||||
### 说明
|
|
||||||
- 七牛内部系统,XINFRA 通过 SSO 跳转对接
|
|
||||||
- 基础设施部署完成后,密码由 qpass 统一管理并注入
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|||||||
Reference in New Issue
Block a user