如何将自定义 kong 插件添加到 dockerized kong

Posted

技术标签:

【中文标题】如何将自定义 kong 插件添加到 dockerized kong【英文标题】:How can I add a customized kong plugin into dockerized kong 【发布时间】:2018-10-27 16:59:54 【问题描述】:

我有一个 KONG 容器正在运行,我想向它添加一个自定义插件,特别是 JWT crafter。 我已经下载了插件,但我不知道如何让它从我的 KONG 容器开始。因此,如果有人处于相同的位置或知道要遵循的任何路线,那将非常有帮助。

【问题讨论】:

【参考方案1】:

我尝试做同样的事情,但还没有找到描述良好的答案。 您可以配置简单的 helloworld 插件如下:(https://github.com/brndmg/kong-plugin-hello-world)

Docker 主机上的本地“插件”目录结构:

然后你可以挂载本地/plugins目录,让kong从/plugins目录加载自定义的'helloworld'插件

1) 使用环境变量

$ docker run -d --name kong --network=kong-net \
-e "KONG_DATABASE=cassandra" \
-e "KONG_PG_HOST=kong-database" \ 
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
**-e "KONG_LUA_PACKAGE_PATH=/plugins/?.lua" \
-e "KONG_CUSTOM_PLUGINS=helloworld" \ ** 
...
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
**-v "/plugins:/plugins" \**
-p 8080:8000 -p 8443:8443 -p 8001:8001 -p 8444:8444 kong:latest

然后,你可以在http://[kong-url]:8001/看到配置的自定义插件

..
"custom_plugins": [
"helloworld"
],
..

2) 或者,您可以简单地挂载描述您想要的插件的自定义 kong.conf 文件。

/etc/kong/kong.conf

plugins = bundled,helloworld,jwt-crafter

(似乎第二个选项更适合最新版本的 Kong,因为 'kong_custom_plugin' 配置会打印 'deprecation' 警告)

对于智威汤逊工匠,https://github.com/foodora/kong-plugin-jwt-crafter 似乎插件维护得不好,以至于使用 luarocks 安装失败并出现错误。

$ luarocks install kong-plugin-jwt-crafter
....
kong-plugin-jwt-crafter 1.0-0 depends on lua-resty-jwt ~> 0.1.10-1 (not installed)

Error: Could not satisfy dependency lua-resty-jwt ~> 0.1.10-1: No results matching query were found.

相反,您可以直接将'resty-jwt'添加到官方docker镜像中,以解决官方镜像中不包含的依赖关系。并将“JWT Crafter”复制到“/plugins”目录,然后加载。

(在码头集装箱内)

 luarocks install lua-resty-jwt

希望这会有所帮助。

【讨论】:

如何在 Docker 容器中直接运行luarocks 命令?在 execing 进入容器后,我收到大量权限错误,阻止我安装 luarock 自 kong 2.0 以来似乎已经过时了【参考方案2】:

您可以使用 https://github.com/Kong/docker-kong/tree/master/customize 生成包含插件的新 docker 映像

查看示例 (https://github.com/Kong/docker-kong/blob/master/customize/example.sh),了解如何在 LuaRocks 上公开源代码的情况下执行此操作。

【讨论】:

假设插件在 LuaRocks 上,自定义插件可能不是这样。 @MuizzMahdy 没有。请参阅“Curated list of plugins”的自述文件,如果您只提供打包成rock的源,它可以创建一个本地LuaRocks服务器,并且需要制作您的代码公开。【参考方案3】:

我建议使用 this repository's 示例来使用您的自定义插件构建 Kong docker 映像。

【讨论】:

以上是关于如何将自定义 kong 插件添加到 dockerized kong的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义事件添加到 jQuery 插件模式中

微服务Kong——添加插件

如何将自定义片段添加到 zen-coding?

php 如何将自定义过滤器字段添加到没有过滤器插件的Tribe事件日历(在此示例中 - 按类别和标记过滤)。示例:https:

Pimcore - 如何将自定义按钮添加到对象树菜单

如何将自定义订单状态添加到 shopware 6