Kong插件安装使用指南

编程

一. Kong插件简介

1. Kong插件是什么

Kong是一个Lua应用程序,旨在加载和执行Lua模块。所以Kong的插件开发就是开发一个lua模块。lua模块是一个 table,把需要导出的常量、函数放入其中,最后返回这个 table,目的是为了复用代码。

2. Kong插件怎么写

1. 文件结构

Kong插件遵循严格的文件结构,即包命,类名,文件位置等组织代码的方式是固定的,详细的文件结构如下图所示。

2. 自定义逻辑

Kong 提供了一个基类,允许开发者覆盖类中提供的方法,这些方法的本质是openresty定义的请求生命周期,比nginx详细,可以在request/response 的生命周期中的几个入口点注入自定义逻辑。每一个方法有一个config参数,这个参数即schema.lua 中声明的,在使用插件时的配置。详细的逻辑如下图所示。

3. 插件配置

插件配置就是需要提供插件运行时必要的设置,如一个http-log插件,需要填写http endpoint,method, content type,timeout等参数,这一切都在schema.lua中配置,可设置参数名称,类型,默认值,验证规则等。

二. Kong插件安装

Kong插件有两种存放位置。

  1. 使用默认的lua包管理工具luarocks安装,假设Kong运行在物理机上,且物理机安装了luarocks,Kong可以扫描到使用luarocks install的插件。

  2. Kong有一个配置文件,启动Kong后,执行 Kong check 返回 configuration at /etc/Kong/Kong.conf is valid, 与Kong插件相关的配置有3个prefix = /usr/local/Kong/ ,plugins = bundled,lua_package_path = ./?.lua;./?/init.lua; 分别代表Kong安装目录,需要加载的插件,lua脚本的目录,所以默认加载目录是 Kong 的安装目录的。

所以Kong插件的存放位置要么是默认的luarocks 管理位置,要么需要修改lua_package_path变量,两种都需要修改 plugins 变量来加载插件,如加载kafka-log插件,需要修改plugins = bundled,kafka-log,重启Kong,若插件代码正确,则加载成功,可以使用命令行使用插件,也可使用Konga ui管理页面上会看到。

Kong配置文件的变量可使用环境变量在运行时覆盖,只需要加上前缀Kong_。

三. kafka-log插件使用

需要安装postgres,Kong,Konga,zookeper,kafka.

github插件地址,及目前luarocks:https://luarocks.org 发布的版本 ,经研究在Kong 1.x以上不可用,原因是Kong升级后删除了

schema 中 self_check属性,改为entity_checks 。修复版本地址:https://gitee.com/nullpointerxyz/Kong-plugin-kafka-log.git

上面说了,由于luarocks发布也是旧版本,不可用,需要自己打包。

$ git clone https://gitee.com/nullpointerxyz/Kong-plugin-kafka-log

$ cd /path/to/Kong/plugins/Kong-plugin-kafka-log

$ luarocks make *.rockspec

此时已发布到本机luarocks相关目录。

执行Kong_PLUGINS=bundled,kafka-log Kong start启动Kong,使用环境变量覆盖默认配置,加载插件,同时启动Kong。打开Konga插件管理地址,可以看到kafka-log已经加载出来,填写bootstrap servers和topic,请求/8080/xxx代理请求,日志可以被kafka消费者消费。

以上是 Kong插件安装使用指南 的全部内容, 来源链接: utcz.com/z/512123.html

回到顶部