v5.8.0-release

Rainbond 是“以应用为中心”的云原生应用管理平台。相比于其他容器管理平台,提供了更易用的应用管理体验。这是一个优点,但是另一方面,由于应用级抽象与实际 Kubernetes 资源有所差异,对于许多已经熟悉 Kubernetes 的用户而言,使用 Rainbond 又会面临以下三个问题:

  1. Rainbond 对 Kubernetes 资源支持有限。在某些场景下,如环境变量引用某个 Secret 的值、调整 Pod 的调度策略、亲和性配置等场景难以实现。

  2. 在 Kubernetes 集群中已经部署的应用。如何迁移到 Rainbond 上,许多配置需要再次手动调整部署。迁移成本高。

  3. 已有的 Kubernetes Yaml 文件,在 Rainbond 上无法直接部署。

为了解决以上问题,我们在 5.8 版本中主要做了如下改进:

  1. 支持一键导入Kubernetes集群中已存在的应用。我们可以将集群中已有应用直接导入到 Rainbond 进行管理。

  2. 兼容Kubernetes的资源和属性,支持在应用下通过 Yaml 文件创建各类资源,如 PVC、PV、Secret等。在应用下创建的资源,可以在组件里进行引用。同时支持了发布到应用模版。

  3. 支持通过 Yaml 文件部署组件,我们会将 Yaml 文件中识别到的资源转化为 Rainbond 的内置组件,实现 Yaml 文件的一键部署。

总体来说,在本次版本中,Rainbond 在与 Kubernetes 底层的资源兼容性上又进了一步,许多之前不支持的资源也可以直接创建和使用。下面简单介绍下本次版本的主要功能。

版本变更(5.7.1-5.8.0)

主要功能点解读:

1. 支持一键导入已有集群应用

对于在Kubernetes集群中已经运行的应用,我们支持了一键导入命名空间下的所有应用。当选择好要导入的命名空间时,我们可以看到该命名空间下的资源。我们会根据 Kubernetes 推荐标签来区分应用,将资源按应用区分出来。如下图所示: import-region-resource.png

这些资源中,Deployment/Statefulset/Job/CronJob 将会转化为内置组件,其他资源如果无法与 Rainbond 抽象模型对应,则会转化为应用下的 K8s 资源。在点击下一步后,你可以看到之前的资源与 Rainbond 模型的关系。如下图所示

advanced_resources.jpg

最终导入后,你就可以在 Rainbond 的团队中管理你的应用了。

功能详细文档参考: https://www.rainbond.com/docs/use-manual/team-manage/ns-to-team/

2. 支持通过Yaml文件部署组件

许多用户自己编写 Yaml 部署应用,为了便于用户使用,我们同样支持了通过 Yaml 部署应用。与其他容器管理平台不同的是,在使用 Yaml 文件部署应用时,我们不是直接让 Yaml 文件在集群中生效,而是转化为我们的组件类型。以便于用户在部署后,还能使用到我们应用级的管理功能,如组件的全生命周期、组件编排、发布安装等。

在添加组件时,选择 Yaml 部署后,上传你的文件。我们会在识别后转化为对应的组件模型和应用资源,如下图所示

yaml_team_handle.jpg

功能详细文档参考: https://www.rainbond.com/docs/use-manual/component-create/package-support/yaml

3. 兼容 Kubernetes 资源和属性

为了扩展应用和组件的能力,以及更好的兼容 Kubernetes 的资源。我们在应用下,新增了 K8s 资源 的入口,在这里可以通过 Yaml 部署集群中的各类资源。如 PV、PVC、Service、Ingress 等。在这里部署的资源均会直接被部署到集群中。这里我们定义的是,它应该是你应用运行所需要的基础环境。即这里提供的资源,应该是供当前应用下的组件进行使用的。在发布时,这里的资源也会和组件一起发布。

k8s_resources_add.jpg

同样在组件的其他设置下,有 Kubernetes 属性这一项。我们可以在这里定义该组件使用到的一些属性,如 volumes、volumeMounts 等。这里可以挂载应用下创建的 K8s 资源,用于扩展组件能力。

k8s_attr.jpg

应用下 K8s 资源详细文档参考: https://www.rainbond.com/docs/use-manual/app-manage/k8s-resource/ 组件 Kubernetes 属性文档参考: https://www.rainbond.com/docs/use-manual/component-manage/other/#kubernetes属性

4. 支持直接上传 Jar/War 包构建组件

在之前的版本中,当用户使用 Jar 包进行交付时,我们需要先创建一个 git 仓库,并将 Jar 包推上去才可以构建。这会带来几个问题:

  • 创建新仓库操作繁琐,离线环境难以部署
  • git 仓库会限制单个文件大小,Jar 包过大时,无法上传

因此为了解决以上问题,我们支持直接上传 Jar/War 包构建组件。如下图所示,我们可以在组件总览页查看到文件名,以及文件的 MD5 值。以便于在反复上传文件时区分版本。

Pasted%20Graphic%204.pn

功能详细文档参考: https://www.rainbond.com/docs/use-manual/component-create/package-support/jar-war

5. 支持切换组件构建源

当我们从应用市场安装一个完整应用,但应用中的部分组件需要从源码和镜像替换,这时就需要修改构建源。也就是说,如果我安装下来一个应用,想要替换其中的某个组件时,往往只能新建一个组件,重新编排依赖关系。操作较繁琐。尤其是在离线环境,发现安装的组件有问题时,调整后再发布,往往还需要再次刻盘。因此为了解决这种问题。在新版本中,我们支持直接将应用商店的组件构建源更改为镜像或者源码。以便于快速自测和交付。

change_build_source.png

6. 支持创建任务类型(Job/CronJob)的组件

在新版本中,我们的组件部署类型,在无状态组件和有状态组件的基础上,又扩展了两种类型,任务(Job)和周期性任务(CronJob), 现在如果需要创建一次性任务,可以通过更改组件部署类型修改。

功能详细文档参考: https://www.rainbond.com/docs/use-manual/component-create/task-support/job-cronjob

详细变更点

新增功能

  • 【集群管理】 支持一键导入已有集群应用
  • 【团队管理】 支持直接通过 Jar、War 包或 Yaml 文件部署组件
  • 【组件管理】 支持创建 Job/CronJob 类型任务
  • 【组件管理】 支持应用商店安装的组件修改构建源
  • 【应用管理】 支持扩展应用和组件支持的属性
  • 【组件管理】 支持 Dockerfile 使用私有镜像构建(https://github.com/goodrain/rainbond/issues/1172)

优化功能

BUG 修复