跳到主要内容

7 篇博文 含有标签「Rainbond」

查看所有标签

不会 Kubernetes 的团队,第一次把应用上线到底卡在哪?一次源码到部署实测给出答案

· 阅读需 14 分钟

很多团队今天已经不再怀疑 Kubernetes 值不值得学。

真正让人犯难的是另一件更具体的事:

代码写完了,第一次把应用上线,为什么还是像打一场配合并不默契的小型战役?

开发手里有仓库,运维手里有集群,测试催着要环境,负责人盯着时间点。真正落到动作层面,问题很快就会冒出来:

  • 谁来补 Dockerfile
  • 谁来把多模块项目拆成可运行单元
  • 谁来配环境变量和依赖关系
  • 谁来处理端口、访问入口、日志和回滚
  • 谁来为第一次上线失败背锅

这也是为什么很多团队明明已经接受了云原生,第一次把应用真正跑起来,还是会觉得门槛高得不太对劲。

先看一个外部背景。

CNCF 在 2026 年 1 月发布的 2025 年度云原生调查里给出两个很关键的数字: 82% 的容器用户已经在生产环境运行 Kubernetes,98% 的受访组织已经采用云原生技术。另一边,Atlassian 在 2025 年针对 3,500 名开发者和管理者的调研也显示,AI 正在推高团队对交付效率的期待,但日常开发体验里的摩擦并没有自动消失。

这两个信号放在一起看,意思很明确:

很多团队现在卡住的,已经不是“要不要上 Kubernetes”,而是“能不能让一个不熟 Kubernetes 的开发团队,也顺利完成第一次上线”。

源码到上线的 6 步路径图

第一次上线,难的从来不只是“部署”

如果只把问题理解成“不会 K8s”,其实会把事情说简单了。

第一次上线真正难的,是一串动作被拆散到了太多对象里。

代码在仓库里,构建在流水线里,镜像在仓库里,端口和域名在网关里,依赖关系在环境变量里,日志在另一套系统里。开发想把一个服务跑起来,往往要跨过多套工具、多种概念和几轮角色切换。

这就导致一个非常常见的现象:

团队不是不会写业务,而是很难把“代码仓库里的东西”稳定地变成“线上可访问、可观察、可继续迭代的应用”。

尤其是下面几类项目,第一次上线的阻力会更明显:

  • 多模块 Java 项目,不知道应该选哪个模块作为可运行入口
  • 依赖 MySQL、Redis、MQ 之类中间件,配置靠手工拼
  • 需要同时处理构建、启动、访问、日志、依赖关系
  • 团队里没有全职 Kubernetes 专家,但上线压力已经摆在眼前

问题的根子,不在于开发者不够努力,而在于上线这件事长期是围绕底层对象展开的,而不是围绕“应用”本身展开的。

如果把第一次上线重新收束回“应用”,链路会变成什么样

这也是 Rainbond 值得被放到这个话题里的原因。

它不是在否定 Kubernetes,也不是简单做一个“图形化界面更友好”的外壳。更准确地说,Rainbond 做的是一层应用级抽象: 底层仍然是 Kubernetes,但对开发团队暴露出来的,不再是大量零散的底层概念,而是更接近应用交付本身的动作。

这件事听上去有点抽象,放到真实链路里反而更容易理解。

结合 Rainbond 官方文档里 mallzyplayer-doc 两个案例,可以把“源码到上线”这条路拆成 6 步:

1. 从仓库开始,而不是先从容器细节开始

在 Rainbond 里,团队可以直接通过源码创建组件。对很多常见项目来说,这一步的入口是代码仓库地址,而不是先要求开发者把 Dockerfile、YAML 和一串部署脚本准备齐。

这看似只是入口变化,实际上非常重要。

因为它把第一次上线的起点,从“先理解底层打包和编排对象”,变成了“先让应用有一个可以被识别和托管的入口”。

2. 让平台先识别项目,而不是让人先记住一堆构建规则

zyplayer-doc 的案例里,Rainbond 会根据 pom.xml 识别项目结构,并判断多模块项目里哪个模块是可运行模块。

mall 的案例里,它会把 mall-adminmall-portalmall-search 这样的模块识别出来,再由使用者选择真正需要构建和上线的部分。

第一次上线最怕的,往往不是技术做不到,而是不知道从哪里下手。平台能先把项目结构识别出来,这本身就在替团队减少第一层试错成本。

3. 把“构建”收进应用链路,而不是交给每个人各自拼

很多团队第一次上线时会被构建动作拖住。

有人在项目里写镜像打包逻辑,有人另起 CI 任务,有人再补一层部署脚本。最后不是没有人会,而是每次都要重新拼一次。

Rainbond 的思路,是让构建动作跟应用组件直接关联起来。源码进入平台后,构建、生成可运行组件、进入后续部署流程,尽量在同一条应用链路里完成。

这对中小团队特别有价值。因为它减少的不是“高级能力”,而是第一次把事情跑通时最折磨人的碎片化动作。

4. 依赖关系和环境变量,不该再靠人肉搬运

第一次上线还有一个高频痛点: 代码能跑,环境总对不上。

数据库地址、Redis 密码、消息队列账号,很多时候都靠人手抄、群里发、文档里找。一次上线里最容易犯错的,恰恰是这些“不是代码、但又决定应用能不能跑”的信息。

在 Rainbond 的案例链路里,组件之间建立依赖后,相关环境变量会自动注入到应用组件中。对开发团队来说,这意味着依赖关系不再只是某份文档里的说明,而是应用编排里真实存在的一部分。

这一步很容易被低估。实际上,它直接影响第一次上线是否能少掉几轮无意义的排查。

5. 访问、日志、拓扑,不应该等上线后再东拼西凑

第一次上线最糟糕的体验,不是部署失败,而是“看不见自己到底部署成什么样了”。

服务有没有起来,依赖是否接通,端口是不是正确,访问入口对不对,日志在哪看,很多团队第一次上线时都要靠几种不同工具拼出来。

Rainbond 的应用视角有一个很直接的好处: 访问、日志、拓扑、生命周期管理这些动作,被放进了同一套界面和同一条工作流里。开发者不一定因此变成 Kubernetes 专家,但至少第一次上线不再像在几个系统之间来回跳。

6. 第一次上线之后,团队还能继续往前走

真正有价值的第一次上线,不是“终于跑起来了”,而是“跑起来之后还能继续改、继续发、继续回看问题”。

Rainbond 对这个话题的意义,恰恰在这里。它不是只帮你把应用摆上去,而是把构建、部署、依赖、访问、日志、升级这些后续动作都收进应用生命周期里。这样第一次上线才不会变成一次性表演,而是成为后续迭代的起点。

传统链路 vs 应用级抽象链路

这条路为什么会让“不懂 K8s 的团队”更容易迈出第一步

说到底,不是因为 Rainbond 把复杂度消灭了。

复杂度还在那里。集群、存储、网络、权限、可用性,这些底层问题依然存在,也依然需要有人负责。

但它重新分配了复杂度:

  • 平台和运维团队去接住底层能力
  • 开发团队围绕“应用”完成第一次上线
  • 交付动作尽量收束在同一条可观察链路里

这和很多团队正在谈的平台工程,其实是同一个方向,只不过 Rainbond 更适合拿来解决一个很现实的起点问题:

别让第一次上线,就把团队拖进一整套底层对象的学习和协作泥潭。

哪些团队会对这条路径最有感

不是所有团队都需要用同一种方式开始。

但下面几类团队,通常会更容易从这种路径里得到收益:

团队状态为什么更有感
研发人数不多,没有专职 Kubernetes 工程师第一次上线最怕碎片化动作太多
正在把传统应用往云原生迁移更需要低门槛入口,而不是先全面重写交付体系
私有化、内网或多环境交付较多依赖、访问和生命周期动作更需要收束
想做平台工程,但还处在第一阶段先跑通真实应用,比先堆满底层能力更重要

反过来,如果一个团队已经有成熟的平台团队、明确要深做底层治理、也习惯直接操作 Kubernetes 原生对象,那它当然可以继续走更底层的路径。

Rainbond 的意义,从来不是让所有人放弃 Kubernetes,而是给更多团队一个更现实的第一步。

最后真正该记住的一句话

今天很多团队第一次把应用上线,难的不是“代码能不能跑”,甚至也不只是“会不会 Kubernetes”。

真正难的,是怎么把源码、构建、依赖、访问和可观察性收束成一条普通开发团队也能驾驭的上线链路。

这也是 Rainbond 在这个话题里最值得被认真理解的地方:

它不是把 Kubernetes 换掉,而是在 Kubernetes 之上,把第一次上线这件事重新变回“围绕应用”的工作。

对于那些已经接受云原生、却还在第一次上线这一步频繁卡住的团队来说,这往往比再多学几个底层概念,更接近问题本身。

Rainbond v6.7.0 发布|补齐 K8s 原生资源管理,保留 YAML 和 Helm 的使用习惯

· 阅读需 9 分钟

如果说此前的 Rainbond 更擅长以应用为中心,帮助团队快速完成云原生应用的构建、交付与运维,那么从 v6.7.0 开始,Rainbond 又向 Kubernetes 原生工作流迈进了一大步。

这一版本最重要的更新,是正式支持 K8s 原生资源管理。这意味着 Rainbond 不再只服务于平台内部的应用模型,也开始更完整地承接 Kubernetes 原生对象、原生 YAML、Helm Release 以及既有 Namespace 的管理需求。对于已经深度使用 Kubernetes 的团队来说,这是一次非常关键的能力补齐。

与此同时,v6.7.0 也继续推进了 Rainbond 在开发交付链路和应用运维链路上的能力升级:

  • 在构建侧,源码构建全面支持 CNB(Cloud Native Buildpacks)
  • 在应用运维侧,新增 应用快照,补齐应用版本留档、导出、发布和回滚能力

支持 K8s 原生资源管理:让原生工作流也能自然融入 Rainbond

v6.7.0 最重要的更新,是正式支持 K8s 原生资源管理。通过这组能力,Rainbond 开始提供一条更完整的 Kubernetes 原生资源管理路径,用户现在可以:

  • 对接已有 Namespace,并继续按原生方式管理资源
  • 通过原生 YAML 直接创建和维护 Kubernetes 对象
  • 以 Helm Release 的方式安装、升级和管理应用
  • 在团队视角下统一查看工作负载、容器组、网络、配置和存储等资源
  • 在平台管理视角下进一步管理 StorageClass、PV、PVC 等平台级资源

这意味着,无论是已有集群资源的接管,还是后续的原生运维和问题排查,都可以在 Rainbond 中获得更统一的入口和视角。

与之前版本相比,最大的不同在于,Rainbond 不再只围绕平台内部的应用模型来承接交付流程。在过去,如果团队希望把已有 YAML、Helm Chart 或 Namespace 纳入平台管理,往往需要先适配到平台模型;而在 v6.7.0 中,用户已经可以直接保留 Kubernetes 原生语义,沿用熟悉的 YAML 和 Helm 工作流。

也就是说,从这个版本开始,Rainbond 同时承接了两种路径:既可以继续使用应用模型完成标准化交付,也可以保留 Kubernetes 原生对象结构,按原生方式进行管理。

源码构建全面支持 CNB:更快、更小、更标准

在开发交付链路上,v6.7.0 也完成了一次重要升级:源码构建全面支持 CNB(Cloud Native Buildpacks),并采用 Paketo Buildpacks 作为核心实现。

需要特别说明的是,自 v6.7.0 起,新建的源码组件默认使用新的 CNB + Paketo Buildpacks 构建体系;由旧版本升级而来的已有组件,会继续保留原有构建方式并可继续使用。如果没有兼容性约束,建议后续优先使用新的 CNB 构建路径。

相比传统的 Slug 构建方式,这次升级带来的变化非常明确:

  • 构建速度更快:在常见源码构建场景下,可以显著缩短从代码到镜像的交付时间。

  • 最终镜像更小:构建产物更加精简,减少不必要的运行时负担,也更有利于镜像分发与部署。

  • 构建结果更标准:基于 Cloud Native Buildpacks 生成的镜像,更符合云原生生态的标准实践,在后续运维、迁移与生态集成中也更顺畅。

其中,Paketo Buildpacks 作为目前业界较为成熟的一套 Buildpacks 实现,能够帮助 Rainbond 进一步提升源码构建能力的标准化程度。这并不只是一次底层构建方式的替换,更意味着 Rainbond 的源码构建链路正在从“能构建”走向“更标准、更现代、更云原生”。

目前,这套新的源码构建体系已经覆盖 Java、Python、PHP、.NET 等常见语言场景。对于开发者来说,这项升级最直接的感受会是构建效率更高、镜像更轻量;对于平台侧来说,它也为后续的构建能力扩展和统一治理打下了更稳定的基础。

新增应用快照:让应用版本留档、流转和回滚更清晰

除了 K8s 原生资源管理和源码构建升级,v6.7.0 还新增了 应用快照 能力。

应用快照用于保存应用在某一时刻的版本状态,记录组件编排、配置、依赖关系和版本信息。它解决的核心问题是:当应用在持续变化时,如何保留一个可追踪、可对比、可回滚的版本基线。

基于应用快照,用户可以:

  • 保存当前应用状态,形成版本时间线
  • 查看历史版本与当前状态之间的差异
  • 从某个快照直接导出应用
  • 将快照发布到内部组件库
  • 在发生问题时回滚到某个历史快照

这项能力特别适合以下场景:

  • 应用完成一轮功能迭代或配置调整后,需要保留阶段性版本
  • 在升级、改造、迁移前,先留存一个稳定快照
  • 需要把某个版本导出交付,或沉淀到内部组件库中复用
  • 发生异常变更后,希望快速恢复到已验证的稳定状态

需要说明的是,应用快照保存的是应用层元数据和编排状态,并不等同于虚拟机快照、磁盘快照或数据库备份。它适合做应用版本管理,但不能替代业务数据备份或灾备方案。

有了应用快照之后,Rainbond 在应用运维这条链路上,也进一步补齐了从版本留档、版本流转到版本回退的关键能力。

最后

Rainbond v6.7.0 是一个方向非常明确的版本。它最重要的变化,是正式支持 K8s 原生资源管理,让 Rainbond 可以更自然地承接 YAML、Helm、Namespace 以及 Kubernetes 原生对象管理场景;与此同时,源码构建全面拥抱 CNB + Paketo Buildpacks,让构建更快、镜像更小、交付更标准;再加上 应用快照,应用版本管理链路也变得更加完整。

如果说此前的 Rainbond 更擅长“把应用跑起来”,那么从 v6.7.0 开始,Rainbond 也在更进一步地帮助团队把 原生资源、源码构建和应用版本 这三件事一起管好。

其他变更

  • Helm Chart 支持 OCI #2495
  • 修复 Helm 创建应用失败 #2514
  • 修复自动签发证书失败
  • 修复同名软件包上传构建二次无法解压

平台升级

  • 在线环境:平台管理 -> 企业设置 -> 升级,执行一键升级。
  • 离线环境:请阅读 离线升级文档

Kubernetes 已成底座,为什么很多团队还是落不了地?

· 阅读需 12 分钟

CNCF 最新年度调查已经把一个事实说得很清楚:Kubernetes 基本已经坐稳了生产基础设施底座的位置。真正卡住团队的,越来越不是“要不要上 K8s”,而是“组织到底吃不吃得下它”。

很多团队今天遇到的尴尬,其实都很像。

项目启动会上,大家都认同要往云原生走。
架构师说 Kubernetes 已经是行业共识。
管理层也觉得这事迟早要做。

但几个月之后,真正推进起来,问题却不是出在技术路线,而是出在这些更现实的地方:

  • 开发说,改个服务还得等运维;
  • 运维说,大家都想上 K8s,但没人想先把这套复杂度接住;
  • 业务说,为什么平台搭了,交付还是没变快;
  • 交付团队说,每个客户还是像重新来一遍。

如果你们也有类似体感,那这篇文章可能比一篇“如何快速学会 K8s”更值得看。

因为今天最重要的问题,已经不是“你懂不懂 Kubernetes”,而是:

当 Kubernetes 成了底座之后,团队要靠什么,才能真的把它用起来。

先把外部结论说清楚

先看两个来自 CNCF 的明确信号。

信号 1:Kubernetes 已经不是前沿尝试,而是生产基础设施

CNCF 2026 年度调查显示,在使用容器的受访者里,82% 已经在生产环境运行 Kubernetes

这意味着两件事:

  1. 讨论“要不要上 Kubernetes”这件事,意义已经在下降。
  2. 接下来真正拉开差距的,不是会不会装,而是会不会用、怎么组织起来用。

信号 2:真正的挑战,越来越不是工具本身

CNCF 官方解读这份调查时,直接给了一个很值得传播的判断:

culture, not complexity or security, is now the top barrier

翻译成人话就是:

今天很多团队落不了地,已经不只是因为技术复杂,而是因为组织接不住。

一张图看懂:问题已经从“技术门槛”转向“组织门槛”

Kubernetes 已成底座后,问题从技术门槛转向组织门槛

这张图里最关键的变化是:

  • 以前大家在争“技术行不行”
  • 现在更多团队在面对“组织怎么把技术吃下去”

这也是很多平台讨论经常讲偏的地方。

很多内容还在用一种默认前提写文章:
只要技术路线选对,团队自然会跟上。

现实通常没这么顺。

为什么很多团队明明认可 Kubernetes,却还是落不了地?

问题一般出在 4 个地方。

1. 技术共识有了,但角色边界没变

很多团队嘴上已经接受了云原生,但实际协作方式还是老路子:

  • 开发写完代码,继续等运维发版;
  • 运维继续做“平台翻译官”;
  • 业务继续把交付当成后置动作。

结果就是,底层换成了 Kubernetes,上层流程却没变。

技术升级了,组织习惯没升级。

2. 平台搭起来了,但真正用的人没跟上

这在很多企业里都很常见。

平台团队把底层搭得很完整,功能也不差,但最后真正高频操作的人依然只有少数几位运维或架构师。开发团队、测试团队、交付团队仍然觉得这套东西“不是给自己用的”。

这不是平台没价值,而是平台没有变成“大家愿意用、用得起、用得明白”的产品。

3. 大家都知道 K8s 很强,但不是每个团队都该先去学它

这一点很容易被误解。

Kubernetes 当然重要。
但“重要”和“需要每个人先学会”是两回事。

对于很多团队来说,当前最贵的问题根本不是“不会 Kubernetes”,而是:

  • 交付链路太长;
  • 环境信息太散;
  • 部署动作太依赖少数人;
  • 每次上线都像在做一个小项目。

如果这些问题不先解决,单纯把学习成本再叠上去,团队只会更累。

4. 对 ToB、私有化、内网场景来说,组织门槛会被放大

如果你所在的团队还涉及这些场景:

  • 私有化部署
  • 客户现场交付
  • 多环境多集群
  • 信创迁移
  • 内外网隔离

那“Kubernetes 是底座”并不意味着事情更简单,反而意味着:

你更需要一层能把复杂度往后收、把交付流程往前拉平的平台。

谁更适合直接深上 Kubernetes,谁更适合先降低组织门槛?

这个问题特别重要,因为它决定了你到底该怎么开始。

团队状态更适合的路径原因
已有成熟平台团队、明确多集群治理需求直接深做 Kubernetes 平台能力团队有能力承接复杂度
研发人数不多、没人是全职 K8s 专家先降低使用门槛否则试点容易卡死在学习和协作成本上
传统企业信息化团队、供应商多、环境复杂先把交付流程标准化组织摩擦比底层技术更先出现
ToB 厂商、私有化交付压力大先把应用模板化、版本化不然每个客户都像重新交付一遍
正在做云原生第一阶段试点先跑通一个完整应用闭环比“先搭一个完整平台”更现实

这里不是说“不要学 Kubernetes”。
而是说:

不要把“学 Kubernetes”误当成所有团队的第一步。

很多团队真正需要的第一步,其实是:

先找到一条不被 Kubernetes 复杂度拖死的落地路径。

这也是 Rainbond 最值得被重新理解的地方

Rainbond 最容易被误解成一种“图形化界面更友好的容器平台”。

如果只这么理解,其实低估了它。

更准确的说法应该是:

当 Kubernetes 已经成为底座后,Rainbond 要解决的是“组织如何把这套底座真正吃下去”的问题。

它并不是去否定 Kubernetes,而是往上做了一层很关键的事情:

  • 把底层概念往后收;
  • 把应用视角往前提;
  • 把开发、运维、交付之间的协作门槛降下来。

这意味着什么?

意味着很多团队不用先把所有人都训练成 Kubernetes 使用者,才能开始云原生试点。
他们可以先围绕“应用”工作:

  • 从源码、软件包或镜像开始;
  • 先把应用跑起来;
  • 再去做版本、升级、回滚、日志、依赖和交付。

这对下面几类团队尤其重要:

  • 中小研发团队;
  • 传统企业信息化部门;
  • 私有化 / 离线交付团队;
  • 想做平台工程,但当前还在早期阶段的团队。

一张判断图:Rainbond 到底接住了哪一层问题?

Rainbond 接住的是 Kubernetes 之上的组织门槛

这张图想说明的不是“Rainbond 比 Kubernetes 更重要”。

恰恰相反。

它说明的是:

Kubernetes 的重要性已经被证明了,所以现在更重要的问题变成:谁来帮团队真正把它用起来。

Rainbond 就是在这个位置上有意义。

如果你是技术负责人,这篇文章真正该带走什么?

带走 3 个判断就够了。

判断 1:Kubernetes 已经不再是“是否值得”的问题

外部共识已经很强,继续争这个问题本身意义不大。

判断 2:接下来最关键的不是底座,而是组织门槛

你团队能不能真的推进,取决于:

  • 谁来接复杂度;
  • 谁来完成交付;
  • 谁愿意真正用平台;
  • 上线之后谁能维护住。

判断 3:如果你们当前最大的痛是“落不了地”,就别从最重的地方开始

很多团队失败,不是因为平台太弱,而是因为第一步走得太重。

如果你的团队现在最真实的问题是:

  • 不想先把每个人都训练成 Kubernetes 专家;
  • 想先跑通一个真实应用;
  • 更在意交付效率,而不是先做复杂治理;

那 Rainbond 这种路径,通常比“先把整个团队压进底层复杂度”更现实。

最后一句话

今天最值得传播、也最值得记住的,不是:

“Kubernetes 很重要。”

而是:

当 Kubernetes 已成底座之后,真正把团队卡住的,越来越是人和组织。

而 Rainbond 的价值,恰好不在底座层,而在这层更难、也更现实的组织门槛上。

Rainbond、Rancher、KubeSphere、Sealos 怎么选?

· 阅读需 13 分钟

很多团队在评估云原生平台时,第一反应是对比功能表。

但真正决定选型的,往往不是“谁功能更多”,而是:

  • 你的团队当前有没有成熟的平台工程能力
  • 你们最紧迫的问题是多集群治理,还是先把第一个应用跑起来
  • 你们更看重平台能力深度,还是上手门槛和交付效率

如果这些问题没有先想清楚,再完整的功能对比也很难帮你做出正确判断。

所以这篇文章不打算回答“谁最强”,而是帮助你回答另一个更关键的问题:

Rainbond、Rancher、KubeSphere、Sealos,哪个更适合你当前的团队阶段?

不想先学 Kubernetes,团队怎么跑通第一个云原生试点?

· 阅读需 6 分钟

很多团队并不是不认可 Kubernetes,而是在真正开始推进时发现,第一步太重了。

常见情况是:

  • 开发团队希望更快上线应用
  • 运维团队希望平台标准化
  • 管理者知道云原生是方向
  • 但团队没有足够时间,先把 Kubernetes 全学一遍,再开始交付业务

于是问题就出现了:

不是方向不对,而是真正落地之前,团队先被复杂度挡住了

不懂K8s也能上云原生?三大开源平台实战对比与选型经验

· 阅读需 14 分钟

背景与痛点

作为一家发展中的互联网公司技术负责人,我一直在寻找能解决团队实际问题的云原生平台。我们是一个约30人的开发团队,主要做ToB业务,产品迭代速度快,但面临以下痛点:

  • 部署效率低下:每次上线都需要运维手动发布,经常加班到深夜
  • 环境一致性差:开发、测试、生产环境差异大,导致"我这边没问题"成为日常对话
  • 资源利用率低:服务器资源分配不均,有的过载,有的闲置
  • 团队技术债务重:想用容器化和云原生技术,但大多数开发对k8s完全不懂

记得去年一次重要客户演示前,我们花了整整两天时间才完成环境搭建,最后演示时还是出了问题。那次经历让我下定决心:必须引入一套云原生平台来解决这些问题。

为什么选择开源平台

在考察各种解决方案时,我们很快将目光锁定在开源平台上,主要原因有:

  • 成本可控:中小企业预算有限,开源方案可以大幅降低初始投入
  • 避免厂商锁定:开源方案能够避免被单一厂商绑定,保持技术选择的灵活性
  • 社区支持:活跃的社区意味着问题能更快得到解决,不必完全依赖商业支持
  • 定制能力:开源意味着我们可以根据需要进行二次开发或定制

当然,开源也带来了一些挑战,如需要自行解决问题、维护升级等,但总体来说,对于我们这样的中小企业,开源云原生平台是最合适的选择。

三个候选平台初体验

经过初步调研,我将目标锁定在三个开源平台:Rancher、KubeSphere和Rainbond。下面分享我实际体验这三个平台的过程和感受。

Rancher初体验

首先尝试的是Rancher,因为它在国际上评价很高。搭建过程相对复杂,我们花了2天时间才完成:

  • 优势明显:集群管理功能强大,对多云环境支持优秀
  • 界面专业:仪表盘数据丰富,告警系统完备
  • 最大问题:几乎所有界面都直接暴露k8s概念,我们的开发直呼"太复杂"

有趣的是,我们团队中唯一熟悉k8s的架构师却非常喜欢Rancher:"概念清晰,没有多余的抽象层"。这一点让我意识到,不同技术背景的团队成员对同一工具的评价可能完全不同。

KubeSphere体验

接下来尝试了KubeSphere:

  • 优势:UI设计确实比Rancher友好很多,功能分类清晰
  • 监控和可观测性:集成了很多工具,开箱即用
  • 挑战:虽然UI友好,但仍保留了大量k8s概念

我们用它部署了一个微服务应用,过程中遇到了一些问题:

  • 开发团队需要培训才能使用基本功能
  • 资源管理比较复杂,需要预先定义许多配置
  • DevOps流水线功能强大但配置繁琐

Rainbond体验

最后我们试用了Rainbond:

  • 优势:部署简单,界面对开发友好,几乎不暴露k8s概念
  • 直观的应用管理:服务间依赖可视化,微服务治理较易用
  • 不足:对于复杂网络配置的支持有限,高级功能需要使用企业版

有意思的是,当我让三个完全不懂k8s的开发分别尝试在三个平台上部署他们的服务时,只有在Rainbond上他们能够独立完成。而在测试过程中,我也逐渐意识到这些平台可能各有所长,适合不同的场景和用户。

三个平台的深入对比

作为技术决策者,我关注的不只是易用性,还包括功能完整性、可扩展性和成本等多方面因素:

功能完整性与生态

Rancher

  • 最完整的集群生命周期管理
  • 与云厂商集成度高,支持多种CNI和存储方案
  • 缺点:应用商店相对简单,一些功能需要额外集成

KubeSphere

  • 全家桶式解决方案,集成了监控、日志、CI/CD等
  • 微服务治理能力强,服务网格支持好
  • 缺点:有些集成组件会增加系统复杂度和资源消耗

Rainbond

  • 应用管理和交付能力突出,组件市场丰富
  • 支持多种部署方式,包括源码、镜像和Helm等
  • 缺点:集群管理能力有限,企业级功能需要付费

开源社区与支持

三个平台的开源情况各有特点:

Rancher

  • 开源许可:Apache 2.0
  • 社区规模最大,全球贡献者众多
  • SUSE收购后商业支持更加完善
  • 文档主要为英文,中文资料相对较少

KubeSphere

  • 开源许可:Apache 2.0
  • 国内外都有活跃社区,青云QingCloud商业支持
  • 文档支持中英双语,对国内用户友好
  • 版本迭代速度较快,功能不断丰富

Rainbond

  • 开源许可:LGPL v3
  • 主要为国内社区,好雨科技提供商业支持
  • 完全中文的文档和社区,沟通无障碍
  • 社区规模相对小些,但响应速度快

运维负担与成本

实际运维过程中,三个平台各有优劣:

Rancher运维经历

  • 优点:稳定性好,升级路径清晰
  • 缺点:需要专人维护,问题排查需要较深的k8s知识
  • 成本:技术门槛高,需要专业k8s运维人员

KubeSphere运维经历

  • 优点:监控和日志系统完善,问题定位较快
  • 缺点:占用资源较多,小规模团队维护压力大
  • 成本:硬件要求相对较高,需要中等k8s知识

Rainbond运维经历

  • 优点:自动化程度高,日常运维工作少
  • 缺点:自定义能力相对受限,与现有工具集成需要额外工作
  • 成本:硬件要求适中,基本不需要k8s知识

随着对比的深入,我们开始思考是否可以结合各平台的优势,打造一个更适合我们团队的组合方案。

最终选择与反思

经过三个月的试点测试,我们最终根据团队实际情况做出了选择。

对于我们这种情况(开发团队k8s知识有限,希望降低运维负担),我们采用了一种组合解决方案:Rancher负责底层k8s集群的创建和管理,Rainbond负责上层应用的部署和管理。

为什么是这种组合

  • Rancher在集群管理、多云环境支持方面表现卓越,由我们的少数k8s专业人员负责操作
  • Rainbond为开发团队提供简单易用的应用管理界面,让他们能够自助完成部署
  • 这种"专业工具做专业事"的组合最大化了两个平台的优势
  • 我们有意识地将基础设施管理与应用管理分离,形成良好的职责边界

组合方案的实施

  • 首先由运维团队使用Rancher部署和管理基础k8s集群
  • 然后在集群上部署Rainbond,开放给开发团队使用
  • 运维关注集群健康和资源分配,开发关注应用交付

现实的妥协

  • 这种组合方案增加了一定的架构复杂性
  • 需要维护两套系统,有一定运维压力
  • 一些老旧系统的集成仍然是挑战

真实收获与教训

经过半年的实践,我们的收获与教训如下:

收获

  • 部署效率提升了约4倍,从小时级缩短到分钟级
  • 责任分离更清晰:运维团队专注于基础设施,开发团队专注于应用
  • 资源利用率提高了约35%,减少了资源浪费
  • 环境一致性问题大幅减少,"在我这能跑"的问题少了80%

教训

  • 团队需要更多的沟通才能有效协作,尤其是运维与开发之间
  • 没有充分评估未来规模扩展时的管理难度
  • 某些高级功能在两平台间存在重叠,造成了一些混乱

开源平台的长期思考

在使用开源云原生平台的过程中,我们也对开源产品有了更深的理解:

  • 没有万能平台:即使是最好的平台也有短板,组合使用可能更实用
  • 社区活跃度至关重要:选择开源产品时,社区活跃度甚至比功能完整性更重要
  • 商业支持与开源平衡:纯社区支持有时难以应对紧急问题,适当的商业支持是必要的
  • 持续关注版本更新:开源产品迭代快,需要定期评估新版本的价值与风险
  • 贡献回馈:我们也开始向这些项目提交问题和改进建议,成为社区的一部分

给其他中小企业的建议

如果你的团队正在选型开源云原生平台,我的建议是:

  1. 先明确优先级:是易用性优先,还是功能完整性优先?
  2. 小规模试点:每个平台都至少试用1-2周,让真实用户参与评测
  3. 评估真实成本:除了软件成本,还要考虑学习成本和运维成本
  4. 考察社区健康度:GitHub活跃度、问题响应速度、文档完整性等
  5. 考虑混合方案:不要局限于单一平台,混合使用可能更适合实际需求
  6. 没有完美方案:可能需要组合使用多个工具来满足所有需求

最后,不要被厂商或网络评价左右,最适合自己团队的才是最好的平台。每个团队的情况不同,选择也会不同:

  • 如果团队k8s经验丰富,单独使用Rancher可能更简单直接
  • 如果需要全面的功能且有一定学习能力,KubeSphere是好选择
  • 如果开发团队不懂k8s且希望快速上手,Rainbond值得考虑
  • 对于大多数复杂需求的团队,组合方案往往是最务实的选择

没有银弹,只有适合自己团队的方案。云原生转型是一场马拉松,不是短跑,选择合适的开源平台组合只是这段旅程的起点。

v5 到 v6,Rainbond 变化全面解读

· 阅读需 10 分钟

距 Rainbond v6.0 发布已有两个月,但一直未详细说明 v5 到 v6 的具体变化。本文将重点解析两者在架构、功能及性能上的主要差异,帮助用户更好地理解升级后的优势。

架构精简

为了提升平台在各种场景下的稳定性与灵活性,同时减少资源占用,Rainbond v6 对底层组件进行了全面优化和整合,从根本上优化了平台的架构设计。

组件变动

v5 包含 19 个组件,而 v6 精简至 12 个组件,新增 2 个、移除 9 个,同时合并部分功能以提升性能和易用性。

- dashboard-metrics-scraper
- kubernetes-dashboard
- metrics-server
- nfs-provisioner
+ local-path-provisioner
+ minio
rainbond-operator
rbd-api
rbd-app-ui
rbd-chaos
- rbd-etcd
rbd-db
- rbd-eventlog
rbd-gateway
rbd-hub
rbd-monitor
rbd-mq
- rbd-node-z7cpd
- rbd-resource-proxy-bf75d46df-nlqbv
- rbd-webcli-58f99f7fc5-kmxfz
rbd-worker

✅新增组件:

  • local-path-provisioner:替代本地存储的实现,减少对外部存储的依赖。
  • minio:替代 nfs-provisioner ,移除 v5 版本中对于存储的强依赖挂载,将部分共享读取的文件存储在 minio 中。

❌移除组件:

  • kubernetes-dashboard:作为插件支持,移除默认安装。
  • rbd-node:简化架构,优化服务治理模式。
  • rbd-eventlog:日志存储功能被移除,部分功能合并至 rbd-api。
  • rbd-resource-proxy 和 rbd-webcli:部分功能合并至 rbd-api。

🔄 优化整合:

  • 移除对 ETCD 的依赖。

功能详细变动

UI 样式调整

在 Rainbond v6 版本中,UI 上有很多细节发生了改变,例如统一侧边栏、Tab 样式、全局字体以及全局样式等,同时在 v6.1.0 版本中优化了团队视图页面,提升用户体验和视觉一致性。

网关改进

Rainbond v6 使用 APISIX 替代 OpenResty 作为默认网关,带来以下改进:

  • 性能更高,支持动态配置。
  • 扩展性更强,便于支持更多场景。

主机安装

Kubernetes 版本升级至 1.30,采用注册安装替代传统的主动安装方式,提升了易用性。

在线升级

新增一键在线升级功能,无需再通过命令行操作,降低维护门槛。

治理模式变更

在 Rainbond v6 版本中,rbd-node 组件被移除,与之相关的内置 Service Mesh 功能也一并取消。

Rainbond v5 中的内置 Service Mesh 基于 Envoy 进行改造,但在实际使用中发现其在高并发场景下存在性能瓶颈,且维护成本较高。为提升系统性能并降低复杂性,Rainbond v6 默认采用了更轻量化的 Service 模式通信,简化了服务治理逻辑。

此外,为满足用户在服务治理上的多样化需求,v6 提供了灵活的扩展能力,用户可根据实际场景选择集成主流开源解决方案,如 IstioLinkerd,从而更好地支持企业级流量管理和微服务治理需求。

日志管理优化

在 Rainbond v5 版本中,系统会收集并存储每个组件的日志,这一设计虽然提升了部分场景下的用户体验,但也对底层架构带来了显著压力。特别是在日志量较大或组件数量较多的情况下,rbd-noderbd-eventlog 组件容易因负载过高而成为系统瓶颈,甚至影响整个 Rainbond 平台的运行稳定性。

为了解决这一问题,Rainbond v6 对日志管理功能进行了优化:

  1. 移除日志存储功能:不再对组件日志进行集中存储,仅保留日志展示功能。
  2. 精简组件:移除 rbd-noderbd-eventlog,进一步优化架构稳定性和性能表现。

支持扩展日志收集插件,可以采用现有的成熟方案,例如 ELK 等。

移除对 ETCD 依赖

在 Rainbond v5 版本中,系统默认启动一个 etcd 服务供集群使用。然而,etcd 在实际运行中的作用有限,主要由于历史遗留问题,导致其在 v5 中无法轻松移除。为优化系统架构和减少不必要的资源占用,Rainbond v6 对此进行了全面调整,移除了对 etcd 的依赖。

性能优化

Rainbond v6 对平台的整体性能进行了全面优化,重点提升了接口的响应速度,并针对高并发场景进行了深度调优。

默认注入环境变量

在 Rainbond v5 版本中,组件启动时会默认注入环境变量,例如 TENANT_ID 等。然而,这种方式在实际使用中暴露了一些问题。例如,与 Nacos 的环境变量 TENANT_ID 发生冲突。为彻底解决此类冲突问题,Rainbond v6 对默认注入的环境变量命名方式进行了调整,所有默认注入的环境变量均以 _ 开头,例如 _TENANT_ID

存储改进

在 Rainbond v5 版本中,系统依赖底层的 NFS 服务来提供共享存储功能。Rainbond v6 对存储架构进行了优化,不再依赖底层存储,同时也移除了 NFS 服务,这意味着 v6 版本中没有共享存储,默认提供 local-path 本地存储供组件使用。如集群中扩展了其他存储,组件存储中会展示集群的 StorageClass 名称。

镜像、Git仓库调整

在 v6.1.0 版本中对镜像仓库、Git 仓库配置都进行了调整,支持以用户为中心的个人配置,每个用户都可以配置自己的镜像仓库和 Git 仓库。

源码构建增强

源码构建支持 Dockerfile 和其他语言共存,v5 版本中如果项目内存在 Dockerfile 和 Pom.xml 则 Dockerfile 优先,在 v6 版本中支持选择。

升级说明:从 Rainbond v5 到 v6

由于架构和功能的重大变化,Rainbond v5 无法直接升级到 v6 版本。为了顺利过渡,您需要进行全新安装 v6 版本,并将 v5 中的应用迁移到新的环境。迁移过程分为以下几步:

  1. 安装 v6 版本:首先,您需要全新安装 Rainbond v6 版本。请确保新环境已经设置并配置完毕。
  2. 发布应用到本地组件库(v5):在 v5 版本中,进入 应用视图 -> 应用发布,然后选择 发布到本地组件库。
  3. 导出应用(v5):在 v5 中,进入 平台管理 -> 应用市场,选择并导出应用。您可以将应用导出为文件,以便在 v6 环境中导入。
  4. 导入应用到 v6 版本:在 v6 版本中,进入 平台管理 -> 应用市场,选择 导入应用;选择从 v5 导出的应用文件,将其导入到 v6 环境中,完成应用迁移。
  5. 数据库迁移:如果您在 v5 中部署了数据库类应用,迁移时需要手动迁移数据库数据。请根据数据库类型和配置,执行相应的数据迁移操作,确保数据在新环境中能够正常访问和使用。

最后

Rainbond v6 相较于 v5 版本,做出了显著的架构和功能优化。通过精简和优化,平台更加易于使用,且能够满足企业和开发者在不同应用场景下的需求。如果您正在考虑升级到 Rainbond v6,建议根据本文提供的迁移步骤,顺利过渡到新版本,以便享受更加稳定、灵活和高效的云原生应用管理体验。