导入已有资源

本篇文档介绍了如何将集群中命名空间下的资源导入 Rainbond 。

导入已有资源 - 图1caution

  • 治理模式默认为 k8s 原生 service 模式
  • Rainbond 创建或导入过的命名空间以及 ‘kube-‘ 开头的命名空间不会被识别。
  • 仅支持部分类型的转换,详细支持转换资源类型如下。
  • 导入过程中,如果组件类型资源的 pod 模版内有多个容器, Rainbond 默认只会识别第一个容器,其他容器会丢失,如果想启动多个容器,可以了解一下 Rainbond 的插件制作

导入转换策略

以下便是按照类型划分的详细的支持资源清单。

组件类型资源

该类型资源导入完成后会转换成 Rainbond 中的组件。

k8s资源Rainbond模型
Deployment无状态组件
StatefulSet有状态组件
CronJob定时任务组件
Job任务组件

组件属性资源

组件类型资源自身携带的一些属性值,如Port、ConfigMap、volume等

组件属性Rainbond模型
nodeSelector组件特殊属性
labels组件特殊属性
tolerations组件特殊属性
volumes组件特殊属性
serviceAccountName组件特殊属性
affinity组件特殊属性
volumeMount组件特殊属性/配置文件
privileged组件特殊属性
port组件端口
HorizontalPodAutoscalers组件伸缩策略
env环境变量/组件特殊属性
HealthyCheckManagement组件健康检测

如果组件的 volumeMount 挂载了 ConfigMap 类型的 volume ,则会转化为组件的配置文件。
如果 env 是引用类型,则不会被识别到 Rainbond 的环境变量。

k8s资源类型

供应用下的组件调用的资源(暂只支持导入以下几种资源)

k8s资源类型
Service
PersistentVolumeClaim
Ingress
NetworkPolicy
ConfigMap
Secret
ServiceAccount
RoleBinding
HorizontalPodAutoscaler
Role
该类型资源导入完成后会存储到对应应用下的 k8s 资源中供组件特殊属性使用,特殊属性中volume可以绑定 ConfigMap 、 Secret

开始导入

资源导入有两个入口:

  1. 平台管理 -> 集群 -> 导入。
  2. 团队视图内 -> 新增 -> Kubernetes YAML Helm -> 导入 Kubernetes 已有资源。

前提条件

  1. 已了解 Rainbond 的团队、应用、组件等所有模块的概念
  2. 存在一个不是 Rainbond 所管理的命名空间并且命名空间下有k8s资源。
  3. 把想要放在同一应用下的 k8s 资源添加上统一的label标签,格式为 app.kubernetes.io/name:xxxapp:xxx
  4. 了解资源导入的入口(在集群视图下的操作栏里点击导入按钮)。

下面将会以 Linkerd 命名空间为例, 介绍在 Rainbond 上导入Linkerd命名空间及其内部的资源。

选择命名空间

  1. 从下拉框中选择你要导入的命名空间。

  2. 等待页面识别完毕后,你会看到页面会按照应用/资源类型/名称 逐级划分,应用是按照标签app.kubernetes.io/name:xxxapp:xxx划分的请检查是否有遗漏或排列位置不对的资源,不含划分应用标签的资源会全部放到默认的未分组应用下。

  3. 在检测过程中如果有资源位置不对需要调整,或者不想导入了,可点击上一步后进去集群中去调整,调整完成后再重新进入识别页面,识别页面是可以反复查看的。

  4. 在查看资源类型及名称并选择命名空间后,确认无误点击下一步进入到高级识别。

导入已有资源 - 图2

高级资源识别

  1. 在这个页面你能看到你部署在集群中的资源对应到 Rainbond 各个模块后的体现。其中Deployment、Job、Cronjob、StatefulSet会识别为组件,其他Service、HPA等资源会对应解析为应用视图下的k8s资源中。

  2. 在确认无误后,点击确认导入。

导入已有资源 - 图3 导入已有资源 - 图4

资源导入

  1. 在经过前两轮的检查后,点击确认导入,Rainbond将开始导入并接管资源,过程需要经过拉取镜像、数据入库等一系列操作,所以需要等待一些时间,等待时间长短取决于命名空间下资源的数量。

  2. 导入完成后会跳转到团队视图下,便可以看到 Rainbond 接管后的资源。

  3. unclassified应用则是上面所说的默认未分组应用。

Rainbond在接管后不会立刻重启用户在集群中的资源,当用户点击重启或更新等操作后,才会生产出一个完全由 Rainbond 接管的资源。

导入已有资源 - 图5