kong添加自定义插件(一)

api网关kong支持自定义插件,但是如何添加一个自定义的插件?

通过admin api 添加一个kong原有的plugin,curl命令方式:curl -i -X POST --url http://192.168.74.111:8001/routes/3da2439b-5a54-4fc1-bf23-7969be09a845/plugins --data 'name=key-auth' 就可以给指定id的route添加插件,这个很简单,没啥难度

如果想添加一个自定义的插件,名称为url-rewrite的插件,如果直接调用上面ctrl命令是会报错的,我们需要修改源码

kong源码修改的正确姿势,我没有找到好的ide来写lua,同时kong的调试比较麻烦,我这里通过虚机里yum方式安装kong(docker安装的修改源码会比较麻烦),然后直接在虚机中修改源码,这种方式很不友好,但是目前也没有好的方式可以在windows下完成调试,如果有好的方式实现debug调试,还请告诉一下,万分感谢!!!

那么这篇文章要完成的就是通过调用admin api方式添加一个名称为url-rewrite的自定义插件,废话不多说,干吧

1、版本

     我这里虚机是在centos6下,安装了kong最新版本1.0,数据库用到的是postgresql10,关于kong及数据库的安装可参照之前的博客。

2、修改文件位置

    linux下kong的文件在哪?/usr/local/share/lua/5.1/kong,这个目录下的文件是kong的源码

kong添加自定义插件(一)_第1张图片

3、修改文件

1.需要修改constants.lua文件,在plugins中添加自定义插件名称url-rewrite。

kong添加自定义插件(一)_第2张图片

2.进入plugins目录,新建url-writer的文件夹,并创建handler.lua文件和schema.lua文件,handler.lua文件中是插件主要的逻辑,需要继承baseplugin。根据不同阶段完成需要的逻辑。

3.handler.lua文件

kong添加自定义插件(一)_第3张图片

这里注意UrlRewriteHander.PRIORITY 是插件执行的顺序。UrlRewriteHander.VERSION是插件的版本。local UrlRewriteHander = BasePlugin:extend(),自定义变量(local指定位非全局变量)UrlRewriteHander并继承baseplugin,接下来是逻辑部分,最后不要忘了return自定义变量。

4.schema.lua文件

kong添加自定义插件(一)_第4张图片

 

kong1.0版本中插件有修改,增加了name字段,这里必须要返回你自定义的名称,不然会报错,fields中是对字段的约束

修改完成后重启kong ,指定curl命令,就可以添加插件了。

你可能感兴趣的:(kong)