参与社区贡献:分享你的插件
· 阅读需 6 分钟
本文介绍如何分享你的插件到 Rainbond 开源应用商店,共享插件扩展能力的同时也可以与 Rainbond 社区一起丰富插件市场。
由于应用运维特征的实现都具有较大的共性,为了将业务容器与其运维能力解耦,Rainbond 基于 SideCar 模式实现了一种组件下的插件机制。Rainbond 插件可以作为组件运维能力的扩展,插件本身就是一个 Sidecar 容器,它可以用于解决以下问题:
- 在不更改现有业务代码的情况下扩展组件的功能
- 在业务运行前完成一些数据初始化的操作
- 将业务的日志发送到外部服务器用于分析处理
- 拦截清洗业务的流量,用作防火墙
- 监控业务的性能指标等
插件本身仅包含描述和实现,使其可以被复用。必须绑定到组件时才具有运行时状态。在 V5.7.0-release 版本中,Rainbond 支持用户分享自己的插件到开源应用商店中,其他用户都可使用该插件。
插件原理

如上图所示,Rainbond 插件有以下特性:
- 与应用共享网络,网络空间一致使插件可以对组件网络流量进行旁路复制、截断,设置组件本地域名解析等
- 与应用共享存储,插件与组件之间可以通过持久化目录进行文件交换
- 与应用共享环境变量,插件可以通过读取组件的环境变量实现配置信息共享
基于以上特性,我们就可以制作自己的插件,将其与组件一起分享到开源应用商店,供大家使用。
插件制作
接下来将以 Fluentd-ElasticSearch6 插件为例,介绍插件如何制作。
制作 Fluentd ElasticSearch 6 插件
- 进入到 Rainbond 团队视图 -> 插件 -> 新建插件,创建一般类型插件。
- 镜像地址:qlucky/fluentd-elasticsearch6:v1.14

- 创建插件并点击右上角构建进行插件构建。
- 给 Fluentd 插件添加配置文件,在插件下方的
配置文件和共享存储新增配置。- 配置文件挂载路径:/fluentd/etc/fluent.conf
<source>
@type tail
path /var/log/nginx/access.log
pos_file /var/log/nginx/nginx.access.log.pos
<parse>
@type nginx
</parse>
tag es.nginx.log
</source>
<match es.nginx.**>
@type elasticsearch
log_level info
hosts 127.0.0.1
port 9200
user elastic
password MagicWord
index_name fluentd.${tag}
<buffer>
chunk_limit_size 2M
queue_limit_length 32
flush_interval 5s
retry_max_times 30
</buffer>
</match>

使用 Fluentd 插件
- 基于镜像创建组件,镜像使用
nginx:latest,并且挂载存储var/log/nginx