搜索

第 2 章 为 Kafka Bridge 部署 3scale

download PDF

要将 3scale 与 Kafka Bridge 搭配使用,您首先部署它,然后将其配置为发现 Kafka Bridge API。

在这种情况下,Apache Kafka、Kafka、Kafka Bridge 和 3scale API 管理组件的 Streams 在相同的 OpenShift 集群中运行。

以下 3scale 组件可帮助发现 Kafka Bridge:

  • 3scale APIcast 为 HTTP 客户端提供基于 NGINX 的 API 网关,以连接到 Kafka Bridge API 服务。
  • 3scale toolbox 用于将 Kafka Bridge 服务的 OpenAPI 规格导入到 3scale。
注意

如果 3scale 已部署到与 Kafka Bridge 相同的集群中,您可以跳过部署步骤并使用您的当前部署。

先决条件

对于 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 管理,如 Red Hat 3scale 文档 中所述。

    1. 使用 3scale API 管理操作器安装 3scale API Manager 和 APIcast。

      在部署 API Manager 前,将 API Manager 自定义资源的 wildcardDomain 属性更新为托管 OpenShift 集群的域。

      域在 URL 中使用用于访问 3scale 管理门户(http[s]://<authentication_token>@3scale-admin.<cluster_domain&gt;)。

    2. 通过检查 API Manager 自定义资源的状态,验证 3scale 是否已成功部署。
  2. 为 3scale API Manager 授予 3scale API Manager 授权来发现 Kafka Bridge 服务:

    oc adm policy add-cluster-role-to-user view system:serviceaccount:<my_bridge_namespace>:amp

    该命令向指定命名空间中的 Kafka Bridge 资源(<my_bridge_namespace>)授予 API Manager (amp)读取访问权限(查看)。

  3. 设置 3scale API 管理 toolbox。

    1. 按照 Red Hat 3scale 文档所述安装 3scale toolbox。
    2. 设置环境变量以便与 3scale 交互:

      Kafka Bridge 配置示例

      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_authentication_token> 5

      1
      REMOTE_NAME 是分配给 3scale 管理门户的远程地址的名称。
      2
      SYSTEM_NAME 是通过 3scale toolbox 导入 OpenAPI 规格创建的 3scale 服务/API 的名称。
      3
      TENANT 是 3scale 管理门户的租户名称(https://$TENANT.3scale.net)。
      4
      PORTAL_ENDPOINT 是运行 3scale 管理门户的端点。
      5
      TOKEN 是 3scale 管理门户提供的身份验证令牌,用于通过 3scale toolbox 或 HTTP 请求进行交互。
    3. 配置 3scale toolbox 的远程 web 地址:

      podman run -v /path/to/openapiv2.json:/tmp/oas/openapiv2.json registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.14 3scale import openapi -d <admin_portal_url> /tmp/oas/openapiv2.json

      为 3scale toolbox 指定容器镜像。3scale 的容器镜像在 红帽生态系统目录 中提供。

      <admin_portal_url > 替换为 3scale 管理门户端点的路径(https://$TOKEN@$PORTAL_ENDPOINT/)。现在,每次运行 toolbox 时不需要指定 3scale 管理门户的端点地址。

  4. 检查您的 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

  5. 在 3scale 管理门户中,从 OpenShift 导入 Kafka Bridge API 服务,如 Red Hat 3scale 文档所述
  6. 编辑 OpenAPI 规格(JSON 文件)中的 Host 字段,以使用 Kafka Bridge 服务的基本 URL:

    例如:

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

    检查主机 URL 包括以下内容:

    • Kafka Bridge name (my-bridge)
    • 项目名称(my-project)
    • Kafka Bridge 的端口(8080)
  7. 从本地文件将更新的 OpenAPI 规格导入到 3scale toolbox:

    podman run -v /path/to/openapiv2.json:/tmp/oas/openapiv2.json registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.14 3scale import openapi [opts] -d=<admin_portal_url> -t 3scale-kafka-bridge /tmp/oas/openapiv2.json

    在这里,我们将系统名称指定为 3scale-kafka-bridge,而不是从 OpenAPI 规格生成名称。将 /path/to/openapiv2.json 替换为 OpenAPI 规格文件的路径,将 <admin_portal_url > 替换为 3scale 管理门户的端点的路径。

  8. 为服务导入标头修改和路由策略 (JSON 文件)。

    1. 找到您在 3scale 中创建的服务的 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")

      在这里,我们在请求中使用 jq 命令行 JSON 解析器工具

    2. 导入策略:

      3scale policies import -f /path/to/policies_config.json -d=<admin_portal_url> 3scale-kafka-bridge

      /path/to/policies_config.json 替换为策略配置文件的路径,将 & lt;admin_portal_url > 替换为 3scale 管理门户的端点的路径。

  9. 在 3scale 管理门户中,检查 Kafka Bridge 服务的端点和策略是否已加载。
  10. 在 3scale Toolbox 中创建应用程序计划和应用程序。

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

  11. (生产环境步骤)要在生产环境的网关中使用 API,请提升配置:

    3scale proxy-config promote $REMOTE_NAME $SERVICE_ID
  12. 使用 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.