From c2459d2f201d45710cd4d31cc93144da891ecaf1 Mon Sep 17 00:00:00 2001 From: hezhaohui Date: Fri, 10 Jul 2026 13:59:51 +0800 Subject: [PATCH] vault backup: 2026-07-10 13:59:51 --- xinfra/requirements.md | 506 ++++++++++++++++------------------------- 1 file changed, 194 insertions(+), 312 deletions(-) diff --git a/xinfra/requirements.md b/xinfra/requirements.md index c9c0b97..08d757f 100644 --- a/xinfra/requirements.md +++ b/xinfra/requirements.md @@ -7,7 +7,7 @@ create time: 2026-07-08 13:54 ## 概述 -XINFRA 是七牛云的统一基础设施平台,以**七机房容器资源池化**为核心,提供容器编排、多集群管理、数据库治理、缓存管理、CI/CD 自动化、安全态势感知、大内网互联和资源开销管控等一站式能力。 +XINFRA 是七牛云的统一基础设施平台,以**开源子系统集成 + 主系统统管**为核心架构,提供容器编排、数据库治理、缓存管理、CI/CD 自动化和资源开销管控等一站式能力。 **核心目标**: @@ -25,6 +25,7 @@ XINFRA 是七牛云的统一基础设施平台,以**七机房容器资源池 - **审计留痕**:数据库变更、容器发布、权限申请等关键操作全程可追溯 - **机房就近**:服务部署和数据访问遵循机房就近原则,降低跨机房延迟 - **平台化自治**:自助申请资源、自助发布、自助诊断,减少人工工单流转 +- **复用优先**:监控、告警等能力优先复用已有基础设施(Prometheus / Grafana),主系统只自建无法被替代的能力 --- @@ -34,28 +35,25 @@ XINFRA 是七牛云的统一基础设施平台,以**七机房容器资源池 | 概念 | 定义 | |------|------| -| 主系统 | XINFRA 平台自身的统管层,负责子系统无法覆盖的能力,如跨子系统的权限收敛、统一入口、全局调度、审计聚合、监控指标聚合和统一 DashBoard | +| 主系统 | XINFRA 平台自身的统管层,负责子系统无法覆盖的能力:统一门户(SSO 跳转入口)、审计日志聚合、资源指标面板、运维终端 | | 子系统 | XINFRA 纳管的专项平台(有独立 WebUI 和 API 服务),各司其职:**CloudDM**(数据库管理与 SQL 审核)、**Wayne**(多集群容器管理)、**CacheCloud**(Redis 缓存管理) | | 工具层 | 纳管的 CLI / IaC 工具,无常驻 WebUI,由运维人员通过命令行或脚本触发:**Ansible Playbook**(自动化部署与基础设施即代码) | ### 通用术语 -| 概念 | 定义 | -| ----------------- | -------------------------------------------------------------------------------------- | -| APIKey | Wayne 平台对外提供的 API 认证密钥,用于 CI/CD 流水线等自动化场景的身份认证,遵循最小权限原则 | -| RBAC | 基于角色的访问控制(Role-Based Access Control),通过角色分配权限,用户与角色关联实现权限隔离 | -| RKE2 | Rancher 发行的轻量级 Kubernetes 发行版,专为生产环境设计,支持离线安装和安全加固 | -| CI/CD | 持续集成/持续部署,自动化代码构建、测试和部署的流水线 | -| WAF | Web 应用防火墙(Web Application Firewall),防护 SQL 注入、XSS、CSRF 等常见 Web 攻击 | -| SLA | 服务等级协议(Service Level Agreement),定义服务可用性的承诺指标,如 99.9% 可用率 | -| CNI | 容器网络接口(Container Network Interface),K8s 中负责 Pod 网络通信的插件规范 | -| IaC | 基础设施即代码(Infrastructure as Code),通过 Ansible Playbook 等工具实现基础设施自动化管理 | -| 运维分层 | 故障按层级自愈:子系统处理应用与中间件故障,主系统管理员通过 Ansible / SSH 兜底基础设施层故障,跨层操作需管理员权限 | -| Console + Sidecar | CloudDM 的集群部署模式,Console 负责管理界面,Sidecar 负责实际 SQL 执行和代理 | -| Air-gap | 离线部署模式,适配无外网访问的内网环境,所有依赖包需预先下载 | -| Harbor | 企业级容器镜像仓库,用于存储和分发 Docker/OCI 镜像 | -| 跨系统认证 | 主系统统一 LDAP 认证,LDAP 账号、主系统用户、子系统用户三者一一对应(1:1:1 映射)。主系统管身份(Authentication),子系统管授权(Authorization) | -| containerd | K8s 默认的容器运行时(CRI 标准),负责容器生命周期管理,取代 Docker | +| 概念 | 定义 | +|------|------| +| APIKey | Wayne 平台对外提供的 API 认证密钥,用于 CI/CD 流水线等自动化场景的身份认证,遵循最小权限原则 | +| RBAC | 基于角色的访问控制(Role-Based Access Control),通过角色分配权限,用户与角色关联实现权限隔离 | +| RKE2 | Rancher 发行的轻量级 Kubernetes 发行版,专为生产环境设计,支持离线安装和安全加固 | +| CI/CD | 持续集成/持续部署,自动化代码构建、测试和部署的流水线 | +| WAF | Web 应用防火墙(Web Application Firewall),防护 SQL 注入、XSS、CSRF 等常见 Web 攻击 | +| SLA | 服务等级协议(Service Level Agreement),定义服务可用性的承诺指标,如 99.9% 可用率 | +| IaC | 基础设施即代码(Infrastructure as Code),通过 Ansible Playbook 等工具实现基础设施自动化管理 | +| 运维分层 | 故障按层级自愈:子系统处理应用与中间件故障,主系统管理员通过 Ansible / SSH 兜底基础设施层故障,跨层操作需管理员权限 | +| 统一认证 | 主系统和所有子系统共用企业 LDAP 做身份认证(SSO),主系统负责跳转入口,各子系统自行管理授权(RBAC) | + +--- ## 平台架构总览 @@ -68,104 +66,111 @@ graph TB Sec[安全团队] end - subgraph 平台层["平台层(主系统 + 子系统)"] - subgraph 主系统["主系统(XINFRA 统管层)"] - Portal[统一门户
LDAP 认证入口] - DashBoard[DashBoard
审计 + 监控聚合] - CICD[CI/CD 流水线] - CostBoard[资源指标面板] - OpsTerminal[运维终端
Ansible / SSH
「仅管理员」] - end - subgraph 子系统["子系统(独立部署,各自授权)"] - Wayne[Wayne 多集群管理] - CloudDM[CloudDM SQL 审核
多实例 HA] - CacheCloud[CacheCloud Redis 管理] - end + subgraph 主系统["主系统(XINFRA 统管层)"] + Portal["统一门户
LDAP SSO 跳转入口"] + AuditDash["审计面板
聚合子系统审计日志"] + CostBoard["资源指标面板
自建机房开销归集"] + OpsTerminal["运维终端
Ansible / SSH
仅管理员"] + end + + subgraph 子系统["子系统(独立部署,各自授权)"] + Wayne["Wayne
多集群容器管理"] + CloudDM["CloudDM
SQL 审核与数据库治理"] + CacheCloud["CacheCloud
Redis 缓存管理"] end subgraph 工具层 - Ansible[Ansible Playbook
「基础设施初始化」] + Ansible["Ansible Playbook
基础设施即代码"] end - subgraph 基础设施层 - Ingress["Ingress / WAF
「安全防护入口」"] - RKE2[RKE2 集群 x7 机房] - Network[大内网互联] + subgraph 基础设施层["基础设施层(非平台开发范围)"] + WAF["WAF / Ingress"] + RKE2["RKE2 集群 × 7 机房"] + Network["大内网互联"] end - subgraph 监控告警["监控告警(外部依赖)"] - Prometheus[(Prometheus
Metrics 采集)] - Grafana[Grafana 可视化] - Alert[告警路由
邮件 / 企业 IM] + subgraph 监控告警["监控告警(已有基础设施)"] + Prometheus[("Prometheus")] + Grafana["Grafana
监控指标直接复用"] + Alert["告警路由
邮件 / 企业 IM"] end subgraph 数据层 - MySQL[(MySQL)] - PG[(PostgreSQL)] - Oracle[(Oracle)] - CH[(ClickHouse)] - MongoDB[(MongoDB)] - Redis[(Redis)] - Harbor[(Harbor 镜像仓库)] + MySQL[("MySQL")] + PG[("PostgreSQL")] + Oracle[("Oracle")] + CH[("ClickHouse")] + Redis[("Redis")] + Harbor[("Harbor 镜像仓库")] end - Dev -->|1:1:1 用户映射| Portal - DBA -->|1:1:1 用户映射| Portal - SRE -->|1:1:1 用户映射| Portal - Sec -->|1:1:1 用户映射| Portal - Portal --> Wayne - Portal --> CICD - Portal --> CloudDM - Portal --> CacheCloud - Portal --> CostBoard + %% 用户 → 主系统(LDAP SSO 跳转) + Dev -->|LDAP SSO| Portal + DBA -->|LDAP SSO| Portal + SRE -->|LDAP SSO| Portal + Sec -->|LDAP SSO| Portal + + %% 主系统 → 子系统(跳转入口,不做用户映射) + Portal -->|跳转| Wayne + Portal -->|跳转| CloudDM + Portal -->|跳转| CacheCloud SRE --> OpsTerminal - Wayne -.->|审计上报| DashBoard - CloudDM -.->|审计上报| DashBoard - CacheCloud -.->|审计上报| DashBoard + %% 子系统 → 主系统(审计上报) + Wayne -.->|审计 Webhook| AuditDash + CloudDM -.->|审计 Webhook| AuditDash + CacheCloud -.->|审计 Webhook| AuditDash + + %% 子系统 → 基础设施 Wayne -->|Client-Go| RKE2 - CloudDM -->|SQL 审核接入
MySQL / PG / Oracle / CH / MongoDB| MySQL - CacheCloud --> Redis - CICD --> Harbor - CICD -->|APIKey 触发部署| Wayne - Ansible --> RKE2 - Ansible --> MySQL - Ansible --> Redis - OpsTerminal -->|兜底操作| RKE2 - OpsTerminal -->|兜底操作| Network + CloudDM -->|SQL 审核| MySQL + CacheCloud --> Agent["Agent 管理"] --> Redis - Ingress --> RKE2 + %% CI/CD 流水线 + GitLab["GitLab CI"] -->|镜像推送| Harbor + GitLab -->|APIKey 触发部署| Wayne + + %% 工具层 + Ansible -->|SSH| RKE2 + Ansible -->|SSH| MySQL + Ansible -->|SSH| Redis + OpsTerminal -->|兜底操作| RKE2 + + %% 基础设施层 + WAF --> RKE2 RKE2 --> Network + %% 监控(子系统直连 Prometheus,Grafana 直接复用) Wayne -.->|Metrics| Prometheus CloudDM -.->|Metrics| Prometheus CacheCloud -.->|Metrics| Prometheus Prometheus --> Grafana Prometheus --> Alert - Prometheus -.->|监控指标| DashBoard - Sec -->|安全事件查询| Ingress - CostBoard -.->|云账单 API| CH - CostBoard -.->|K8s / 节点指标| Prometheus + %% 资源指标面板 + Prometheus -->|节点/网络指标| CostBoard - classDef subsystem fill:#e8f0fe,stroke:#4285f4,stroke-width:2px classDef mainsys fill:#f3e8fd,stroke:#9333ea,stroke-width:2px + classDef subsystem fill:#e8f0fe,stroke:#4285f4,stroke-width:2px classDef tool fill:#fef3c7,stroke:#d97706,stroke-width:2px classDef monitor fill:#fff7ed,stroke:#ea580c,stroke-width:2px classDef infra fill:#ecfdf5,stroke:#059669,stroke-width:2px + classDef data fill:#fce7f3,stroke:#db2777,stroke-width:2px + class Portal,AuditDash,CostBoard,OpsTerminal mainsys class Wayne,CloudDM,CacheCloud subsystem - class Portal,DashBoard,CICD,CostBoard,OpsTerminal mainsys class Ansible tool class Prometheus,Grafana,Alert monitor - class Ingress,RKE2,Network infra + class WAF,RKE2,Network infra + class MySQL,PG,Oracle,CH,Redis,Harbor data ``` > [!tip] 图例说明 -> - **紫色节点** = 主系统(XINFRA 统管层:统一门户、DashBoard 审计+监控聚合、CI/CD、指标面板、运维终端) -> - **蓝色节点** = 子系统(有独立 WebUI 的平台:Wayne、CloudDM、CacheCloud) -> - **黄色节点** = 工具层(CLI/IaC 脚本,无常驻 WebUI:Ansible Playbook) -> - **橙色节点** = 监控告警(外部依赖:Prometheus + Grafana + 告警路由) -> - **绿色节点** = 基础设施层(Ingress/WAF、RKE2 集群、大内网互联) +> - **紫色** = 主系统(统一门户、审计面板、资源指标面板、运维终端) +> - **蓝色** = 子系统(Wayne、CloudDM、CacheCloud,各自独立部署和授权) +> - **黄色** = 工具层(Ansible Playbook,CLI/IaC 脚本) +> - **绿色** = 基础设施层(WAF、RKE2 集群、大内网,由基础设施团队维护,非平台开发范围) +> - **橙色** = 监控告警(Prometheus + Grafana + Alertmanager,已有基础设施,直接复用) +> - **粉色** = 数据层 --- @@ -176,57 +181,46 @@ graph TB | 开发人员 | 编写代码、提交发布、申请数据库/缓存资源 | Wayne、CI/CD、CloudDM、CacheCloud | | DBA | SQL 审核、数据库性能优化、容量规划 | CloudDM | | SRE / 运维 | 集群维护、自动化部署、故障响应 | Wayne、Ansible、RKE2 | -| 安全团队 | WAF 策略制定、安全审计、合规检查 | WAF、CloudDM(审计日志)、DashBoard(安全事件面板) | -| 平台管理员 | 账号权限管理、资源配置、平台运维 | 全模块管理后台、DashBoard | +| 安全团队 | WAF 策略制定、安全审计、合规检查 | WAF、审计面板 | +| 平台管理员 | 账号权限管理、资源配置、平台运维 | 全模块管理后台、审计面板 | --- ## 功能需求 -### FR-1 容器编排与资源池化 +### FR-1 容器编排与多集群管理(RKE2 + Wayne) -> 底层基于 Rancher RKE2,覆盖七机房 K8s 集群的统一生命周期管理。 - -**目标**:为全公司业务提供统一的容器运行时环境,支持跨机房资源调度。 - -| 编号 | 需求描述 | 优先级 | -|------|---------|--------| -| FR-1.1 | 每个机房独立部署一套 RKE2 集群,各集群拥有独立的 `cluster-cidr`(10.42.0.0/16)和 `service-cidr`(10.43.0.0/16) | P0 | -| FR-1.2 | 集群使用 Canal(Calico + Flannel)作为 CNI 插件,kube-proxy 默认 iptables 模式 | P0 | -| FR-1.3 | 支持 Air-gap 离线部署能力,适配内网无外网环境 | P0 | -| FR-1.4 | 节点注册支持静态 Token 和 Bootstrap 证书签名两种模式 | P1 | -| FR-1.5 | 提供容器运行时为 containerd(默认),不依赖 Docker | P0 | -| FR-1.6 | 支持 Systemd 服务管理方式部署,确保生产环境标准化 | P0 | - -**验收标准**: -- 七机房集群均可达 Ready 状态 -- Pod 跨节点通信正常(验证 CNI 插件) -- 离线环境可完成集群初始化和节点扩容 - ---- - -### FR-2 多集群容器管理(Wayne) - -> 基于 360 开源的 Wayne 平台,作为服务发布和容器管理的统一入口。 +> 底层基于 RKE2 构建七机房 K8s 集群,上层通过 Wayne 平台提供统一的容器管理入口。 **目标**:开发人员通过 Wayne UI 或 API 完成服务部署,无需直接操作 kubectl。 +#### FR-1.1 RKE2 集群(基础设施依赖) + +RKE2 集群部署和配置由基础设施团队负责,平台开发团队只需确保 Wayne 能通过 Client-Go 连接各集群。核心约束: + +| 约束项 | 说明 | +|--------|------| +| CNI 插件 | Canal(Calico + Flannel) | +| 容器运行时 | containerd(不依赖 Docker) | +| 离线部署 | 支持 Air-gap 环境 | +| 集群规模 | 七机房各一套独立集群 | + +> [!info] 详细部署规范(cluster-cidr、service-cidr、节点注册模式、Systemd 服务管理等)参见运维 SOP 文档,此处不展开。 + +#### FR-1.2 Wayne 多集群管理 + | 编号 | 需求描述 | 优先级 | |------|---------|--------| -| FR-2.1 | 支持多集群统一管理,通过 Client-Go 连接各机房 RKE2 集群 | P0 | -| FR-2.2 | RBAC 权限管理,部门角色与项目角色分离(Project → Environment → Namespace 三级结构) | P0 | -| FR-2.3 | 提供表单式(基础模式)和 YAML/JSON 编辑(高级模式)两种 K8s 对象创建方式 | P0 | -| FR-2.4 | 发布历史记录与一键回滚能力 | P0 | -| FR-2.5 | 完整审计模块,每次操作留痕,支持自定义 Webhook 回调;审计数据同时上报主系统 DashBoard | P0 | -| FR-2.6 | Web Shell 远程终端(基于权限校验的 Pod Exec) | P1 | -| FR-2.7 | 资源报表(资源使用占比、上线频次图表),核心指标同步至主系统 DashBoard | P1 | -| FR-2.8 | APIKey 开放接口,支持 CI/CD 流水线调用 | P0 | -| FR-2.9 | 认证支持 DB 内置 + LDAP 混合模式 | P0 | -| FR-2.10 | YAML 模板版本锁定,纳入代码仓库管理 | P1 | - -**用户故事**: - -> 作为开发人员,我希望通过 Wayne 界面选择项目、环境和集群,上传或编辑 Deployment YAML 后一键发布,发布后能在历史记录中查看变更详情并在异常时快速回滚。 +| FR-1.2.1 | 支持多集群统一管理,通过 Client-Go 连接各机房 RKE2 集群 | P0 | +| FR-1.2.2 | RBAC 权限管理,部门角色与项目角色分离(Project → Environment → Namespace 三级结构) | P0 | +| FR-1.2.3 | 提供表单式(基础模式)和 YAML/JSON 编辑(高级模式)两种 K8s 对象创建方式 | P0 | +| FR-1.2.4 | 发布历史记录与一键回滚能力 | P0 | +| FR-1.2.5 | 完整审计模块,每次操作留痕,支持自定义 Webhook 回调;审计数据上报主系统审计面板 | P0 | +| FR-1.2.6 | Web Shell 远程终端(基于权限校验的 Pod Exec) | P1 | +| FR-1.2.7 | 资源报表(资源使用占比、上线频次图表) | P1 | +| FR-1.2.8 | APIKey 开放接口,支持 CI/CD 流水线调用 | P0 | +| FR-1.2.9 | 认证支持 DB 内置 + LDAP 混合模式 | P0 | +| FR-1.2.10 | YAML 模板版本锁定,纳入代码仓库管理 | P1 | **验收标准**: - 开发人员可在 Wayne 中选择目标集群完成服务部署 @@ -236,29 +230,23 @@ graph TB --- -### FR-3 数据库管理与 SQL 审核(CloudDM) +### FR-2 数据库管理与 SQL 审核(CloudDM) > 基于 ClouGence 开源的 CloudDM,覆盖数据查询、权限管控、SQL 审核、数据脱敏的全链路能力。 -**目标**:所有 MySQL 操作必须经过 CloudDM 审核,防止误操作直接打到生产库。 +**目标**:所有生产库 SQL 操作必须经过 CloudDM 工单流程,无直连通道。 | 编号 | 需求描述 | 优先级 | |------|---------|--------| -| FR-3.1 | 支持 Console + Sidecar 集群部署模式,Console 端口 8222,Sidecar 端口 8080 | P0 | -| FR-3.2 | 支持 20+ 数据源类型(MySQL、Oracle、PG、ClickHouse、Redis、MongoDB 等) | P0 | -| FR-3.3 | 内置 54 条 SQL 审核规则,支持规则脚本自定义扩展 | P0 | -| FR-3.4 | SQL 上线工单流程:编写 → 预检 → DBA 审核 → 执行,支持手动/立即/定时三种执行方式 | P0 | -| FR-3.5 | 权限控制:资源权限(实例/库/Schema/表粒度)+ 功能权限(RBAC),支持申请/赋予/临时权限 | P0 | -| FR-3.6 | 数据脱敏能力,对查询结果中的敏感字段进行隐藏或转换 | P1 | -| FR-3.7 | 数据库 CI/CD:支持 Git Push / WebHook / HttpCall 三种触发方式 | P1 | -| FR-3.8 | 统一认证:支持 OpenLDAP / OIDC SSO | P1 | -| FR-3.9 | 全程审计留痕,工单流转记录可追溯;审计数据同时上报主系统 DashBoard | P0 | - -**用户故事**: - -> 作为开发人员,我希望在 CloudDM Web 界面编写 SQL 变更语句后,系统自动进行 54 条规则预检,通过后提交 DBA 审核,审核通过后在指定时间窗口执行,全程结果回填工单。 - -> 作为 DBA,我希望审核规则可按业务场景自定义,DML 和 DDL 采用不同审核标准和执行窗口。 +| FR-2.1 | 支持 Console + Sidecar 集群部署模式,保证高可用 | P0 | +| FR-2.2 | 支持 20+ 数据源类型(MySQL、Oracle、PG、ClickHouse、Redis、MongoDB 等) | P0 | +| FR-2.3 | 内置 54 条 SQL 审核规则,支持规则脚本自定义扩展 | P0 | +| FR-2.4 | SQL 上线工单流程:编写 → 预检 → DBA 审核 → 执行,支持手动/立即/定时三种执行方式 | P0 | +| FR-2.5 | 权限控制:资源权限(实例/库/Schema/表粒度)+ 功能权限(RBAC),支持申请/赋予/临时权限 | P0 | +| FR-2.6 | 数据脱敏能力,对查询结果中的敏感字段进行隐藏或转换 | P1 | +| FR-2.7 | 数据库 CI/CD:支持 Git Push / WebHook / HttpCall 三种触发方式 | P1 | +| FR-2.8 | 统一认证:对接企业 LDAP | P0 | +| FR-2.9 | 全程审计留痕,工单流转记录可追溯;审计数据上报主系统审计面板 | P0 | **验收标准**: - 所有生产库 SQL 操作必须经 CloudDM 工单流程,无直连通道 @@ -268,7 +256,7 @@ graph TB --- -### FR-4 缓存管理(CacheCloud) +### FR-3 缓存管理(CacheCloud) > 基于搜狐开源的 CacheCloud,支持 Standalone、Sentinel、Cluster 三种 Redis 架构的一站式管理。 @@ -276,19 +264,15 @@ graph TB | 编号 | 需求描述 | 优先级 | |------|---------|--------| -| FR-4.1 | 支持三种 Redis 架构:Standalone(测试)、Sentinel(生产常规,内存 ≤ 6GB)、Cluster(大数据量,内存 > 6GB) | P0 | -| FR-4.2 | Agent 代理部署在每个宿主机上,通过 SSH + 心跳管理 Redis 实例生命周期 | P0 | -| FR-4.3 | 接入层 Nginx 双机房部署 + Virtual IP 双向漂移,保证高可用 | P0 | -| FR-4.4 | 客户端接入支持 REST API(通用)、Java Jedis/Lettuce SDK、Python 接入 | P0 | -| FR-4.5 | 跨机房部署(Cross-Room):支持双活,客户端 SDK 自动双写双读和机房切换 | P1 | -| FR-4.6 | 运维能力:全局统计、工单审批、应用运维、实例运维、数据迁移 | P0 | -| FR-4.7 | 诊断工具:慢查询分析、连接数诊断、Bigkey 检测 | P1 | -| FR-4.8 | 报警组件:支持邮件、微信、HTTP 接口集成;告警事件同步至主系统 DashBoard 告警概览 | P0 | -| FR-4.9 | 临时实例自动回收策略,防止资源浪费 | P1 | - -**用户故事**: - -> 作为开发人员,我希望通过 CacheCloud 平台自助申请 Redis 实例,选择合适的架构类型和规格,审批通过后自动部署,客户端通过 SDK 获取连接信息即可使用。 +| FR-3.1 | 支持三种 Redis 架构:Standalone(测试)、Sentinel(生产常规,内存 ≤ 6GB)、Cluster(大数据量,内存 > 6GB) | P0 | +| FR-3.2 | Agent 代理部署在每个宿主机上,管理 Redis 实例生命周期 | P0 | +| FR-3.3 | 接入层 Nginx 双机房部署 + Virtual IP 双向漂移,保证高可用 | P0 | +| FR-3.4 | 客户端接入支持 REST API(通用)、Java Jedis/Lettuce SDK、Python 接入 | P0 | +| FR-3.5 | 跨机房部署(Cross-Room):支持双活,客户端 SDK 自动双写双读和机房切换 | P1 | +| FR-3.6 | 运维能力:全局统计、工单审批、应用运维、实例运维、数据迁移 | P0 | +| FR-3.7 | 诊断工具:慢查询分析、连接数诊断、Bigkey 检测 | P1 | +| FR-3.8 | 报警组件:支持邮件、微信、HTTP 接口集成;告警事件同步至主系统审计面板 | P0 | +| FR-3.9 | 临时实例自动回收策略,防止资源浪费 | P1 | **验收标准**: - 三种 Redis 架构均可正常创建和访问 @@ -297,139 +281,94 @@ graph TB --- -### FR-5 CI/CD 流水线 +### FR-4 CI/CD 流水线 -> 双引擎架构,实现代码提交到服务上线的全自动化。 +> 基于 GitLab CI,实现代码提交到服务上线的全自动化。 **目标**:CI 编译 → 镜像推送 → 触发 Wayne API 部署,全流程自动化。 | 编号 | 需求描述 | 优先级 | |------|---------|--------| -| FR-5.1 | CI 阶段:代码编译、单元测试、镜像构建并推送到 Harbor 镜像仓库 | P0 | -| FR-5.2 | CD 阶段:CI 成功后自动调用 Wayne API,传入镜像 tag 触发部署 | P0 | -| FR-5.3 | 支持 GitLab CI 作为主要 CI 引擎 | P0 | -| FR-5.4 | 部署支持多环境(dev / staging / prod),生产环境需审批卡点 | P0 | -| FR-5.5 | 部署失败时支持自动回滚到上一个稳定版本 | P1 | -| FR-5.6 | 流水线执行状态和日志可在统一界面查看 | P1 | - -**用户故事**: - -> 作为开发人员,我希望提交代码后 GitLab CI 自动编译、构建镜像并推送到 Harbor,随后自动调用 Wayne API 部署到 dev 环境;部署到 prod 环境时需要主管审批后方可执行。 +| FR-4.1 | CI 阶段:代码编译、单元测试、镜像构建并推送到 Harbor 镜像仓库 | P0 | +| FR-4.2 | CD 阶段:CI 成功后自动调用 Wayne API,传入镜像 tag 触发部署 | P0 | +| FR-4.3 | 部署支持多环境(dev / staging / prod),生产环境需审批卡点 | P0 | +| FR-4.4 | 部署失败时支持自动回滚到上一个稳定版本 | P1 | **验收标准**: - 代码提交后 10 分钟内完成 dev 环境自动部署 - prod 环境部署必须经过审批 - 部署失败自动回滚,回滚时间 < 2 分钟 ---- - -### FR-6 自动化部署(Ansible) - -> 通过 Ansible Playbook 实现基础设施即代码(IaC),用于部署和管理中间件。 - -**目标**:MySQL Server、PostgreSQL、Redis Cluster 等中间件的部署和配置管理实现自动化。 - -| 编号 | 需求描述 | 优先级 | -|------|---------|--------| -| FR-6.1 | Playbook 覆盖 MySQL Server、PostgreSQL、Redis Cluster 的部署场景 | P0 | -| FR-6.2 | Inventory 按环境分层管理(dev / test / prod) | P0 | -| FR-6.3 | 使用 Ansible 模块保证幂等性,避免 shell/command 破坏幂等 | P0 | -| FR-6.4 | 首次运行支持 Dry Run(`--check --diff`)预检 | P1 | -| FR-6.5 | Playbook 纳入 Git 版本管理,变更可追溯 | P0 | -| FR-6.6 | Jinja2 模板实现一套代码适配多环境 | P1 | - -**验收标准**: -- 一套 Playbook 可在 dev / test / prod 环境分别执行,结果一致 -- 重复执行 Playbook 不产生副作用(幂等性) -- Dry Run 输出与实际执行 diff 一致 +> [!info] 流水线执行状态和日志查看直接复用 GitLab CI 原生 Pipeline 页面,平台不自建查看界面。 --- -### FR-7 安全态势(WAF) +### FR-5 资源指标面板 -> Web 应用防火墙,提供常态化的安全防护能力。 +> 按部门、项目、机房维度归集和呈现自建机房的资源开销。 -**目标**:为平台和业务服务提供 WAF 防护,及时发现和拦截安全威胁。 +**目标**:管理层和团队负责人可按维度查看自建机房资源开销,识别闲置资源。 | 编号 | 需求描述 | 优先级 | |------|---------|--------| -| FR-7.1 | 支持常见 Web 攻击防护(SQL 注入、XSS、CSRF 等) | P0 | -| FR-7.2 | 安全规则可按业务场景自定义和调整 | P1 | -| FR-7.3 | 安全事件实时告警,支持与企业 IM 集成 | P0 | -| FR-7.4 | 安全日志可查询和分析,支持审计追溯;安全日志同步至主系统 DashBoard 安全面板 | P0 | - -**验收标准**: -- WAF 覆盖所有对外暴露的 HTTP/HTTPS 入口 -- 安全事件从发现到告警 < 1 分钟 - ---- - -### FR-8 大内网互联 - -> 实现七机房之间的网络互通,保障跨机房服务调用和数据同步。 - -**目标**:七机房容器网络、服务网络互联互通,延迟可控。 - -| 编号 | 需求描述 | 优先级 | -|------|---------|--------| -| FR-8.1 | 七机房容器网络互通,Pod 跨机房可达 | P0 | -| FR-8.2 | 跨机房服务调用延迟监控与告警 | P0 | -| FR-8.3 | 网络链路冗余,单链路故障不影响跨机房通信 | P0 | -| FR-8.4 | 跨机房流量可视化,支持按机房/服务维度查看 | P1 | - -**验收标准**: -- 同城机房间 Pod 通信延迟 < 2ms -- 跨机房服务调用成功率 > 99.99% - ---- - -### FR-9 资源指标面板 - -> 按部门、项目、机房维度归集和呈现资源开销。 - -**目标**:管理层和团队负责人可按部门、项目、机房维度查看资源开销。 - -| 编号 | 需求描述 | 优先级 | -|------|---------|--------| -| FR-9.1 | 支持多云厂商(AWS、阿里云、腾讯云等)资源开销数据接入 | P1 | -| FR-9.2 | 按部门 / 项目 / 机房三个维度聚合展示资源开销 | P0 | -| FR-9.3 | 支持月度/季度资源开销趋势对比 | P1 | -| FR-9.4 | 资源闲置告警,识别利用率过低的资源 | P2 | +| FR-5.1 | 按部门 / 项目 / 机房三个维度聚合展示资源开销,支持下钻到具体资源粒度 | P0 | +| FR-5.2 | 数据源:Prometheus 节点指标 + SNMP 网络指标,按 Namespace → Project → Department 路径归属 | P0 | +| FR-5.3 | 支持月度/季度资源开销趋势对比 | P1 | +| FR-5.4 | 资源闲置告警,识别利用率过低的资源 | P2 | **验收标准**: - 数据延迟 < 24 小时 - 支持按维度下钻到具体资源粒度 -- 自建机房资源开销由 Prometheus 节点指标 + SNMP 网络指标汇总,按 Namespace → Project → Department 路径归属 + +> [!tip] 多云厂商(AWS、阿里云、腾讯云等)账单接入推至后续迭代,初期聚焦自建机房。 --- -### FR-10 统一 DashBoard(审计 + 监控聚合) +### FR-6 审计面板(主系统) -> 将各子系统的审计日志和关键监控指标前移至主系统,提供统一查询入口,减少跨系统跳转。 +> 聚合各子系统的审计日志到主系统,提供统一查询入口,减少跨系统跳转。 -**目标**:管理员和安全团队在主系统 DashBoard 即可查看全平台审计记录和监控概览,无需逐个进入子系统。 +**目标**:管理员和安全团队在主系统即可查看全平台审计记录,无需逐个进入子系统。 + +> [!info] 监控指标(集群状态、Pod 异常数、Redis 健康度等)直接在 Grafana 中查看,主系统不做二次聚合。 | 编号 | 需求描述 | 优先级 | |------|---------|--------| -| FR-10.1 | 聚合子系统审计日志(Wayne 操作审计、CloudDM 工单审计、CacheCloud 操作审计),支持按时间/操作人/子系统/操作类型筛选查询 | P0 | -| FR-10.2 | 关键监控指标聚合展示:集群节点状态、Pod 异常数、Redis 实例健康度、SQL 工单通过率/拒绝率 | P1 | -| FR-10.3 | 安全事件面板:WAF 拦截事件聚合、异常登录检测、敏感操作告警 | P1 | -| FR-10.4 | 统一告警概览:汇总各子系统告警(CacheCloud 报警、Wayne 部署异常等),按严重级别(Critical / Warning / Info)分组展示 | P1 | -| FR-10.5 | 数据源接入规范:子系统通过 HTTP Webhook 上报审计日志,监控指标通过 PromQL 从 Prometheus 查询 | P0 | -| FR-10.6 | 权限控制:管理员角色可查看全局 DashBoard;普通用户仅查看所属项目/部门范围内的审计和监控数据 | P0 | -| FR-10.7 | DashBoard 前端集成到主系统统一门户,无需独立部署 | P0 | - -**用户故事**: - -> 作为平台管理员,我希望登录主系统后直接看到全平台审计日志和监控概览,快速定位异常操作和系统告警,而不必逐个登录 Wayne、CloudDM、CacheCloud 分别查看。 - -> 作为安全团队成员,我希望在 DashBoard 的安全事件面板中集中查看 WAF 拦截记录和异常登录事件,便于安全审计和合规检查。 +| FR-6.1 | 聚合子系统审计日志(Wayne 操作审计、CloudDM 工单审计、CacheCloud 操作审计),支持按时间/操作人/子系统/操作类型筛选查询 | P0 | +| FR-6.2 | 安全事件面板:WAF 拦截事件聚合、异常登录检测、敏感操作告警 | P1 | +| FR-6.3 | 统一告警概览:汇总各子系统告警,按严重级别(Critical / Warning / Info)分组展示 | P1 | +| FR-6.4 | 数据源接入规范:子系统通过 HTTP Webhook 上报审计日志 | P0 | +| FR-6.5 | 权限控制:管理员角色可查看全局;普通用户仅查看所属项目/部门范围内的审计数据 | P0 | +| FR-6.6 | 审计面板集成到主系统统一门户,无需独立部署 | P0 | **验收标准**: -- 子系统审计日志实时上报,DashBoard 查询延迟 < 5s -- 监控指标数据与 Grafana 源数据一致,刷新间隔 ≤ 1min +- 子系统审计日志实时上报,查询延迟 < 5s - 普通用户只能看到自身权限范围内的数据,无越权 -- DashBoard 作为主系统页面模块,可从统一门户直接访问 +- 审计面板可从统一门户直接访问 + +--- + +## 基础设施依赖(非平台开发范围) + +以下模块由基础设施团队负责,XINFRA 平台在此基础上构建。平台开发团队需了解其约束,但不负责实施。 + +### 自动化部署(Ansible Playbook) + +通过 Ansible Playbook 实现 MySQL、PostgreSQL、Redis Cluster 等中间件的自动化部署。核心要求: + +- Playbook 纳入 Git 版本管理,变更可追溯 +- 使用 Ansible 模块保证幂等性 +- Inventory 按环境分层管理(dev / test / prod) + +> [!info] 详细 Playbook 编写规范(Dry Run、Jinja2 模板等)参见运维 SOP 文档。 + +### 安全防护(WAF) + +WAF 作为基础设施层的安全防护入口,覆盖所有对外暴露的 HTTP/HTTPS 入口。安全事件实时告警,支持与企业 IM 集成。安全日志可查询和分析,支持审计追溯。 + +### 大内网互联 + +七机房之间的网络互通由网络团队负责搭建和维护。核心 SLA:同城机房间 Pod 通信延迟 < 2ms,跨机房服务调用成功率 > 99.99%。 --- @@ -472,79 +411,22 @@ graph TB --- -## 系统集成与依赖关系 - -```mermaid -graph LR - subgraph 认证 - LDAP[(企业 LDAP)] -->|统一身份认证| Portal[XINFRA 统一门户] - end - - subgraph 自动化流水线 - GitLab[GitLab CI] -->|镜像推送| Harbor[Harbor] - GitLab -->|触发部署 API| Wayne - end - - subgraph 平台层 - Portal -->|1:1:1 用户映射| Wayne - Portal -->|1:1:1 用户映射| CloudDM - Portal -->|1:1:1 用户映射| CacheCloud - Wayne -->|Client-Go| K8s[RKE2 集群] - CloudDM -->|Sidecar SQL 代理| MySQL[(MySQL)] - CacheCloud -->|Agent 管理| Redis[(Redis)] - Ansible -->|SSH| K8s - Ansible -->|SSH| MySQL - Ansible -->|SSH| Redis - Wayne -.->|审计上报| DashBoard[DashBoard
审计+监控聚合] - CloudDM -.->|审计上报| DashBoard - CacheCloud -.->|审计上报| DashBoard - end - - subgraph 跨集群 - Wayne -->|调度| ClusterA[机房 A] - Wayne -->|调度| ClusterB[机房 B] - Wayne -->|调度| ClusterN[机房 N...] - end - - subgraph 安全与网络 - WAF[WAF] -->|HTTP/HTTPS 防护| Ingress[Ingress 入口] - Ingress --> K8s - Network[大内网] -->|互联| ClusterA - Network -->|互联| ClusterB - end - - subgraph 监控告警 - K8s -.->|Metrics| Prometheus[(Prometheus)] - MySQL -.->|Metrics| Prometheus - Redis -.->|Metrics| Prometheus - Prometheus --> Grafana[Grafana] - Prometheus --> Alert[告警路由] - Prometheus -.->|监控指标| DashBoard - end - - subgraph 开销采集 - CloudAPI[云厂商 Billing API] -->|Exporter| CH[(ClickHouse)] - Prometheus -->|节点/网络指标| CostBoard[资源指标面板] - CH --> CostBoard - end -``` +## 系统集成关系 **关键集成点**: | 源 | 目标 | 接口方式 | 说明 | |----|------|---------|------| -| 企业 LDAP | XINFRA 统一门户 | LDAP Bind | 统一身份认证,LDAP、主系统、子系统用户一一对应(1:1:1) | -| XINFRA 统一门户 | 各子系统 | 内部 API / 会话代理 | 用户选择子系统后代入本地身份 | +| 企业 LDAP | 各子系统 + 主系统 | LDAP Bind / SSO | 统一身份认证,主系统做 SSO 跳转入口 | | GitLab CI | Wayne | REST API(APIKey 认证) | 自动触发部署 | | GitLab CI | Harbor | Docker Push | 镜像推送 | | Wayne | RKE2 | Client-Go(K8s API) | 容器编排操作 | | CloudDM | MySQL | Sidecar SQL 代理 | SQL 审核执行 | -| CacheCloud | Redis | Agent(SSH + 心跳) | 实例生命周期管理 | +| CacheCloud | Redis | Agent | 实例生命周期管理 | | Ansible | 各主机 | SSH | 基础设施初始化部署 | -| 各子系统 | DashBoard | HTTP Webhook | 审计日志统一归集到 DashBoard | +| 各子系统 | 审计面板 | HTTP Webhook | 审计日志统一归集 | | 各子系统 + 基础设施 | Prometheus | HTTP / Exporter | Metrics 采集 | -| Prometheus | DashBoard | PromQL 查询 | 关键监控指标聚合到 DashBoard | -| 云厂商 Billing API | ClickHouse | Exporter 定时拉取 | 多云资源开销数据归集 | +| Prometheus | Grafana | PromQL | 监控指标可视化(直接复用) | | Prometheus | 告警路由 | Alertmanager | 统一告警(邮件 / 企业 IM) | ---