Kong系列-14-自定义插件

当Kong的开源插件无法满足需求时,可以通过自定义插件来实现更深层次的集成。Kong允许用户开发自己的插件,插件包含必须的handler.lua和schema.lua模块。可以参考Key Authentication插件的目录结构。自定义插件代码通常放在/usr/local/share/lua/5.1/kong/plugins/目录下,并通过修改kong.conf的plugins配置加载。
摘要由CSDN通过智能技术生成

Kong开源了大量的开源插件,当这些开源插件不能满足我们的需求,就需要修改这些开源插件或者自定义插件。Kong提供了方便地自定义插件机制,用户可以开发自己的定制插件。自定义插件可以和Kong进行深层次的集成,如使用数据库表结构,或者扩展Admin API。如果插件实现了所有可选模块,则其目录结构如下所示:

complete-plugin
├── api.lua
├── daos.lua
├── handler.lua
├── migrations
│   ├── init.lua
│   └── 000_base_complete_plugin.lua
└── schema.lua

插件的每个模块对应不同的功能,其中handler.lua和schema.lua是两个必须模块。

Module Name Required Description
api.lua No 插件需要向Admin API暴露接口时使用。
daos.lua No 数据层相关,当插件需要访问数据库是配置。
handler.lua Yes 插件的主要逻辑,Kong在不同阶段执行其对应的handler。
migrations/*.lua No 插件依赖的数据库表结构,启用了daos.lua时需要定义。
schema.lua Yes 插件的配置参数定义,主要用于Kong参数验证。

可以参考官方开源插件Key Authentication的目录结构。

下面演示如何在Kong加载自定义插件。先准备自定义插件的Lua代码。

mkdir myheader
cd myheader
 
vi handler.lua
local MyHeader = {}
 
MyHeader.PRIORITY = 1000
 
function MyHeader:header_filter(conf)
  -- do custom logic here
  kong.response.set_header("myheader", conf.header_value)
end
 
return MyHeader
 
vi schema.lua
return {
  name = "myheader",
  fields = {
    { config = {
        type = "record",
        fields = {
          { header_value = { type = "string", default = "twingao", }, },
        },
    }, },
  }
}
 
tree myheader/
myheader/
├── handler.lua
└── schema.lua

Kong已经预置了大量的开源插件,这些插件都放在/usr/local/share/lua/5.1/kong/plugins/目录下,我们自定义的插件也可以放到该目录下。

cd /usr/local/share/lua/5.1/kong/plugins/

ls
acl              datadog                      ldap-auth        rate-limiting          syslog
aws-lambda       file-log                     loggly           request-size-limiting  tcp-log
azure-functions  hmac-auth                    log-serializers  request-termination    udp-log
base_plugin.lua  http-log                     oauth2           request-transformer    zipkin
basic-auth       ip-restriction               post-function    response-ratelimiting
bot-detection    jwt                          pre-function     response-transformer
correlation-id   key-auth                     prometheus       session
cors             kubernetes-sidecar-injector  proxy-cache      statsd

mv /root/kong/plugin/myheader/ .

ls
acl              datadog                      ldap-auth        proxy-cache            statsd
aws-lambda       file-log                     loggly           rate-limiting          syslog
azure-functions  hmac-auth                    log-serializers  request-size-limiting  tcp-log
base_plugin.lua  http-log                     myheader         request-termination    udp-log
basic
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值