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 修改或删除。
先决条件
您必须在同一 OpenShift 集群上部署 Fuse on OpenShift 7.10 和 3scale 2.12。有关安装详情,请参阅:
- 您必须已在 OpenShift 的 Fuse 中使用 Apache Camel 应用程序实施了 APIcast 策略扩展。请查看 第 6.1 节 “在 Fuse 中集成 APIcast 与 Apache Camel 转换”
- 您必须已在 OpenShift pod 中部署 Apache Camel 应用程序,并将其作为服务公开。如需了解更多详细信息,请参阅在 OpenShift 的 Fuse 上创建和部署应用程序。
步骤
- 在 3scale Admin Portal 中,选择 Integration > Policies。
- 选择 POLICIES > Add policy > Camel Service。
在相应字段中输入用于连接到 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
- 将更新的策略配置提升到您的暂存或生产环境。例如,点 Promote v.3 to Staging APIcast.
使用 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 代理。
- 确认消息内容已转换,本例中将转换为大写。
如果要绕过 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 代理调节载荷。