From 4d6f4c9d3c47badc14552fc8fa39b7ba3e21eed4 Mon Sep 17 00:00:00 2001 From: hezhaohui Date: Wed, 8 Jul 2026 14:02:55 +0800 Subject: [PATCH] vault backup: 2026-07-08 14:02:55 --- xinfra/Index.md | 6 + xinfra/requirements.md | 422 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 428 insertions(+) create mode 100644 xinfra/requirements.md diff --git a/xinfra/Index.md b/xinfra/Index.md index d07f2e1..4db4233 100644 --- a/xinfra/Index.md +++ b/xinfra/Index.md @@ -1,2 +1,8 @@ // xinfra 项目内容索引 +## 文档导航 + +| 文档 | 说明 | +|------|------| +| [[requirements]] | 平台需求文档(功能需求 + 非功能需求 + 架构总览) | + diff --git a/xinfra/requirements.md b/xinfra/requirements.md new file mode 100644 index 0000000..ae5832f --- /dev/null +++ b/xinfra/requirements.md @@ -0,0 +1,422 @@ +--- +tags: [xinfra, requirements, infra] +create time: 2026-07-08 13:54 +--- + +# XINFRA 平台需求文档 + +## 概述 + +XINFRA 是七牛云的统一基础设施平台,以**七机房容器资源池化**为核心,提供容器编排、多集群管理、数据库治理、缓存管理、CI/CD 自动化、安全态势感知、大内网互联和多云成本管控等一站式能力。 + +**核心目标**: + +| # | 目标 | 说明 | +|---|------|------| +| 1 | 统一入口 | 所有基础设施操作收敛到平台化界面,降低命令行直接操作风险 | +| 2 | 多机房资源池化 | 七机房 RKE2 集群统一纳管,实现跨机房调度与服务发现 | +| 3 | 安全合规 | 数据库操作全程审计、SQL 上线必须经过审核、WAF 防护常态化 | +| 4 | 效率提升 | CI/CD 流水线自动触发部署,Ansible 实现基础设施即代码 | +| 5 | 成本可见 | 多云资源成本统一归集,按部门/项目/机房维度呈现 | + +**设计原则**: + +- **最小权限**:所有操作默认走 RBAC,APIKey 遵循最小授权范围 +- **审计留痕**:数据库变更、容器发布、权限申请等关键操作全程可追溯 +- **机房就近**:服务部署和数据访问遵循机房就近原则,降低跨机房延迟 +- **平台化自治**:自助申请资源、自助发布、自助诊断,减少人工工单流转 + +--- + +## 平台架构总览 + +```mermaid +graph TB + subgraph 用户层 + Dev[开发人员] + DBA[DBA] + SRE[SRE / 运维] + end + + subgraph 平台层 + Wayne[Wayne 多集群管理] + CloudDM[CloudDM SQL 审核] + CacheCloud[CacheCloud Redis 管理] + CICD[CI/CD 流水线] + CostBoard[多云成本看板] + end + + subgraph 基础设施层 + RKE2[RKE2 集群 x7 机房] + Ansible[Ansible Playbook] + WAF[WAF 安全态势] + Network[大内网互联] + end + + subgraph 数据层 + MySQL[(MySQL)] + Redis[(Redis)] + Harbor[(Harbor 镜像仓库)] + end + + Dev --> Wayne + Dev --> CICD + DBA --> CloudDM + SRE --> Ansible + SRE --> CacheCloud + + Wayne --> RKE2 + CloudDM --> MySQL + CacheCloud --> Redis + CICD --> Harbor + CICD --> Wayne + Ansible --> RKE2 + Ansible --> MySQL + Ansible --> Redis + RKE2 --> Network +``` + +--- + +## 干系人与角色 + +| 角色 | 职责 | 平台交互模块 | +|------|------|-------------| +| 开发人员 | 编写代码、提交发布、申请数据库/缓存资源 | Wayne、CI/CD、CloudDM、CacheCloud | +| DBA | SQL 审核、数据库性能优化、容量规划 | CloudDM | +| SRE / 运维 | 集群维护、自动化部署、故障响应 | Wayne、Ansible、RKE2 | +| 安全团队 | WAF 策略制定、安全审计、合规检查 | WAF、CloudDM(审计日志) | +| 平台管理员 | 账号权限管理、资源配置、平台运维 | 全模块管理后台 | + +--- + +## 功能需求 + +### FR-1 容器编排与资源池化 + +> 底层基于 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 平台,作为服务发布和容器管理的统一入口。 + +**目标**:开发人员通过 Wayne UI 或 API 完成服务部署,无需直接操作 kubectl。 + +| 编号 | 需求描述 | 优先级 | +|------|---------|--------| +| 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 回调 | P0 | +| FR-2.6 | Web Shell 远程终端(基于权限校验的 Pod Exec) | P1 | +| FR-2.7 | 资源报表(资源使用占比、上线频次图表) | P1 | +| FR-2.8 | APIKey 开放接口,支持 CI/CD 流水线调用 | P0 | +| FR-2.9 | 认证支持 DB 内置 + LDAP 混合模式 | P0 | +| FR-2.10 | YAML 模板版本锁定,纳入代码仓库管理 | P1 | + +**用户故事**: + +> 作为开发人员,我希望通过 Wayne 界面选择项目、环境和集群,上传或编辑 Deployment YAML 后一键发布,发布后能在历史记录中查看变更详情并在异常时快速回滚。 + +**验收标准**: +- 开发人员可在 Wayne 中选择目标集群完成服务部署 +- 每次部署操作有完整审计日志 +- CI/CD 流水线可通过 APIKey 调用 Wayne API 触发部署 +- 回滚操作可在 1 分钟内完成 + +--- + +### FR-3 数据库管理与 SQL 审核(CloudDM) + +> 基于 ClouGence 开源的 CloudDM,覆盖数据查询、权限管控、SQL 审核、数据脱敏的全链路能力。 + +**目标**:所有 MySQL 操作必须经过 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 | 全程审计留痕,工单流转记录可追溯 | P0 | + +**用户故事**: + +> 作为开发人员,我希望在 CloudDM Web 界面编写 SQL 变更语句后,系统自动进行 54 条规则预检,通过后提交 DBA 审核,审核通过后在指定时间窗口执行,全程结果回填工单。 + +> 作为 DBA,我希望审核规则可按业务场景自定义,DML 和 DDL 采用不同审核标准和执行窗口。 + +**验收标准**: +- 所有生产库 SQL 操作必须经 CloudDM 工单流程,无直连通道 +- 审核规则可按需配置白名单豁免 +- 生产部署已替换默认 JWT 密钥和管理员密码 + +--- + +### FR-4 缓存管理(CacheCloud) + +> 基于搜狐开源的 CacheCloud,支持 Standalone、Sentinel、Cluster 三种 Redis 架构的一站式管理。 + +**目标**:所有 Redis 场景通过 CacheCloud 统一实例申请和管理,降低大规模 Redis 运维成本。 + +| 编号 | 需求描述 | 优先级 | +|------|---------|--------| +| 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 接口集成 | P0 | +| FR-4.9 | 临时实例自动回收策略,防止资源浪费 | P1 | + +**用户故事**: + +> 作为开发人员,我希望通过 CacheCloud 平台自助申请 Redis 实例,选择合适的架构类型和规格,审批通过后自动部署,客户端通过 SDK 获取连接信息即可使用。 + +**验收标准**: +- 三种 Redis 架构均可正常创建和访问 +- Agent 心跳正常,实例生命周期管理(启停、备份恢复)功能可用 +- 跨机房双活场景下故障切换时间 < 30s + +--- + +### FR-5 CI/CD 流水线 + +> 双引擎架构,实现代码提交到服务上线的全自动化。 + +**目标**: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 环境时需要主管审批后方可执行。 + +**验收标准**: +- 代码提交后 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 一致 + +--- + +### FR-7 安全态势(WAF) + +> Web 应用防火墙,提供常态化的安全防护能力。 + +**目标**:为平台和业务服务提供 WAF 防护,及时发现和拦截安全威胁。 + +| 编号 | 需求描述 | 优先级 | +|------|---------|--------| +| FR-7.1 | 支持常见 Web 攻击防护(SQL 注入、XSS、CSRF 等) | P0 | +| FR-7.2 | 安全规则可按业务场景自定义和调整 | P1 | +| FR-7.3 | 安全事件实时告警,支持与企业 IM 集成 | P0 | +| FR-7.4 | 安全日志可查询和分析,支持审计追溯 | 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 | + +**验收标准**: +- 成本数据延迟 < 24 小时 +- 支持按维度下钻到具体资源粒度 + +--- + +## 非功能需求 + +### 性能 + +| 指标 | 要求 | +|------|------| +| Wayne 页面操作响应 | P95 < 2s | +| CloudDM SQL 审核预检 | 单条 SQL < 3s | +| CacheCloud 实例创建 | Sentinel < 5min,Cluster < 10min | +| CI/CD 流水线端到端(代码提交到部署完成) | < 10min(dev 环境) | + +### 可用性 + +| 指标 | 要求 | +|------|------| +| 平台核心服务(Wayne、CloudDM、CacheCloud) | SLA ≥ 99.9% | +| 单集群控制面 | SLA ≥ 99.95% | +| 跨机房网络互联 | SLA ≥ 99.99% | + +### 安全 + +- 所有平台操作经过 RBAC 权限校验 +- 数据库操作全程审计留痕 +- 敏感数据(Secret、密码)加密存储 +- 生产环境禁止使用默认凭证 + +### 可观测性 + +- 各子系统暴露 Metrics 接口,接入 Prometheus + Grafana +- 关键操作日志统一收集到日志平台 +- 告警通道统一(邮件 + 企业 IM) + +### 可扩展性 + +- 新机房接入时,RKE2 集群部署和 Wayne 注册可在 1 天内完成 +- CloudDM / CacheCloud 支持水平扩展(Console + 多 Sidecar) + +--- + +## 系统集成与依赖关系 + +```mermaid +graph LR + subgraph 自动化流水线 + GitLab[GitLab CI] -->|镜像推送| Harbor[Harbor] + GitLab -->|触发部署 API| Wayne + end + + subgraph 平台层 + Wayne -->|Client-Go| K8s[RKE2 集群] + CloudDM -->|SQL 执行| MySQL[(MySQL)] + CacheCloud -->|Agent 管理| Redis[(Redis)] + Ansible -->|SSH| K8s + Ansible -->|SSH| MySQL + Ansible -->|SSH| Redis + end + + subgraph 跨集群 + Wayne -->|调度| ClusterA[机房 A] + Wayne -->|调度| ClusterB[机房 B] + Wayne -->|调度| ClusterN[机房 N...] + end + + subgraph 安全与网络 + WAF[WAF] -->|防护| K8s + Network[大内网] -->|互联| ClusterA + Network -->|互联| ClusterB + end + + subgraph 成本 + CostBoard[成本看板] -.->|采集| K8s + CostBoard -.->|采集| MySQL + CostBoard -.->|采集| Redis + end +``` + +**关键集成点**: + +| 源 | 目标 | 接口方式 | 说明 | +|----|------|---------|------| +| GitLab CI | Wayne | REST API(APIKey 认证) | 自动触发部署 | +| GitLab CI | Harbor | Docker Push | 镜像推送 | +| Wayne | RKE2 | Client-Go(K8s API) | 容器编排操作 | +| CloudDM | MySQL | JDBC / Sidecar 代理 | SQL 审核执行 | +| CacheCloud | Redis | Agent(SSH + 心跳) | 实例生命周期管理 | +| Ansible | 各主机 | SSH | 配置管理与部署 | +| 各子系统 | 告警平台 | HTTP / 邮件 / IM | 统一告警通道 | + +--- + +## 风险与约束 + +| 风险 | 影响 | 缓解措施 | +|------|------|---------| +| RKE2 版本升级可能引入不兼容变更 | 集群稳定性 | 先在测试环境验证,灰度发布 | +| Wayne 开源版本维护活跃度不确定 | 功能迭代受限 | 内部 Fork 并保持核心模块可维护 | +| 七机房网络链路故障 | 跨机房服务中断 | 网络冗余 + 自动切换 + 告警监控 | +| SQL 审核规则误判 | 合法 SQL 被拦截 | 白名单机制 + 规则持续调优 | +| Redis 大 Key / 热 Key | 性能劣化 | CacheCloud 诊断工具 + 应用侧治理 | + +--- + +## 关联笔记 + +- [[technical/xinfra-preview]] +- [[technical/xinfra-preview/k8s-rke2-fundamentals]] +- [[technical/xinfra-preview/wayne-overview]] +- [[technical/xinfra-preview/cloud-dm-overview]] +- [[technical/xinfra-preview/cachecloud-overview]] +- [[technical/xinfra-preview/ansible-playbook-basics]]