应用插件
概述
Rainbond 的插件体系抽象集中在业务层面,理论基础源于 Kubernetes 的 Pod 机制和一部分容器概念。针对平台业务层面对 Kubernetes 容器编排进行抽象,转变为一个对用户体验友善的 Rainbond 插件产品的过程,方便用户在不需要懂 Kubernetes 原理的情况下使用。
Rainbond 的插件类型主要有以下两种:
- 初始化容器: 在 pod 创建时运行的容器,主要用于初始化应用的数据、环境等,初始化容器在主容器启动之前启动,主要用于初始化应用的数据、环境等。
- 一般容器: 与主容器同时启动的容器,主要用于扩展应用的功能,如日志收集、监控等。
设计原则
Rainbond插件体系的设计遵循易于理解和易于使用的原则:
- 易于理解: 在 Rainbond 插件体系中,插件使用的过程即主容器与 init 或 sidecar 等容器结合的过程,原理是将插件容器以 sidecar 容器(大部分)的形式编排至主应用的 pod 中,共享主应用容器的网络和环境变量。
- 易于使用: Rainbond 插件体系易于使用的原则体现在类应用化、绑定使用、独有的变量作用域等方面。
类应用化
Rainbond 插件体系为插件设计了与应用类似的生命周期,包含创建、启用、关闭等模式,与 Rainbond 平台用户操作应用的习惯保持一致。同时, Rainbond 插件体系简化了插件创建类型,支持基于 docker image 和 dockerfile 创建,创建插件比创建应用更加简单。
插件创建流程设计如下图所示:
需要注意的是,当一个插件版本固定后,其内存、版本信息、插件变量无法再做修改,这些元素仅作用于当前插件版本。需要修改插件变量等元素时,对插件进行重新构建
,重复创建流程即可。
创建完成后,用户可以对插件进行针对性设置,目前可以设置变量、插件生效与否和内存设定。内存的限制将在 Pod 创建时进行限制,插件变量生效与实时修改在下文中会继续介绍。
独有的变量作用域
注入到容器内的变量设计为有两类:共用变量
与 插件变量
。
- 共用变量就是主容器的变量,为使插件参与甚至扩展主应用的功能,在 Pod 创建过程中将主应用的环境变量注入到了插件容器中。
- 插件变量则仅作用在该插件容器内部,防止插件间的变量重复与混用。