Menu Close

6.2. 配置使用 OpenShift 上 Fuse 中的 Apache Camel 创建的 APIcast 策略扩展

在 OpenShift 上使用 Fuse 实施 Apache Camel 转换后,您可以使用 3scale 管理门户将其配置为 APIcast 策略链中的策略扩展。

策略扩展允许您配置 3scale 产品以使用 Camel HTTP 代理。此服务用于通过 HTTP 代理发送 3scale 流量,以在第三方代理中执行请求响应修改。在这种情况下,第三方代理是使用 OpenShift 中的 Fuse 实施 Apache Camel。您还可以配置 APIcast,以使用 TLS 安全地连接到 Camel HTTP 代理服务。

注意

策略扩展代码在 OpenShift 上的 Fuse 中的 Apache Camel 应用程序中实施,无法从 3scale 修改或删除。

先决条件

步骤

  1. 在 3scale Admin Portal 中,选择 Integration > Policies
  2. 选择 POLICIES > Add policy > Camel Service
  3. 在相应字段中输入用于连接到 Camel HTTP 代理服务的 OpenShift 路由:

    • https_proxy:使用 http 协议和 TLS 端口连接到 Camel HTTP 代理,例如:

      http://camel-proxy.my-3scale-management-project.svc:8443
    • http_proxy:使用 http 协议和端口连接到 Camel HTTP 代理,例如:

      http://camel-proxy.my-3scale-management-project.svc:8080
    • all_proxy :在协议未指定的情况下,使用 http 协议和端口连接到 Camel HTTP 代理,例如:

      http://camel-proxy.my-3scale-management-project.svc:8080
  4. 将更新的策略配置提升到您的暂存或生产环境。例如,点 Promote v.3 to Staging APIcast.
  5. 使用 3scale curl 命令测试 APIcast 策略配置,例如:

    curl "https://testapi-3scale-apicast-staging.myuser.app.dev.3sca.net:443/?user_key=MY_USER_KEY" -k

    APIcast 建立一个新的 TLS 会话,用于连接 Camel HTTP 代理。

  6. 确认消息内容已转换,本例中将转换为大写。
  7. 如果要绕过 APIcast 并直接使用 TLS 测试 Camel HTTP 代理,则必须使用自定义 HTTP 客户端。例如,您可以使用 netcat 命令:

    $ print "GET https://mybackend.example.com HTTP/1.1\nHost: mybackend.example.com\nAccept: */*\n\n" | ncat --no-shutdown --ssl my-camel-proxy 8443

    本例使用 GET 后的完整 URL 创建 HTTP 代理请求,并使用 ncat --ssl 参数在端口 8443 上指定 与 my-camel-proxy 主机的 TLS 连接。

    注意

    您不能使用 curl 或其他通用 HTTP 客户端直接测试 Camel HTTP 代理,因为代理不支持使用 CONNECT 方法进行 HTTP 隧道。通过 CONNECT 使用 HTTP 隧道时,传输是端到端加密,不允许 Camel HTTP 代理调节载荷。