如何在Docker声明式配置的Kong中安装自定义插件?
在Docker+声明式Kong环境中安装自定义插件的方案
核心结论:不能仅通过kong.yml完成自定义插件的安装。声明式配置(YAML清单)的作用是启用已被Kong加载的插件,而自定义插件的文件加载必须先通过kong.conf配置让Kong的Lua解释器找到插件文件,再结合Docker文件挂载实现,具体操作步骤如下:
1. 挂载自定义插件文件到Docker容器
Kong的插件需要放置在容器内的标准Lua插件目录才能被识别,你需要把自定义log-test插件的handler.lua和schema.lua放到本地一个单独目录(比如./custom-plugins/log-test/),然后修改kong_install.bat的Docker启动命令,添加目录挂载参数:
docker run -d ^ -v %cd%\custom-plugins/log-test:/usr/local/share/lua/5.1/kong/plugins/log-test ^ -v %cd%\kong.yml:/usr/local/kong/declarative/kong.yml ^ -v %cd%\kong.conf:/usr/local/kong/conf/kong.conf ^ -p 8000:8000 ^ -p 8443:8443 ^ kong:latest kong start -c /usr/local/kong/conf/kong.conf -e
注:Windows环境下用
%cd%表示当前目录,确保挂载路径和本地文件结构匹配,容器内的目标路径是Kong默认扫描插件的目录。
2. 配置kong.conf加载插件
在kong.conf中添加两项关键配置,让Kong识别并启用自定义插件:
# 将自定义插件加入启用列表,bundled表示保留官方内置插件 plugins = bundled,log-test # 若挂载的是非标准路径,需添加到Lua包路径;标准路径可省略此配置 lua_package_path = ./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;;
3. 在kong.yml中声明式启用插件
当插件被Kong成功加载后,就可以通过kong.yml将插件绑定到服务、路由或全局范围,示例配置如下:
_format_version: "3.0" services: - name: demo-service url: http://your-backend-service routes: - name: demo-route paths: - /demo plugins: - name: log-test config: # 这里填写插件的配置参数,需与schema.lua中定义的字段匹配 log_target: /var/log/kong/log-test.log log_level: warn
验证插件加载状态
启动容器后,可通过Kong Admin API验证插件是否成功启用:
curl http://localhost:8001/plugins/enabled
返回结果中若包含log-test,则说明插件加载成功。
内容的提问来源于stack exchange,提问作者mikyll98
相关产品推荐
相关产品推荐

