4.3.4. 在 3scale 自定义策略中包含外部 Lua 依赖项
您可以将外部 Lua 依赖项添加到自定义策略中,以便 APIcast 可以使用 3scale 镜像中没有的 Lua 库。
此处的步骤演示了如何使用自定义策略示例来将响应正文从 JSON 转换为 XML。自定义策略示例需要 xml2lua
XML 解析器,该解析器使用 Lua 编写。完整的示例显示了用于构建和测试的简短示例,但您无法仅遵循示例过程来部署自定义策略。要部署具有外部 Lua 依赖项的自定义策略,您必须执行此流程中的步骤,以及在另一个 OpenShift Container Platform 中将自定义策略添加到 3scale。
JSON 到 XML
自定义策略只是示例。它不可用于生产环境。
先决条件
- 3scale 自定义策略
- 访问外部 Lua 库
步骤
在包含自定义策略的目录中,添加一个可识别外部 Lua 库的文件。
文件的名称必须是
Roverfile
。在JSON 到 XML 自定义
策略示例中,Roverfile
具有此内容:luarocks { group 'production' { module { 'xml2lua' }, } }
lua-rover
是一个 LuaRocks 的 wrapper ,lua-rover
提供依赖项的传递锁定。LuaRocks 是 Lua 模块的软件包管理器。在包含自定义策略的目录中,添加一个
lua-rover
锁定文件。文件的名称必须是
Roverfile.lock
。在JSON to XML
自定义策略示例中,Roverfile.lock
具有此内容:xml2lua 1.5-2||productionbash-4.4
Roverfile
和Roverfile.lock
一起启用 APIcast 或 3scale 操作器来获取依赖的库。在定义自定义策略的文件中,添加一行来指定 Lua 依赖项。
JSON to XML
自定义策略示例指定这一行:local xml2lua = require("xml2lua")
在用于构建自定义策略的 Dockerfile 中,复制
Roverfile
和Roverfile.lock
,并运行 roverinstall
。JSON to XML
自定义策略示例将以下行添加到其 Dockerfile 中:COPY Roverfile . COPY Roverfile.lock . RUN rover install --roverfile=/opt/app-root/src/Roverfile
您的 Dockerfile 可以使用 APIcast 或 3scale operator 来构建策略。
在自定义策略的
Makefile
中,指定任何自定义策略的build
目标。例如,
构建
目标可能类似如下:TARGET_IMAGE="apicast/json_to_xml:latest" # IP="http://localhost:8080" build: docker build . --build-arg IMAGE=registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.12 -t $(TARGET_IMAGE)
后续步骤
部署具有外部 Lua 依赖项的自定义策略的其余步骤与部署其他自定义策略的步骤相同。也就是说,您需要将镜像推送到存储库,并将 APIcast 镜像替换为您刚才构建的镜像。