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"
部署 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
通过 OpenShift 控制台或 CLI 验证 3scale 已成功部署到 Openshift 集群。
例如:
oc get deployment 3scale-operator
设置 3scale toolbox。
- 使用 Operating 3scale 指南中提供的信息来安装 3scale toolbox。
设置环境变量以便与 3scale 交互:
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
配置 3scale toolbox 的远程 Web 地址:
3scale remote add $REMOTE_NAME https://$TOKEN@$PORTAL_ENDPOINT/
现在,当您每次运行 toolbox 时,不需要指定 3scale 管理门户的端点地址。
检查您的 Cluster Operator 部署是否有 3scale 发现 Kafka Bridge 服务所需的标签和注解属性。
#... env: - name: STRIMZI_CUSTOM_KAFKA_BRIDGE_SERVICE_LABELS value: | discovery.3scale.net=true - name: STRIMZI_CUSTOM_KAFKA_BRIDGE_SERVICE_ANNOTATIONS value: | discovery.3scale.net/scheme=http discovery.3scale.net/port=8080 discovery.3scale.net/path=/ discovery.3scale.net/description-path=/openapi #...
如果没有,请通过 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"
检查
主机
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
导入服务的标头修改和路由策略(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")
导入策略时需要 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
-
从 3scale Admin Portal,导航到
,以检查 Kafka Bridge 服务的端点和策略是否已加载。 -
导航到
以创建应用计划。 导航到
以创建应用。 需要应用才能获取用于身份验证的用户密钥。
(生产环境步骤)要让 API 可供生产网关使用,请提升配置:
3scale proxy-config promote $REMOTE_NAME $SERVICE_ID
使用 API 测试工具,验证您可以通过 APIcast 网关使用调用创建使用者以及为应用程序创建用户密钥来访问 Kafka 网桥。
例如:
https//my-project-my-bridge-bridge-service-3scale-apicast-staging.example.com:443/consumers/my-group?user_key=3dfc188650101010ecd7fdc56098ce95
如果从 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" }
基础 URI 是客户端要在后续请求中使用的地址。