4.4.2. 在嵌入式 APIcast 中添加自定义策略

要将自定义 APIcast 策略添加到内部部署中,您必须构建包含自定义策略的 OpenShift 镜像,并将其添加到您的部署中。3scale 提供了一个示例存储库,您可以使用作为框架来创建和添加自定义策略到内部部署。

此示例存储库包含自定义策略的正确目录结构,以及用于创建镜像流和 BuildConfig 的模板,用于构建包含您创建的任何自定义策略的新 APIcast OpenShift 镜像。

警告

构建 apicast-custom-policies 时,构建过程会将新镜像推送到 amp-apicast:latest 标签。当此镜像流标签(:latest)上的镜像更改时,api cast-stagingapicast-production 标签都默认配置为自动启动新部署。为避免对生产服务造成任何干扰(如果您愿意),建议禁用自动部署("在镜像更改时以"方式启动新部署 "),或者为生产环境配置不同的镜像流标签(如 amp-apicast:production)。

将自定义策略添加到内部部署中:

  1. 使用您在 创建 registry 服务帐户 中创建的凭证创建一个 docker-registry secret,具体如下:

    • your-registry-service-account-username 替换为以 12345678|username 创建的用户名。
    • your-registry-service-account-password 替换为用户名下面的密码字符串,位于 Token Information 选项卡下。
    • 为每个镜像流所在并使用 registry.redhat.io 的新 命名空间 创建一个 docker-registry secret。

      运行这个命令来创建 docker-registry secret:

      oc create secret docker-registry threescale-registry-auth \
        --docker-server=registry.redhat.io \
        --docker-username="your-registry-service-account-username" \
        --docker-password="your-registry-service-account-password"
  2. https://github.com/3scale/apicast-example-policy [带有策略示例] 的公共存储库进行分叉,或使用其内容创建私有存储库。您需要在 Git 存储库中提供自定义策略的代码,供 OpenShift 构建该镜像。请注意,为了使用私有 Git 存储库,您必须在 OpenShift 中设置机密。
  3. 在本地克隆存储库,为您的策略添加实施,并将更改推送到您的 Git 存储库。
  4. 更新 openshift.yml 模板。特别是,更改以下参数:

    1. 策略 BuildConfig 中的 spec.source.git.uri: https://github.com/3scale/apicast-example-policy.git - 将它更改为 Git 存储库位置。
    2. spec.source.images[0].paths.sourcePath: /opt/app-root/policies/example (自定义策略 BuildConfig)中的 spec.source.images[0].paths.sourcePath: /opt/app-root/policies/example - 改为您在存储库中的 policy 目录中添加的自定义策略 名称
    3. (可选)更新 OpenShift 对象名称和镜像标签。但是,您必须确保更改是一致的(例如:api cast-example-policy BuildConfig 构建并推送 apicast-policy:example 镜像,该镜像随后被 apicast-custom-policies BuildConfig 用作源)。因此,标签应当相同。
  5. 运行以下命令来创建 OpenShift 对象:

    oc new-app -f openshift.yml --param AMP_RELEASE=2.9
  6. 如果构建没有自动启动,请运行以下两个命令:如果您更改了它,请将 apicast-example-policy 替换为您自己的 BuildConfig 名称(如 apicast-<name>-policy)。等待第一个命令完成,然后执行第二个命令。

    oc start-build apicast-example-policy
    oc start-build apicast-custom-policies

如果内置 APIcast 镜像跟踪 amp-apicast:latest 镜像流中的更改,则 APIcast 的新部署将启动。apicast-staging 重启后,导航到 Integration > Policies,然后点击 Add Policy 按钮来查看列出的自定义策略。选择并配置后,单击 Update Policy Chain,使自定义策略在暂存 APIcast 中正常工作。