本文讲解插件的行为,也就是说用户可以对插件做哪些控制。

一、插件的定义

应用插件是标准化的为应用提供功能扩展,与应用共同运行的程序,例如:性能分析插件可以实时看到该服务的性能如何,吞吐率、响应时间以及在线人数等;网路治理插件则可以实现智能路由、A/B测试以及灰度发布等

二、创建插件

2.1 开始制作插件

插件是以容器形式运行在云帮上的,所以制作插件就是制作一个可运行的镜像,可参考防火墙插件

2.2 安装nginx

因为插件的功能涉及到监听端口和请求转发,这正是nginx所擅长的,所以我们先编写一个Dockerfile,并在容器中要安装一个nginx。

2.3 配置nginx

当我们为应用安装了一个插件后,云帮会自动为插件分配一个端口,并且应用的所有请求在到达应用之前都会先到达该端口,这些端口相关的信息可以通过node组件的RESTFUL API获取到,而该API地址会被注入到插件的环境变量中。

我们现在需要从API中获取端口信息然后写入到nginx的配置文件中,这部分工作可以通过confd服务来自动完成,confd服务的启动比较简单:

  1. confd --template ./nginx.conf.template --out ./nginx.conf &

confd服务完成的事情如下:

  • 从环境变量DISCOVER_URL获取API地址
  • 循环请求API得到端口信息,如果信息有变化则进行下面的步骤
  • 修改nginx.conf.template文件中的监听端口号和应用端口号,然后覆盖nginx.conf文件
  • 通知nginx重新加载配置

2.5 新建插件

将写好的Dockerfile和其它依赖的文件上传到代码仓库中,登录云帮的控制台,进入我的插件页面,点击新建插件,插件类型选择入口网络,用刚才上传的项目来创建一个插件,最后点击构建插件等待完成。

2.6 配置插件

新建插件以后,我们可以为插件增加一些配置项,比如是否开启过滤请求功能,是否对某个IP做特殊限制等等,这些配置项在我们调前面说的API的时候可以获取到,这样就可以在插件中做出相应的处理。在构建页面的下方找到配置组管理模块,点击新增配置,在弹出的对话框中选择应用端口,然后填写配置项与对应的值等等,最后点击确定。

插件分享与发布 - 图1

三、插件的使用

创建好插件后,如需在服务商使用该插件,需要去服务详情页面的插件页面开通插件即可插件分享与发布 - 图2

四、插件的分享

插件与应用一样,都可以分享和安装,需注意只有构建完成的插件才可以分享,分享的流程和应用相同插件分享与发布 - 图3

原文: https://www.rainbond.com/docs/stable/user-manual/plugin-manage/plugin-manage.html