第 2 章 为 Kafka Bridge 部署 3scale


要将 3scale 与 Kafka Bridge 搭配使用,您首先部署它,然后将其配置为发现 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 Bridge 相同的集群中部署了 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 文件。

如需更多信息,请参阅 Red Hat 3scale 文档

流程

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

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

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

      Red Hat 3scale 文档介绍了如何使用模板或 operator 在 OpenShift 上部署 3scale。

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

      记录访问 3scale 管理门户的 URLS 和凭证。

  2. 为 3scale 授予 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. 根据 Red Hat 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 toolbox 导入 OpenAPI 规格创建的 3scale 服务/API 的名称。
      3
      TENANT 是 3scale 管理门户的租户名称(即 https://$TENANT.3scale)。
      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. 在管理门户仪表板的 APIs 中,点 Create Product
    3. Import from OpenShift
    4. 选择 Kafka Bridge 服务
    5. Create Product

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

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

  7. 编辑 OpenAPI 规格(JSON 文件)中的 Host 字段,以使用 Kafka Bridge 服务的基本 URL:

    例如:

    "host": "my-bridge-bridge-service.my-project.svc.cluster.local:8080"

    检查 host URL 包括正确的:

    • Kafka Bridge 名称 (my-bridge)
    • 项目名称 (my-project)
    • Kafka Bridge 的端口 (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 管理门户,导航到 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"
    }

    Base URI 是客户端在后续请求中使用的地址。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.