4.4. 自定义 3scale API 管理 APIcast 策略


配置自定义策略以修改 APIcast 行为。首先,定义一个策略链来配置 APIcast 策略,包括您的自定义策略;然后,将策略链添加到 APIcast。

注意

红帽 3scale 提供了一种添加自定义策略的方法,但不支持自定义策略。

APIcast 的自定义策略取决于您的 3scale 部署的配置:

  • 将自定义策略添加到这些 APIcast 自我管理部署中:OpenShift 上的 APIcast,以及您安装的容器化环境中的 APIcast。
  • 您无法将自定义策略添加到 APIcast 托管。
警告

切勿直接在生产网关上进行策略更改。始终测试您的更改。

4.4.1. 关于 3scale API 管理 APIcast 部署的自定义策略

您可以完全创建自定义 APIcast 策略,或修改标准策略。

要创建自定义策略,您必须了解以下内容:

  • 策略用 Lua 编写。
  • 策略必须遵循,并且必须放在正确的文件目录中。
  • 策略行为受到策略链中的放置方式的影响。
  • 完全支持添加自定义策略的接口,但不支持自定义策略本身。

要在 3scale API 管理实例中添加自定义策略,请参阅使用 3scale API Management operator 注入自定义策略

4.4.2. 在另一个 OpenShift Container Platform 中添加自定义策略到 3scale API 管理

您可以通过从集成的 OpenShift Container Platform 注册表获取包含自定义策略的镜像,将自定义策略添加到 OpenShift Container Platform (OCP)上的 APIcast。

流程

  1. 使用 3scale API 管理操作器注入自定义策略
  2. 如果您没有在 OpenShift 主集群中部署 APIcast 网关,请 建立对主 OpenShift 集群上的内部注册表的访问
  3. 下载 3scale 2.15 APIcast OpenShift 模板。
  4. 要修改模板,请将默认 镜像 目录替换为内部注册表中的完整镜像名称。

    image: <registry>/<project>/amp-apicast:latest
  5. 使用 OpenShift 模板部署 APIcast,并指定您的自定义镜像:

    $ oc new-app -f customizedApicast.yml
注意

当自定义策略添加到 APIcast 并构建新镜像时,当 APIcast 使用镜像部署时,这些策略将自动显示在管理门户中。现有服务可以在可用策略列表中看到此新策略,因此可以在任何策略链中使用。

从镜像中删除自定义策略并重启 APIcast 时,该策略将不再在列表中可用,因此您无法再将它添加到策略链中。

4.4.3. 在 3scale API 管理自定义策略中包含外部 Lua 依赖项

您可以将外部 Lua 依赖项添加到自定义策略中,以便 APIcast 可以使用 3scale 镜像中没有的 Lua 库。

此处的步骤演示了如何使用自定义策略示例来将响应正文从 JSON 转换为 XML。自定义策略示例需要 xml2lua XML 解析器,该解析器使用 Lua 编写。完整的示例显示了用于构建和测试的简短示例,但您无法仅遵循示例过程来部署自定义策略。要部署具有外部 Lua 依赖项的自定义策略,您必须执行此流程中的步骤,并在 另一个 OpenShift Container Platform 中将自定义策略添加到 3scale API 管理

注意

JSON 到 XML 自定义策略只是示例。它不可用于生产环境。

先决条件

  • 3scale 自定义策略。
  • 访问外部 Lua 库。

流程

  1. 在包含自定义策略的目录中,添加一个可识别外部 Lua 库的文件。

    文件的名称必须是 Roverfile。在 JSON 到 XML 自定义 策略示例中,Roverfile 具有此内容:

    luarocks {
    	group 'production' {
    		module { 'xml2lua' },
    	}
    }

    lua-rover 是 LuaRocks 的一个打包程序。lua-rover 为依赖项提供传输锁定。LuaRocks 是 Lua 模块的软件包管理器。

  2. 在包含自定义策略的目录中,添加一个 lua-rover 锁定文件。

    文件的名称必须是 Roverfile.lock。在 JSON to XML 自定义策略示例中,Roverfile.lock 具有此内容:

    xml2lua 1.5-2||productionbash-4.4

    RoverfileRoverfile.lock 一起启用 APIcast 或 3scale 操作器来获取依赖的库。

  3. 在定义自定义策略的文件中,添加一行来指定 Lua 依赖项。JSON to XML 自定义策略示例指定这一行:

    local xml2lua = require("xml2lua")
  4. 在用于构建自定义策略的 Dockerfile 中,复制 RoverfileRoverfile.lock,并运行 rover installJSON to XML 自定义策略示例将以下行添加到其 Dockerfile 中:

    COPY Roverfile .
    COPY Roverfile.lock .
    
    RUN rover install --roverfile=/opt/app-root/src/Roverfile

    您的 Dockerfile 可以使用 APIcast 或 3scale operator 来构建策略。

  5. 在自定义策略的 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.15 -t $(TARGET_IMAGE)

后续步骤

部署具有外部 Lua 依赖项的自定义策略的其余步骤与部署其他自定义策略的步骤相同。也就是说,您需要将镜像推送到存储库,并将 APIcast 镜像替换为您刚才构建的镜像。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.