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的源碼

3、修改文件

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

2.進入plugins目錄,新建url-writer的文件夾,並創建handler.lua文件和schema.lua文件,handler.lua文件中是插件主要的邏輯,需要繼承baseplugin。根據不同階段完成需要的邏輯。

3.handler.lua文件

這裏注意UrlRewriteHander.PRIORITY 是插件執行的順序。UrlRewriteHander.VERSION是插件的版本。local UrlRewriteHander = BasePlugin:extend(),自定義變量(local指定位非全局變量)UrlRewriteHander並繼承baseplugin,接下來是邏輯部分,最後不要忘了return自定義變量。

4.schema.lua文件

 

kong1.0版本中插件有修改,增加了name字段,這裏必須要返回你自定義的名稱,不然會報錯,fields中是對字段的約束

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章