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 文件。

流程

  1. 将 3scale API 管理部署到 OpenShift 集群。

    1. 创建新项目或使用现有的项目。

      oc new-project my-project \
          --description="description" --display-name="display_name"
    2. 部署 3scale.

      使用 安装 3scale 指南中提供的信息,通过模板或操作器在 OpenShift 中部署 3scale。

      无论您使用哪一种方法,请确保您将 WILDCARD_DOMAIN 参数设置为 OpenShift 集群的域。

      记录用于访问 3scale 管理门户的 URLS 和凭据。

  2. 为 3scale 授予发现 Kafka Bridge 服务的授权:

    oc adm policy add-cluster-role-to-user view system:serviceaccount:my-project:amp
  3. 通过 OpenShift 控制台或 CLI 验证 3scale 已成功部署到 Openshift 集群。

    例如:

    oc get deployment 3scale-operator
  4. 设置 3scale toolbox。

    1. 使用 Operating 3scale 指南中提供的信息来安装 3scale toolbox。
    2. 设置环境变量以便与 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
      1
      REMOTE_NAME 是分配给 3scale 管理门户的远程地址的名称。
      2
      SYSTEM_NAME 是 3scale 服务/API 的名称,通过 3scale toolbox 导入 OpenAPI 规格。
      3
      TENANT 是 3scale 管理门户的租户名称(即 https://$TENANT.3scale.net)。
      4
      PORTAL_ENDPOINT 是运行 3scale 管理门户的端点。
      5
      TOKEN 是 3scale 管理门户提供的访问令牌,用于通过 3scale toolbox 或 HTTP 请求进行交互。
    3. 配置 3scale toolbox 的远程 Web 地址:

      3scale remote add $REMOTE_NAME https://$TOKEN@$PORTAL_ENDPOINT/

      现在,当您每次运行 toolbox 时,不需要指定 3scale 管理门户的端点地址。

  5. 检查您的 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 OperatorKafka Bridge

  6. 通过 3scale 发现 Kafka Bridge API 服务。

    1. 使用部署 3scale 时提供的凭据,登录 3scale 管理门户。
    2. 从 3scale 管理门户,导航到 OpenShift中的 New API Import,其中您将看到 Kafka Bridge 服务。
    3. Create Service

      您可能需要刷新页面来查看 Kafka Bridge 服务。

      现在,您需要导入该服务的配置。从编辑器执行此操作,但请保持门户打开以检查导入是否成功。

  7. 编辑 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)
  8. 使用 3scale toolbox 导入更新的 OpenAPI 规格:

    3scale import openapi -k -d $REMOTE_NAME openapiv2.json -t myproject-my-bridge-bridge-service
  9. 导入服务的标头修改和路由策略(JSON 文件)。

    1. 查找您在 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。

    2. 导入策略:

      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
  10. 从 3scale Admin Portal,导航到 Integration Configuration,以检查 Kafka Bridge 服务的端点和策略是否已加载。
  11. 导航到 Applications Create Application Plan 以创建应用计划。
  12. 导航到 Audience Developer Applications Create Application 以创建应用。

    需要应用才能获取用于身份验证的用户密钥。

  13. (生产环境步骤)要让 API 可供生产网关使用,请提升配置:

    3scale proxy-config promote $REMOTE_NAME $SERVICE_ID
  14. 使用 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 是客户端要在后续请求中使用的地址。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.