7.2. 为 Kafka 网桥部署 3scale
要将 3scale 与 Kafka 网桥搭配使用,首先对其进行部署,然后将其配置为发现 Kafka Bridge API。
您还将使用 3scale APIcast 和 3scale toolbox。
- APIcast 由 3scale 提供,作为基于 NGINX 的 API 网关,供 HTTP 客户端连接到 Kafka Bridge API 服务。
- 3scale toolbox 是一个配置工具,用于将 Kafka Bridge 服务的 OpenAPI 规格导入到 3scale。
在这种情况下,您将在同一 OpenShift 集群中运行 AMQ Streams、Kafka、Kafka Bridge 和 3scale/APIcast。
如果您已在与 Kafka 网桥相同的集群中部署了 3scale,您可以跳过部署步骤并使用当前的部署。
对于 3scale 部署:
- 检查 Red Hat 3scale API Management 支持的配置。
-
安装时需要具有
cluster-admin
角色的用户,如system:admin
。 您需要访问以下 JSON 文件:
-
Kafka Bridge OpenAPI specification (
openapiv2.json
) Kafka Bridge 的标头修改和路由
策略(policies_config.json
)在 GitHub 上查找 JSON 文件。
-
Kafka Bridge OpenAPI specification (
步骤
将 3scale API 管理部署到 OpenShift 集群。
创建新项目或使用现有的项目。
oc new-project my-project \ --description="description" --display-name="display_name"
oc new-project my-project \ --description="description" --display-name="display_name"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 3scale.
使用 安装 3scale 指南中提供的信息,通过模板或操作器在 OpenShift 中部署 3scale。
无论您使用哪一种方法,请确保您将 WILDCARD_DOMAIN 参数设置为 OpenShift 集群的域。
记录用于访问 3scale 管理门户的 URLS 和凭据。
为 3scale 授予发现 Kafka Bridge 服务的授权:
oc adm policy add-cluster-role-to-user view system:serviceaccount:my-project:amp
oc adm policy add-cluster-role-to-user view system:serviceaccount:my-project:amp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过 OpenShift 控制台或 CLI 验证 3scale 已成功部署到 Openshift 集群。
例如:
oc get deployment 3scale-operator
oc get deployment 3scale-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置 3scale toolbox。
- 使用 Operating 3scale 指南中提供的信息来安装 3scale toolbox。
设置环境变量以便与 3scale 交互:
export REMOTE_NAME=strimzi-kafka-bridge export SYSTEM_NAME=strimzi_http_bridge_for_apache_kafka export TENANT=strimzi-kafka-bridge-admin export PORTAL_ENDPOINT=$TENANT.3scale.net export TOKEN=3scale access token
export REMOTE_NAME=strimzi-kafka-bridge
1 export SYSTEM_NAME=strimzi_http_bridge_for_apache_kafka
2 export TENANT=strimzi-kafka-bridge-admin
3 export PORTAL_ENDPOINT=$TENANT.3scale.net
4 export TOKEN=3scale access token
5 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置 3scale toolbox 的远程 Web 地址:
3scale remote add $REMOTE_NAME https://$TOKEN@$PORTAL_ENDPOINT/
3scale remote add $REMOTE_NAME https://$TOKEN@$PORTAL_ENDPOINT/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,当您每次运行 toolbox 时,不需要指定 3scale 管理门户的端点地址。
检查您的 Cluster Operator 部署是否有 3scale 发现 Kafka Bridge 服务所需的标签和注解属性。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有,请通过 OpenShift 控制台添加属性或尝试重新部署 Cluster Operator 和 Kafka Bridge。
通过 3scale 发现 Kafka Bridge API 服务。
- 使用部署 3scale 时提供的凭据,登录 3scale 管理门户。
- 从 3scale 管理门户,导航到 ,其中您将看到 Kafka Bridge 服务。
点
。您可能需要刷新页面来查看 Kafka Bridge 服务。
现在,您需要导入该服务的配置。从编辑器执行此操作,但请保持门户打开以检查导入是否成功。
编辑 OpenAPI 规格(JSON 文件)中的 Host 字段,以使用 Kafka Bridge 服务的基本 URL:
例如:
"host": "my-bridge-bridge-service.my-project.svc.cluster.local:8080"
"host": "my-bridge-bridge-service.my-project.svc.cluster.local:8080"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
主机
URL 中包含正确的内容:- Kafka Bridge 名称(my-bridge)
- 项目名称(my-project)
- Kafka 网桥的端口(8080)
使用 3scale toolbox 导入更新的 OpenAPI 规格:
3scale import openapi -k -d $REMOTE_NAME openapiv2.json -t myproject-my-bridge-bridge-service
3scale import openapi -k -d $REMOTE_NAME openapiv2.json -t myproject-my-bridge-bridge-service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导入服务的标头修改和路由策略(JSON 文件)。
查找您在 3scale 中创建的服务 ID。
在这里,我们使用 "jq"实用程序 :
export SERVICE_ID=$(curl -k -s -X GET "https://$PORTAL_ENDPOINT/admin/api/services.json?access_token=$TOKEN" | jq ".services[] | select(.service.system_name | contains(\"$SYSTEM_NAME\")) | .service.id")
export SERVICE_ID=$(curl -k -s -X GET "https://$PORTAL_ENDPOINT/admin/api/services.json?access_token=$TOKEN" | jq ".services[] | select(.service.system_name | contains(\"$SYSTEM_NAME\")) | .service.id")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导入策略时需要 ID。
导入策略:
curl -k -X PUT "https://$PORTAL_ENDPOINT/admin/api/services/$SERVICE_ID/proxy/policies.json" --data "access_token=$TOKEN" --data-urlencode policies_config@policies_config.json
curl -k -X PUT "https://$PORTAL_ENDPOINT/admin/api/services/$SERVICE_ID/proxy/policies.json" --data "access_token=$TOKEN" --data-urlencode policies_config@policies_config.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
从 3scale Admin Portal,导航到
,以检查 Kafka Bridge 服务的端点和策略是否已加载。 -
导航到
以创建应用计划。 导航到
以创建应用。 需要应用才能获取用于身份验证的用户密钥。
(生产环境步骤)要让 API 可供生产网关使用,请提升配置:
3scale proxy-config promote $REMOTE_NAME $SERVICE_ID
3scale proxy-config promote $REMOTE_NAME $SERVICE_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 API 测试工具,验证您可以通过 APIcast 网关使用调用创建使用者以及为应用程序创建用户密钥来访问 Kafka 网桥。
例如:
https//my-project-my-bridge-bridge-service-3scale-apicast-staging.example.com:443/consumers/my-group?user_key=3dfc188650101010ecd7fdc56098ce95
https//my-project-my-bridge-bridge-service-3scale-apicast-staging.example.com:443/consumers/my-group?user_key=3dfc188650101010ecd7fdc56098ce95
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果从 Kafka Bridge 返回有效负载,则消费者创建成功。
{ "instance_id": "consumer1", "base uri": "https//my-project-my-bridge-bridge-service-3scale-apicast-staging.example.com:443/consumers/my-group/instances/consumer1" }
{ "instance_id": "consumer1", "base uri": "https//my-project-my-bridge-bridge-service-3scale-apicast-staging.example.com:443/consumers/my-group/instances/consumer1" }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 基础 URI 是客户端要在后续请求中使用的地址。