diff --git a/docs/plugins/alert.mdx b/docs/plugins/alert.mdx new file mode 100644 index 0000000000..e78066aa9b --- /dev/null +++ b/docs/plugins/alert.mdx @@ -0,0 +1,102 @@ +--- +title: 告警中心 +description: Rainbond 告警中心插件,提供实时异常检测与智能告警,支持自定义告警规则、多渠道通知(邮件/钉钉/飞书/Webhook)和告警生命周期管理。 +keywords: +- 告警中心 +- 告警规则 +- 告警通知 +- Prometheus +- 可观测性 +--- + +import PluginBadge from '@site/src/components/Docs/PluginBadge'; +import EnterpriseCTA from '@site/src/components/Docs/EnterpriseCTA'; + + + +## 概述 + +开源版 Rainbond 不具备告警能力,当集群节点异常、组件资源超限或关键服务故障时,运维人员只能依赖手动巡检来发现问题,响应滞后。 + +**Rainbond 告警中心**是平台级的实时异常检测与智能告警系统,对接 Prometheus 数据源,内置丰富的告警规则模板,覆盖系统负载、CPU、磁盘、etcd、Kubernetes 控制面等核心指标。支持自定义告警规则和阈值,通过邮件、钉钉、飞书、Webhook 等多渠道通知,保障服务连续性。 + +## 功能对比 + +| 维度 | 开源版 | 告警中心插件 | +| :--- | :--- | :--- | +| **异常感知** | 无告警能力,依赖手动巡检 | 实时监测,异常自动触发告警 | +| **告警规则** | 无 | 内置系统/K8s/etcd 等规则模板,支持自定义 | +| **通知渠道** | 无 | 邮件、钉钉、飞书、企业微信、Webhook | +| **告警管理** | 无 | 活跃告警、历史告警、屏蔽规则、告警分组 | + +## 核心能力 + +### 告警规则管理 + +内置丰富的告警规则模板,对接 Prometheus 数据源,覆盖主要运维场景: + +* **系统级规则**:系统负载过高、CPU 负载高、inode 使用率高等 +* **Kubernetes 级规则**:控制面故障、DaemonSet 清理失败、证书即将过期等 +* **etcd 规则**:健康检查失败、实例不可用、性能异常、Leader 丢失等 +* **CoreDNS 规则**:CoreDNS 未就绪 + +每条规则可配置告警级别(S1 / S2 / S3)、附加标签、告警接收组,并支持逐条启用或禁用。 + +![告警规则管理](/plugins/alert/alert-overview.png) + +### 告警生命周期管理 + +告警中心提供完整的告警生命周期管理: + +| 模块 | 说明 | +| :--- | :--- | +| **活跃告警** | 查看当前正在触发的告警,实时掌握系统异常状态 | +| **历史告警** | 查看已恢复的告警记录,支持回溯和统计分析 | +| **屏蔽规则** | 对已知问题或计划内维护设置告警屏蔽,避免告警噪声 | + +### 多渠道通知 + +灵活配置通知策略,确保告警信息及时送达: + +* **通知设置**:配置通知规则,按告警级别和分组路由到不同渠道 +* **通知模版**:自定义通知内容模板,支持变量替换 +* **联系方式**:管理邮件、钉钉、飞书、企业微信、Webhook 等通知渠道 +* **告警用户**:管理告警接收人和接收组 + +### 数据源管理 + +支持对接 Prometheus 数据源,统一管理告警数据来源。支持配置多个数据源,适配多集群场景。 + +## 使用指南 + +### 启用插件 + +1. 进入 **平台管理 -> 插件中心**,找到「告警中心」插件并启用。 +2. 启用后刷新页面,平台管理视图左侧「可观测性」分组下会出现「告警中心」入口。 + +### 配置数据源 + +1. 进入 **告警中心 -> 数据源**。 +2. 确认 Prometheus 数据源已就绪,或添加新的数据源。 + +### 管理告警规则 + +1. 进入 **告警中心 -> 告警规则**。 +2. 插件已内置常用规则,可直接启用。 +3. 如需自定义,点击 **新增** 创建规则,配置数据源、告警表达式、级别和接收组。 +4. 通过筛选栏按数据源类型、级别、名称快速定位规则。 + +### 配置通知渠道 + +1. 进入 **告警中心 -> 联系方式**,添加通知渠道(邮件、钉钉、飞书、Webhook 等)。 +2. 进入 **告警中心 -> 通知模版**,根据需要自定义通知内容。 +3. 进入 **告警中心 -> 告警用户**,添加告警接收人并分组。 +4. 进入 **告警中心 -> 通知设置**,将告警规则与通知渠道、接收组关联。 + +### 查看告警 + +* **活跃告警**:查看当前触发中的告警,及时处理异常。 +* **历史告警**:回溯已恢复的告警,分析问题趋势。 +* **屏蔽规则**:对计划维护或已知问题设置临时屏蔽。 + + diff --git a/docs/plugins/disaster-recovery.mdx b/docs/plugins/disaster-recovery.mdx new file mode 100644 index 0000000000..d268b8943a --- /dev/null +++ b/docs/plugins/disaster-recovery.mdx @@ -0,0 +1,119 @@ +--- +title: 灾备恢复 +description: Rainbond 灾备恢复插件,通过 S3 存储实现平台元数据的备份与恢复,支持定时备份策略、一键恢复和跨平台迁移。 +keywords: +- 灾备恢复 +- 数据备份 +- 平台恢复 +- S3 存储 +- 业务连续性 +--- + +import PluginBadge from '@site/src/components/Docs/PluginBadge'; +import EnterpriseCTA from '@site/src/components/Docs/EnterpriseCTA'; + + + +## 概述 + +在现代企业应用架构中,业务连续性和数据安全至关重要。任何意外事件(如硬件故障、网络中断、自然灾害或人为错误)都可能导致平台服务中断,给企业造成严重的经济损失。 + +**Rainbond 灾备恢复**是 Rainbond 平台提供的企业级数据保护方案,通过 S3 存储实现平台元数据的备份与恢复。该方案与 Rainbond 平台架构深度集成,提供可视化的备份策略配置和自动化恢复能力,显著降低数据保护的实施和运维成本。 + +## 功能对比 + +下表对比了传统数据保护方案与本插件的差异: + +| 维度 | 传统数据保护方案 | Rainbond 灾备恢复 | +| :--- | :--- | :--- | +| **存储方案** | 需要单独部署存储系统,成本高 | 内置 S3 存储,支持对接外部 S3,灵活部署 | +| **备份策略** | 需要编写复杂脚本,定时任务管理困难 | 可视化配置备份策略,支持定时备份 | +| **恢复过程** | 恢复流程复杂,需要专业人员操作 | 一键式恢复,自动化执行 | +| **数据一致性** | 备份与恢复过程易出错,数据一致性难以保证 | 平台元数据与存储卷关联备份,恢复后可直接使用 | + +## 核心能力 + +### S3 存储集成 + +平台默认自带轻量级 S3 存储(MinIO),无需额外部署即可开始使用。同时支持对接外部 S3 存储服务(AWS S3、阿里云 OSS、MinIO 等),通过统一的存储管理界面配置连接参数。 + +![S3 存储管理](/plugins/disaster-recovery/dr-s3-storage.png) + +### 智能备份策略 + +支持手动备份和自动化定时备份,通过可视化弹窗配置备份策略: + +* **启用自动备份**:开启或关闭定时备份 +* **执行频率**:支持按 Cron 表达式设定周期(如每天凌晨 2 点) +* **选择存储源**:指定备份文件保存的 S3 存储 + +![自动化备份策略](/plugins/disaster-recovery/dr-backup-strategy.png) + +### 平台元数据备份 + +备份内容涵盖平台完整状态,备份详情页面展示基本信息、数据统计和执行日志: + +* 备份平台元数据(应用配置、组件关系、用户权限等) +* 统计备份范围:团队数、用户数、应用数、组件数、持久卷数 +* 支持 PVC/PV 存储卷备份(底层存储为外部存储时),恢复后组件数据可直接使用 +* 执行日志完整记录备份过程 + +![备份详情](/plugins/disaster-recovery/dr-backup-detail.png) + +### 快速恢复 + +支持同平台恢复(单集群恢复)和跨平台恢复(迁移到新集群)。恢复任务页面展示恢复 ID、备份 ID、状态、耗时及执行日志,全程自动化执行。 + +* 本地备份恢复:从备份列表选择备份文件直接恢复 +* 上传备份文件恢复:上传本地保存的备份文件进行恢复 +* 恢复前自动进行完整性校验和环境兼容性检查 + +![恢复任务](/plugins/disaster-recovery/dr-restore-task.png) + +## 使用指南 + +### 启用插件 + +1. 进入 **平台管理 -> 插件中心**,找到「灾备恢复」插件并启用。 +2. 启用后刷新页面,平台管理视图左侧导航栏会出现「灾难备份」入口。 + +### 配置存储方案 + +1. 在灾难备份页面,点击右上角 **管理 S3 存储**。 +2. 默认已有本地存储(MinIO),可直接使用。 +3. 如需对接外部 S3,点击 **+ 添加 S3 配置**,填写存储名称、Endpoint、Bucket、Access Key 和 Secret Key。 + +### 配置备份策略 + +1. 在灾难备份页面,点击 **自动化备份策略**。 +2. 将「启用自动备份」设为 **开启**。 +3. 设置执行频率(如每天凌晨 2 点)。 +4. 选择存储源,点击 **保存**。 + +### 执行备份 + +**自动备份:** 策略启用后,按照设定周期自动执行。 + +**手动备份:** 在备份管理页面,点击 **+ 手动备份** 立即执行。备份完成后支持下载备份文件到本地保存。 + +### 执行恢复 + +**方式一:本地备份恢复** + +1. 在备份管理页面,找到要恢复的备份记录,点击「恢复」。 +2. 跳转到恢复管理页面,确认备份详情(创建时间、大小、完整性状态)。 +3. 点击 **开始恢复**,等待恢复任务完成。 + +**方式二:上传备份文件恢复** + +1. 切换到 **恢复管理** 标签页,点击「上传备份文件」。 +2. 选择本地备份文件并上传。 +3. 上传完成后点击 **开始恢复**。 + +## 限制说明 + +* **单集群支持**:当前仅支持单集群的平台备份恢复,不支持多集群备份恢复 +* **快速安装限制**:不支持快速安装方式部署的 Rainbond 平台 +* **存储卷要求**:PVC/PV 恢复需要底层存储为外部存储(如云盘、NFS 等),本地存储卷恢复后无法直接使用 + + diff --git a/docs/plugins/gpu.mdx b/docs/plugins/gpu.mdx new file mode 100644 index 0000000000..6e8f0a3dee --- /dev/null +++ b/docs/plugins/gpu.mdx @@ -0,0 +1,85 @@ +--- +title: GPU 管理 +description: Rainbond GPU 高级管理插件,提供异构 GPU 资源池化、vGPU 细粒度共享与隔离、GPU 可观测性等企业级 GPU 管理能力。 +keywords: +- GPU 管理 +- vGPU +- GPU 共享 +- GPU 隔离 +- GPU 资源池化 +--- + +import PluginBadge from '@site/src/components/Docs/PluginBadge'; +import EnterpriseCTA from '@site/src/components/Docs/EnterpriseCTA'; + + + +## 概述 + +Rainbond GPU 高级管理插件为平台提供企业级的 GPU 算力调度能力。在默认的 Kubernetes 环境中,GPU 只能以整卡为单位进行独占式分配,导致显存利用率低、资源浪费严重。本插件通过 GPU 虚拟化与池化技术,支持将物理 GPU 切分为细粒度的 vGPU,实现多任务共享与硬隔离,同时统一纳管不同品牌和型号的异构 GPU。 + +## 功能对比 + +下表对比了基础开源方案与本插件在 GPU 管理方面的差异: + +| 维度 | 基础开源方案 | GPU 高级管理插件 | +| :--- | :--- | :--- | +| **资源分配** | 只能分配整数张卡(1 张、2 张等) | 支持细粒度切分(如 0.2 张卡,或指定 4GB 显存),单卡可供多个服务同时使用 | +| **异构纳管** | 需针对每种显卡手动编写调度策略 | 统一纳管 Nvidia、AMD 及国产信创 GPU(昇腾、海光等),屏蔽底层硬件差异 | +| **安全隔离** | 共享时容易发生显存 OOM 互相影响 | 提供显存与算力的硬隔离,多租户共享时互不干扰 | +| **运维成本** | 需投入专人持续维护底层调度组件 | 通过平台界面启用和配置,降低运维复杂度 | + +:::tip 示例场景 +假设集群中有 4 张 A100 (80GB) 显卡。在整卡分配模式下,最多分配给 4 个推理服务。启用本插件后,可按需切分为 16 个 20GB 显存的 vGPU,支撑 16 个服务并发运行。实际切分粒度取决于业务的显存和算力需求。 +::: + +## 核心能力 + +### 异构 GPU 资源池化 + +插件自动识别集群内的所有 GPU 节点,将不同品牌和型号的 GPU 汇聚为统一的算力资源池。在资源总览页面可以直观查看 GPU 节点数、卡数、总显存及整体使用率,并下钻至每个节点查看 GPU 型号、显存、温度、功耗等详细信息。 + +* 支持主流 Nvidia 系列(A100、V100、T4、RTX 系列等) +* 支持国产信创 GPU(昇腾、海光等) + +![GPU 资源池总览](/plugins/gpu/gpu-overview.png) + +### 细粒度 vGPU 共享与隔离 + +平台管理员可按团队维度配置 GPU 显存配额,限制每个团队可使用的最大显存量,实现多租户间的资源隔离。 + +* **团队级配额**:为每个团队设定 GPU 显存上限(如 admin 工作空间 10 GB、平台插件 5 GB),防止资源被单一团队耗尽 +* **显存隔离**:严格限制每个组件可使用的最大显存,防止越权占用 + +![团队 GPU 资源配额](/plugins/gpu/gpu-limit.png) + +### GPU 可观测性 + +在资源池总览页面内置实时监控,展示每张物理 GPU 的运行状态。 + +* 监控每张物理卡的显存用量、温度、功耗和运行状态 +* 支持按节点下钻查看 GPU 详情,辅助进行算力容量规划 + + +## 使用指南 + +### 启用插件 + +1. 进入 **平台管理 -> 插件中心**,找到「GPU 高级管理」插件并启用。 + +### 为组件配置 GPU 资源 + +1. 进入需要使用 GPU 的组件,切换到 **GPU 管理** 标签页。 +2. 将「启用 GPU」设为 **启用**,选择 GPU 类型(如 NVIDIA)。 +3. 填写所需的 GPU 卡数(如 `1` 张)。 +4. 选择 **共享模式** 或 **独占模式**: + - 共享模式:多个组件共享同一张 GPU,按显存配额隔离 + - 独占模式:组件独占整张 GPU +5. 在共享模式下,输入所需的 GPU 显存数(如 `10.0` GB)。 +6. 点击 **保存配置** 使设置生效。 + +![组件 GPU 资源配置](/plugins/gpu/gpu-component.png) + +配置完成后,页面底部的「GPU 资源情况」会实时展示集群 GPU 卡总数和显存配额使用率。 + + diff --git a/docs/plugins/logs.mdx b/docs/plugins/logs.mdx new file mode 100644 index 0000000000..6f369914e9 --- /dev/null +++ b/docs/plugins/logs.mdx @@ -0,0 +1,82 @@ +--- +title: 日志中心 +description: Rainbond 日志中心插件,提供平台级全局日志检索和组件级历史日志查看能力,支持多维度筛选、日志趋势图和日志下载。 +keywords: +- 日志中心 +- 日志检索 +- 历史日志 +- 日志下载 +- 可观测性 +--- + +import PluginBadge from '@site/src/components/Docs/PluginBadge'; +import EnterpriseCTA from '@site/src/components/Docs/EnterpriseCTA'; + + + +## 概述 + +在开源版 Rainbond 中,用户只能查看组件的实时日志,无法检索历史日志,也没有平台级的统一日志入口。当需要排查已过期的日志或跨组件关联问题时,往往需要登录节点手动查找,效率低下。 + +**Rainbond 日志中心**插件为平台补齐了日志可观测能力,提供两个核心入口: + +* **平台管理 → 日志中心**:全局日志检索,跨集群、跨组件统一查询 +* **组件视图 → 历史日志**:查看单个组件的历史日志,支持翻页和下载 + +## 功能对比 + +下表对比了开源版与启用日志中心插件后的差异: + +| 维度 | 开源版 | 日志中心插件 | +| :--- | :--- | :--- | +| **日志范围** | 仅当前实时日志 | 实时 + 历史日志持久化存储 | +| **检索能力** | 无 | 支持按集群、服务、日志级别、关键字多维度检索 | +| **全局视图** | 无,需逐个组件查看 | 平台级统一日志入口,跨组件关联查询 | +| **日志下载** | 不支持 | 支持历史日志下载,便于离线分析和归档 | + +## 核心能力 + +### 平台级全局日志检索 + +在平台管理页面的「日志中心」中,提供功能完整的日志检索面板: + +* **多维度筛选**:按集群、服务/网关、日志级别(ERROR / WARN / INFO 等)、操作类型组合筛选 +* **关键字搜索**:支持全文检索,快速定位目标日志 +* **日志趋势图**:以柱状图展示时间维度的日志分布,直观发现异常峰值 +* **日志明细表**:展示每条日志的时间、级别、来源文件和完整内容 + +![平台级日志检索](/plugins/logs/logs-platform.png) + +### 组件级历史日志 + +在组件视图中,新增历史日志查看入口,弹窗形式展示组件的历史日志: + +* **时间范围选择**:支持预设时间范围和自定义起止时间 +* **日志翻页**:支持上一页 / 下一页浏览大量历史日志 +* **日志下载**:一键下载历史日志文件,便于离线分析和归档 + +![组件历史日志](/plugins/logs/logs-component.png) + +## 使用指南 + +### 启用插件 + +1. 进入 **平台管理 -> 插件中心**,找到「日志中心」插件并启用。 +2. 启用后刷新页面,平台管理视图左侧导航栏会出现「日志中心」入口。 + +### 全局日志检索 + +1. 点击 **平台管理 -> 日志中心** 进入检索面板。 +2. 通过顶部筛选栏选择集群、服务、日志级别等条件。 +3. 在搜索框输入关键字,回车执行检索。 +4. 观察日志趋势图,点击异常时段可聚焦到对应时间范围。 +5. 在下方日志表中查看详细内容。 + +### 查看组件历史日志 + +1. 进入目标组件的组件视图。 +2. 点击历史日志入口,弹出日志查看窗口。 +3. 选择时间范围,浏览历史日志。 +4. 如需离线分析,点击 **下载日志** 保存到本地。 + + diff --git a/docs/plugins/monitor.mdx b/docs/plugins/monitor.mdx new file mode 100644 index 0000000000..e1bade9b36 --- /dev/null +++ b/docs/plugins/monitor.mdx @@ -0,0 +1,80 @@ +--- +title: 监控中心 +description: Rainbond 监控中心插件,提供集群概览、节点监控、Pod 监控、工作负载监控及流量分析等全方位可观测能力。 +keywords: +- 监控 +- 集群监控 +- 节点监控 +- Pod 监控 +- 流量分析 +--- + +import PluginBadge from '@site/src/components/Docs/PluginBadge'; +import EnterpriseCTA from '@site/src/components/Docs/EnterpriseCTA'; + + + +## 概述 + +Rainbond 监控中心插件为平台提供开箱即用的全栈可观测能力。启用后,平台管理员可在统一界面中查看集群资源总览、节点与 Pod 运行状态、工作负载健康度以及服务间流量拓扑,无需额外部署 Grafana 或 Prometheus 即可获得生产级的监控体验。 + +## 核心能力 + +### 集群监控概览 + +监控中心首页提供集群级全局视图,顶部汇总栏一目了然地展示关键指标: + +* **集群数**、**CPU 核数**、**团队数**、**内存**、**应用数**、**磁盘**、**实例数** +* 集群概览面板展示节点数、Pod 数、节点内存/CPU 请求平均占比、API Server 成功请求率 +* Namespace 维度总览表,按命名空间统计 Deployment、StatefulSet、DaemonSet、Job、Pod、Container、Service 等资源数量及异常状态 +* 底部 Top 10 排行:节点内存使用率、CPU 使用率、磁盘使用率、网络吞吐、Socket 连接数 + +![集群监控概览](/plugins/monitor/monitor-overview.png) + +### 多维度监控面板 + +插件内置多个专项监控面板,覆盖从集群到容器的各个层级: + +| 监控面板 | 说明 | +| :--- | :--- | +| **集群概览** | 集群级资源汇总与 Namespace 概览 | +| **团队监控** | 按团队维度查看资源使用与应用状态 | +| **节点监控** | 各节点 CPU、内存、磁盘、网络详情 | +| **节点性能** | 节点级性能指标与趋势 | +| **Pod 监控** | Pod 级资源使用与运行状态 | +| **Pod 性能** | Pod 级性能指标(CPU、内存、网络 I/O) | +| **守护进程监控** | DaemonSet 运行状态监控 | +| **工作负载监控** | Deployment / StatefulSet 副本状态与资源用量 | +| **无状态应用监控** | Deployment 类型应用的专项监控 | +| **有状态应用监控** | StatefulSet 类型应用的专项监控 | + +### 流量分析 + +资源分析页面提供服务间流量拓扑可视化,以桑基图形式直观展示请求流向: + +* 左侧为各服务实例(组件端口),右侧依次聚合至应用、团队、集群 +* 可快速识别流量热点和异常链路 +* 支持全屏查看,适合大屏展示 + +![流量分析](/plugins/monitor/monitor-traffic.png) + +## 使用指南 + +### 启用插件 + +1. 进入 **平台管理 -> 插件中心**,找到「监控中心」插件并启用。 +2. 启用后,平台管理页面左侧导航栏会出现「监控中心」入口。 + +### 查看集群监控 + +1. 点击 **监控中心**,默认进入集群概览面板。 +2. 通过顶部标签页切换不同监控维度(团队监控、节点监控、Pod 监控等)。 +3. 面板右上角可调整时间范围和刷新频率。 + +### 查看流量分析 + +1. 在监控中心页面切换到 **资源分析** 标签页。 +2. 选择「流量分析」,查看服务间的请求流向拓扑。 +3. 点击右上角 **全屏** 可放大查看。 + + diff --git a/docs/plugins/pipeline.mdx b/docs/plugins/pipeline.mdx new file mode 100644 index 0000000000..7da2b4c52b --- /dev/null +++ b/docs/plugins/pipeline.mdx @@ -0,0 +1,157 @@ +--- +title: 流水线 +description: Rainbond 流水线插件,提供可视化 CI/CD 编排能力,支持应用模板部署、灰度发布、通知、人工审核等任务类型,实现从模板到生产环境的自动化交付。 +keywords: +- 流水线 +- CI/CD +- 灰度发布 +- 自动化部署 +- DevOps +--- + +import PluginBadge from '@site/src/components/Docs/PluginBadge'; +import EnterpriseCTA from '@site/src/components/Docs/EnterpriseCTA'; + + + +## 概述 + +在现代 DevOps 实践中,CI/CD 流水线是团队协作和软件交付的核心。传统 CI/CD 工具往往需要复杂的配置和维护,学习曲线陡峭,且难以与应用管理平台深度集成。 + +**Rainbond 流水线**是专为 Rainbond 平台设计的 CI/CD 解决方案,它将应用部署、灰度发布、通知等过程自动化,提供可视化的流水线编排能力。通过与 Rainbond 应用模型深度集成,实现从应用模板到生产环境的一键式部署,显著提升团队的交付效率。 + +## 功能对比 + +下表对比了传统 CI/CD 工具与本插件的差异: + +| 维度 | 传统 CI/CD 工具 | Rainbond 流水线 | +| :--- | :--- | :--- | +| **配置复杂度** | 需要编写复杂的配置文件(如 Jenkinsfile) | 可视化编排,YAML 元数据可直接复制粘贴 | +| **集成复杂度** | 需要手动配置与代码仓库、测试工具、部署平台的集成 | 与 Rainbond 应用模型深度集成,以应用模板为单位部署 | +| **部署一致性** | 构建产物与部署环境分离,容易出现环境不一致问题 | 以应用模板为单位部署,确保环境一致性 | +| **可移植性** | 配置与环境绑定,难以在不同环境间迁移 | YAML 元数据可直接复制粘贴到另一个环境使用 | + +:::tip 效率提升 +传统 CI/CD 流程需要 30 分钟以上的手动操作,使用 Rainbond 流水线后可缩短至 5 分钟内完成,效率提升 6 倍以上。 +::: + +## 核心能力 + +### 多流水线管理 + +支持创建和管理多个独立的流水线,可视化列表展示所有流水线的名称、描述、创建时间和更新时间,支持搜索和筛选。每个流水线支持执行、编辑、查看执行历史、复制和删除等操作。 + +![流水线列表](/plugins/pipeline/pipeline-list.png) + +### 阶段与任务编排 + +每个流水线由多个阶段组成,通过可视化编辑器进行流程设计。从「开始」到「结束」,中间可自由添加阶段,每个阶段支持设置串行或并行执行。 + +阶段内可添加以下类型的任务: + +| 任务类型 | 说明 | +| :--- | :--- | +| **部署** | 以应用模板为单位进行部署 | +| **灰度发布** | 逐步切流量的金丝雀发布模式 | +| **灰度回滚** | 一键回滚到之前的版本 | +| **通知** | 支持飞书、钉钉、企业微信等通知渠道 | +| **人工审核** | 流程暂停,需人工确认后继续执行 | + +![阶段与任务编排](/plugins/pipeline/pipeline-editor.png) + +### 智能触发器 + +支持多种触发方式,可同时配置多个触发器: + +* **定时触发**:按照设定的时间周期自动触发流水线 +* **模版新版本发布**:当应用模版发布新版本时自动触发 + +![触发器配置](/plugins/pipeline/pipeline-trigger.png) + +### 执行历史与监控 + +每次流水线执行都会记录完整的过程信息,包括执行标识、触发方式、触发人、执行进度、执行状态和耗时,支持查看详情。 + +![执行历史](/plugins/pipeline/pipeline-history.png) + +点击详情可查看每个阶段和任务的执行状态,右侧实时展示执行日志,支持日志下载。 + +![执行详情与日志](/plugins/pipeline/pipeline-detail.png) + +## 使用指南 + +### 启用插件 + +1. 进入 **平台管理 -> 插件中心**,找到「流水线」插件并启用。 +2. 启用后刷新页面,平台管理视图左侧导航栏会出现「流水线」入口。 + +### 创建流水线 + +1. 点击 **流水线 -> 创建流水线**。 +2. 填写流水线名称和描述。 +3. 点击「保存」完成创建。 + +### 编排阶段与任务 + +1. 在流水线详情页面,点击阶段之间的 **+** 号添加新阶段。 +2. 设置阶段名称和执行方式(并行或串行)。 +3. 在阶段卡片内点击 **+ 添加任务**,选择任务类型并配置: + - **部署任务**:选择要部署的应用和应用模板 + - **灰度发布 / 回滚任务**:选择要操作的应用和版本 + - **通知任务**:配置通知渠道(飞书、钉钉等)和接收人 + - **人工审核任务**:配置审核人和审核方式 +4. 点击右上角 **保存** 保存流水线配置。 + +### 配置触发器 + +1. 在流水线编辑器中,点击「开始」节点下方的 **触发器** 按钮。 +2. 选择触发方式: + - **定时触发**:设置执行周期 + - **模版新版本发布**:关联应用模版,模版发布新版本时自动触发 + +### 执行流水线 + +**手动执行:** 在流水线编辑器右上角点击 **运行** 按钮,选择版本后确认执行。 + +**自动执行:** 配置触发器后,流水线将按规则自动执行。 + +### 查看执行历史 + +1. 在流水线列表中,点击对应流水线的执行历史图标。 +2. 查看每次执行的状态、触发方式、耗时等信息。 +3. 点击「详情」查看阶段执行状态和实时日志。 + +## YAML 元数据 + +流水线的元数据以 YAML 格式存储,可通过编辑器右上角的 **查看 YAML** 导出,也可直接复制粘贴到另一个环境使用。 + +```yaml +name: 流水线测试 +description: "" +stages: + - name: 部署测试 + tasklayout: parallel + tasks: + - type: deploy + name: 模版部署 + config: + app_name: ceshi + region_name: rainbond + team_id: 4829c9610c54404aad95212144f06eb9 + template_id: 3a252bf5ebf24b898cf6690b7cb50759 + - name: 通知测试 + tasklayout: serial + tasks: + - type: notification + name: 测试通知 + config: + channel: lark + content: '{"text":"测试通知"}' + msg_type: text + receive_id: + - ou_620e37f65401f954afff4450b521f469 + receive_id_type: open_id +triggers: [] +``` + + diff --git a/docs/plugins/source-scan.mdx b/docs/plugins/source-scan.mdx new file mode 100644 index 0000000000..6b1593dd5e --- /dev/null +++ b/docs/plugins/source-scan.mdx @@ -0,0 +1,97 @@ +--- +title: 源码扫描 +description: Rainbond 源码扫描插件,集成 SonarQube 代码分析引擎,提供构建拦截、质量门禁、多语言扫描和可视化报告,从源头保障代码质量与安全。 +keywords: +- 源码扫描 +- 代码质量 +- 安全漏洞 +- SonarQube +- 质量门禁 +--- + +import PluginBadge from '@site/src/components/Docs/PluginBadge'; +import EnterpriseCTA from '@site/src/components/Docs/EnterpriseCTA'; + + + +## 概述 + +在现代软件开发过程中,代码质量和安全至关重要。随着代码库的不断增长和开发团队的扩大,手动检查代码质量和安全漏洞变得越来越困难。 + +**Rainbond 源码扫描**是 Rainbond 平台提供的代码质量和安全检测工具,通过集成 SonarQube 代码分析引擎,对代码进行自动化扫描,发现潜在的质量问题和安全漏洞。该工具与 Rainbond 应用模型深度集成,开启后每次构建自动触发扫描,扫描结果直接展示在组件视图中,无需跳转外部系统。 + +## 功能对比 + +下表对比了传统代码质量检查与本插件的差异: + +| 维度 | 传统代码质量检查 | Rainbond 源码扫描 | +| :--- | :--- | :--- | +| **效率** | 手动检查耗时费力,容易遗漏 | 自动化扫描,构建时自动触发 | +| **覆盖率** | 检查范围有限,难以覆盖所有代码库 | 支持 20+ 编程语言,覆盖常见漏洞类型 | +| **集成度** | 需要手动集成到开发流程中 | 组件视图一键开启,构建时自动扫描 | +| **可视化** | 结果输出不直观,需要专业人员解读 | 可视化报告和问题追踪,支持修复指导 | + +## 核心能力 + +### 构建拦截与质量门禁 + +开启源码扫描后,每次构建**先检测后构建**,质量不达标直接拦截,无法继续构建流程。操作记录中可以看到「源码检测」步骤的执行状态,未通过质量门禁的构建会被标记为失败。 + +![构建拦截](/plugins/source-scan/scan-build-intercept.png) + +扫描结果直接集成到组件视图的「源码扫描」标签页中,展示当前状态、质量门禁通过情况、检测报告和问题详情,无需跳转外部系统。 + +* **质量门禁**:可自定义质量标准(代码覆盖率、重复率、漏洞数量等),未通过的代码无法继续构建 +* **检测报告**:质量概览展示 Bug 数、漏洞数、不规范数和重复率 + +![扫描报告](/plugins/source-scan/scan-report.png) + +### 全栈语言精准检测 + +深度支持 Java、Go、Python、Node.js、PHP 等 20+ 编程语言,针对框架特性优化检测规则(Spring Boot、Vue、React、Django 等),自动识别项目技术栈。 + +扫描维度覆盖: + +| 检测类型 | 说明 | +| :--- | :--- | +| **Bug 检测** | 空指针、资源泄漏、并发问题等运行时风险 | +| **安全漏洞** | SQL 注入、XSS、CSRF、路径遍历等 OWASP Top 10 漏洞 | +| **代码异味** | 重复代码、过长方法、高圈复杂度等可维护性问题 | +| **合规性检查** | 各语言编码规范(Java Code Conventions、Go Style 等) | + +### 可视化报告与问题追踪 + +问题列表详细展示每个问题的描述、严重程度、所在文件和代码位置,支持按类型筛选和排序,帮助开发者快速定位和修复。 + +![问题详情](/plugins/source-scan/scan-issues.png) + +## 使用指南 + +### 启用插件 + +1. 进入 **平台管理 -> 插件中心**,找到「源码扫描」插件并启用。 +2. 点击「管理」按钮,可直接跳转到对应应用。 + +### 开启组件级扫描 + +**方式一:组件创建时开启** + +1. 新增组件时,输入代码仓库地址和分支。 +2. 在组件创建流程中找到「源码扫描」配置并开启。 +3. 完成创建,首次构建会自动触发扫描。 + +**方式二:已有组件开启** + +1. 进入组件视图,切换到 **源码扫描** 标签页。 +2. 点击开启源码扫描。 +3. 下次构建时会优先执行源码检测,检测通过才会继续构建。 + +### 查看扫描报告 + +扫描完成后,在组件视图的源码扫描标签页查看: + +1. **当前状态**:显示扫描是否通过质量门禁 +2. **质量概览**:Bug 数、漏洞数、不规范数、重复率 +3. **问题详情**:具体问题列表,包含严重程度、所在文件和修复建议 + + diff --git a/sidebars.js b/sidebars.js index 6d93529b72..998ee7fe42 100644 --- a/sidebars.js +++ b/sidebars.js @@ -358,6 +358,19 @@ const sidebars = { "ops-guides/cli-tools", ] }, + { + "type": "category", + "label": "功能扩展", + "items": [ + "plugins/gpu", + "plugins/monitor", + "plugins/pipeline", + "plugins/disaster-recovery", + "plugins/source-scan", + "plugins/logs", + "plugins/alert", + ] + }, 'faq/index', { type: 'category', diff --git a/src/components/Docs/EnterpriseCTA/index.tsx b/src/components/Docs/EnterpriseCTA/index.tsx new file mode 100644 index 0000000000..f06784a94d --- /dev/null +++ b/src/components/Docs/EnterpriseCTA/index.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import Link from '@docusaurus/Link'; +import styles from './styles.module.css'; + +export default function EnterpriseCTA(): JSX.Element { + return ( +
+
+ + + +

获取企业版

+
+

+ 开启企业级能力,免费试用 30 天,无需重新安装集群。体验 GPU 管理、安全审计等高级功能。 +

+
+
+ + + + + 免费试用 + + + + + + 商业咨询 + +
+
+ ); +} diff --git a/src/components/Docs/EnterpriseCTA/styles.module.css b/src/components/Docs/EnterpriseCTA/styles.module.css new file mode 100644 index 0000000000..ec1b0e0862 --- /dev/null +++ b/src/components/Docs/EnterpriseCTA/styles.module.css @@ -0,0 +1,120 @@ +.card { + margin-top: 48px; + padding: 24px; + border-radius: 10px; + border: 1px solid #dbeafe; + border-left: 4px solid #2563eb; + background: linear-gradient(135deg, #f0f6ff, #f8faff); +} + +[data-theme='dark'] .card { + border-color: #1e3a5f; + border-left-color: #3b82f6; + background: linear-gradient(135deg, #1a2744, #1c2e4a); +} + +.header { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 8px; +} + +.icon { + width: 22px; + height: 22px; + color: #2563eb; + flex-shrink: 0; +} + +[data-theme='dark'] .icon { + color: #60a5fa; +} + +.title { + margin: 0; + font-size: 18px; + font-weight: 600; + color: var(--ifm-heading-color); +} + +.description { + margin: 0; + font-size: 14px; + line-height: 1.6; + color: var(--ifm-color-emphasis-700); +} + +.divider { + height: 1px; + background: #dbeafe; + margin: 16px 0; +} + +[data-theme='dark'] .divider { + background: #1e3a5f; +} + +.actions { + display: flex; + gap: 10px; + flex-wrap: wrap; +} + +.btnIcon { + width: 15px; + height: 15px; + flex-shrink: 0; +} + +.primaryBtn { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 8px 20px; + border-radius: 6px; + font-size: 13px; + font-weight: 500; + color: #fff; + background: #2563eb; + text-decoration: none; + transition: background 0.2s; +} + +.primaryBtn:hover { + color: #fff; + background: #1d4ed8; + text-decoration: none; +} + +.secondaryBtn { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 8px 20px; + border-radius: 6px; + font-size: 13px; + font-weight: 500; + color: #374151; + background: #fff; + border: 1px solid #d1d5db; + text-decoration: none; + transition: border-color 0.2s; +} + +.secondaryBtn:hover { + color: #374151; + border-color: #9ca3af; + text-decoration: none; +} + +[data-theme='dark'] .secondaryBtn { + color: #d1d5db; + background: #1f2937; + border-color: #374151; +} + +[data-theme='dark'] .secondaryBtn:hover { + color: #d1d5db; + border-color: #6b7280; +} diff --git a/src/components/Docs/PluginBadge/index.tsx b/src/components/Docs/PluginBadge/index.tsx new file mode 100644 index 0000000000..45e66139d4 --- /dev/null +++ b/src/components/Docs/PluginBadge/index.tsx @@ -0,0 +1,61 @@ +import React from 'react'; +import Link from '@docusaurus/Link'; +import styles from './styles.module.css'; + +interface PluginBadgeProps { + type: 'enterprise' | 'open-source'; +} + +const config = { + enterprise: { + icon: ( + + + + ), + label: '企业版插件', + desc: '该功能为企业版专属,可免费试用 30 天', + linkText: '了解企业版 →', + linkTo: '/enterprise_server', + className: styles.enterprise, + }, + 'open-source': { + icon: ( + + + + ), + label: '开源插件', + desc: '该插件完全开源,可直接启用', + linkText: null, + linkTo: null, + className: styles.openSource, + }, +}; + +export default function PluginBadge({ type }: PluginBadgeProps): JSX.Element { + const { icon, label, desc, linkText, linkTo, className } = config[type]; + + return ( +
+
+ + {icon} + {label} + + {desc} +
+ {linkText && linkTo && ( + + {linkText} + + )} +
+ ); +} diff --git a/src/components/Docs/PluginBadge/styles.module.css b/src/components/Docs/PluginBadge/styles.module.css new file mode 100644 index 0000000000..73a5e50a14 --- /dev/null +++ b/src/components/Docs/PluginBadge/styles.module.css @@ -0,0 +1,82 @@ +.banner { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + padding: 12px 16px; + border-radius: 8px; + margin-bottom: 24px; + border-left: 4px solid transparent; +} + +.content { + display: flex; + align-items: center; + gap: 12px; + flex-wrap: wrap; +} + +.icon { + width: 16px; + height: 16px; + flex-shrink: 0; +} + +.label { + display: inline-flex; + align-items: center; + gap: 6px; + font-size: 14px; + font-weight: 600; + white-space: nowrap; +} + +.desc { + font-size: 13px; + opacity: 0.85; +} + +.link { + font-size: 13px; + font-weight: 500; + white-space: nowrap; + text-decoration: none; + transition: opacity 0.2s; +} + +.link:hover { + text-decoration: none; + opacity: 0.8; +} + +/* Enterprise variant */ +.enterprise { + background: linear-gradient(135deg, #eef4ff, #e8f0fe); + border-left-color: #2563eb; + color: #1e3a5f; +} + +.enterprise .link { + color: #2563eb; +} + +[data-theme='dark'] .enterprise { + background: linear-gradient(135deg, #1a2744, #1e2d4a); + color: #c5d5ea; +} + +[data-theme='dark'] .enterprise .link { + color: #60a5fa; +} + +/* Open-source variant */ +.openSource { + background: linear-gradient(135deg, #ecfdf5, #e6f9ef); + border-left-color: #16a34a; + color: #14532d; +} + +[data-theme='dark'] .openSource { + background: linear-gradient(135deg, #132a1e, #1a3328); + color: #b4e6c8; +} diff --git a/static/plugins/alert/alert-overview.png b/static/plugins/alert/alert-overview.png new file mode 100644 index 0000000000..bb72763bff Binary files /dev/null and b/static/plugins/alert/alert-overview.png differ diff --git a/static/plugins/disaster-recovery/dr-backup-detail.png b/static/plugins/disaster-recovery/dr-backup-detail.png new file mode 100644 index 0000000000..791dd4a15a Binary files /dev/null and b/static/plugins/disaster-recovery/dr-backup-detail.png differ diff --git a/static/plugins/disaster-recovery/dr-backup-strategy.png b/static/plugins/disaster-recovery/dr-backup-strategy.png new file mode 100644 index 0000000000..edc717d741 Binary files /dev/null and b/static/plugins/disaster-recovery/dr-backup-strategy.png differ diff --git a/static/plugins/disaster-recovery/dr-restore-task.png b/static/plugins/disaster-recovery/dr-restore-task.png new file mode 100644 index 0000000000..6a1a2af9e4 Binary files /dev/null and b/static/plugins/disaster-recovery/dr-restore-task.png differ diff --git a/static/plugins/disaster-recovery/dr-s3-storage.png b/static/plugins/disaster-recovery/dr-s3-storage.png new file mode 100644 index 0000000000..6c5d138514 Binary files /dev/null and b/static/plugins/disaster-recovery/dr-s3-storage.png differ diff --git a/static/plugins/gpu/gpu-component.png b/static/plugins/gpu/gpu-component.png new file mode 100644 index 0000000000..1e5a569040 Binary files /dev/null and b/static/plugins/gpu/gpu-component.png differ diff --git a/static/plugins/gpu/gpu-limit.png b/static/plugins/gpu/gpu-limit.png new file mode 100644 index 0000000000..f510b728e3 Binary files /dev/null and b/static/plugins/gpu/gpu-limit.png differ diff --git a/static/plugins/gpu/gpu-overview.png b/static/plugins/gpu/gpu-overview.png new file mode 100644 index 0000000000..fa21e78f83 Binary files /dev/null and b/static/plugins/gpu/gpu-overview.png differ diff --git a/static/plugins/logs/logs-component.png b/static/plugins/logs/logs-component.png new file mode 100644 index 0000000000..afc1a9e66d Binary files /dev/null and b/static/plugins/logs/logs-component.png differ diff --git a/static/plugins/logs/logs-platform.png b/static/plugins/logs/logs-platform.png new file mode 100644 index 0000000000..3b4810c97f Binary files /dev/null and b/static/plugins/logs/logs-platform.png differ diff --git a/static/plugins/monitor/monitor-overview.png b/static/plugins/monitor/monitor-overview.png new file mode 100644 index 0000000000..7c55b67ad4 Binary files /dev/null and b/static/plugins/monitor/monitor-overview.png differ diff --git a/static/plugins/monitor/monitor-traffic.png b/static/plugins/monitor/monitor-traffic.png new file mode 100644 index 0000000000..de28847a6c Binary files /dev/null and b/static/plugins/monitor/monitor-traffic.png differ diff --git a/static/plugins/pipeline/pipeline-detail.png b/static/plugins/pipeline/pipeline-detail.png new file mode 100644 index 0000000000..980466f9a7 Binary files /dev/null and b/static/plugins/pipeline/pipeline-detail.png differ diff --git a/static/plugins/pipeline/pipeline-editor.png b/static/plugins/pipeline/pipeline-editor.png new file mode 100644 index 0000000000..b348ee7c27 Binary files /dev/null and b/static/plugins/pipeline/pipeline-editor.png differ diff --git a/static/plugins/pipeline/pipeline-history.png b/static/plugins/pipeline/pipeline-history.png new file mode 100644 index 0000000000..cffb0284f3 Binary files /dev/null and b/static/plugins/pipeline/pipeline-history.png differ diff --git a/static/plugins/pipeline/pipeline-list.png b/static/plugins/pipeline/pipeline-list.png new file mode 100644 index 0000000000..0f00943921 Binary files /dev/null and b/static/plugins/pipeline/pipeline-list.png differ diff --git a/static/plugins/pipeline/pipeline-trigger.png b/static/plugins/pipeline/pipeline-trigger.png new file mode 100644 index 0000000000..909b0da58f Binary files /dev/null and b/static/plugins/pipeline/pipeline-trigger.png differ diff --git a/static/plugins/source-scan/scan-build-intercept.png b/static/plugins/source-scan/scan-build-intercept.png new file mode 100644 index 0000000000..ef340a3695 Binary files /dev/null and b/static/plugins/source-scan/scan-build-intercept.png differ diff --git a/static/plugins/source-scan/scan-issues.png b/static/plugins/source-scan/scan-issues.png new file mode 100644 index 0000000000..a00e7f73a1 Binary files /dev/null and b/static/plugins/source-scan/scan-issues.png differ diff --git a/static/plugins/source-scan/scan-report.png b/static/plugins/source-scan/scan-report.png new file mode 100644 index 0000000000..dfe12a00c8 Binary files /dev/null and b/static/plugins/source-scan/scan-report.png differ