第 5 章 对 Kafka 的 Camel K 进行身份验证


您可以针对 Apache Kafka 验证 Camel K。

本例演示了如何使用 Red Hat OpenShift Streams for Apache Kafka 设置 Kafka 主题,并在简单的 Producer/Consumer 模式集成中使用它。

5.1. 设置 Kafka

设置 Kafka 涉及安装所需的 OpenShift operator、创建 Kafka 实例并创建 Kafka 主题。

使用这些红帽产品之一设置 Kafka:

  • Red Hat Advanced Message Queue (AMQ)流 - 自我管理的 Apache Kafka 产品。AMQ Streams 基于开源 Strimzi,并包含在 Red Hat Integration 中。AMQ Streams 是一个基于 Apache Kafka 的分布式可扩展流平台,其中包括一个发布/订阅消息传递代理。Kafka Connect 提供了一个框架,可将基于 Kafka 的系统与外部系统集成。使用 Kafka Connect,您可以配置 source 和 sink 连接器,将外部系统中的数据流传输到 Kafka 代理中。
  • Red Hat OpenShift Streams for Apache Kafka - 一个托管的云服务简化了运行 Apache Kafka 的过程。它为构建、部署和扩展新的云原生应用程序或现代化现有系统提供了简化的开发人员体验。

5.1.1. 使用 AMQ 流设置 Kafka

AMQ Streams 简化了在 OpenShift 集群中运行 Apache Kafka 的过程。

5.1.1.1. 为 AMQ Streams 准备 OpenShift 集群

要使用 Camel K 或 Kamelets 和 Red Hat AMQ Streams,您必须安装以下 operator 和工具:

  • Red Hat Integration - AMQ Streams operator - 管理 Openshift Cluster and AMQ Streams for Apache Kafka 实例之间的通信。
  • Red Hat Integration - Camel K operator - 安装和管理 Camel K - 一个轻量级集成框架,可在 OpenShift 中云端运行。
  • Camel K CLI 工具 - 允许您访问所有 Camel K 功能。

前提条件

  • 熟悉 Apache Kafka 概念。
  • 您可以使用正确的访问级别访问 OpenShift 4.6 (或更新版本)集群、创建项目和安装操作器,以及在本地系统上安装 OpenShift 和 Camel K CLI 的功能。
  • 已安装 OpenShift CLI 工具(oc),以便您可以在命令行中与 OpenShift 集群交互。

流程

使用 AMQ Streams 设置 Kafka:

  1. 登录您的 OpenShift 集群的 Web 控制台。
  2. 创建或打开您要在其中创建集成的项目,如 my-camel-k-kafka
  3. 安装 Camel K 运算符和 Camel K CLI,如 安装 Camel K 所述。
  4. 安装 AMQ 流 Operator:

    1. 在任何项目中,选择 Operators > OperatorHub
    2. Filter by Keyword 字段中,键入 AMQ Streams
    3. Red Hat Integration - AMQ Streams 卡,然后点 Install

      此时会打开 Install Operator 页面。

    4. 接受默认值,然后单击 Install
  5. 选择 Operators > Installed Operators 来验证是否安装了 Camel K 和 AMQ Streams operator。

5.1.1.2. 使用 AMQ Streams 设置 Kafka 主题

Kafka 主题提供在 Kafka 实例中存储数据的目的地。在将数据发送到之前,您必须设置 Kafka 主题。

前提条件

  • 您可以访问 OpenShift 集群。
  • 已安装 Red Hat Integration - Camel KRed Hat Integration - AMQ Streams operator,如 准备 OpenShift 集群 所述。
  • 已安装 OpenShift CLI (oc)和 Camel K CLI (kamel)。

流程

使用 AMQ Streams 设置 Kafka 主题:

  1. 登录您的 OpenShift 集群的 Web 控制台。
  2. 选择 Projects,然后单击您在其中安装 Red Hat Integration - AMQ Streams operator 的项目。例如,点 my-camel-k-kafka 项目。
  3. 选择 Operators > Installed Operators,然后点 Red Hat Integration - AMQ Streams
  4. 创建 Kafka 集群:

    1. Kafka 下,点击 Create instance
    2. 输入集群的名称,如 kafka-test
    3. 接受其他默认值,然后单击 Create

      创建 Kafka 实例的过程可能需要几分钟时间完成。

      当状态就绪时,请继续下一步。

  5. 创建 Kafka 主题:

    1. 选择 Operators > Installed Operators,然后点 Red Hat Integration - AMQ Streams
    2. Kafka 主题 下,点 Create Kafka Topic
    3. 输入主题的名称,如 test-topic
    4. 接受其他默认值,然后单击 Create

5.1.2. 使用 OpenShift 流设置 Kafka

Red Hat OpenShift Streams for Apache Kafka 是一个受管云服务,简化了运行 Apache Kafka 的过程。

要将 OpenShift Streams 用于 Apache Kafka,您必须登录到您的红帽帐户。

5.1.2.1. 为 OpenShift Streams 准备 OpenShift 集群

要使用 Red Hat OpenShift Streams for Apache Kafka 管理的云服务,您必须安装以下 operator 和工具:

  • OpenShift Application Services (RHOAS) CLI - 允许您从终端管理应用程序服务。
  • Red Hat Integration - Camel K operator Installs 并管理 Camel K - 一个轻量级集成框架,可在 OpenShift 中云端运行。
  • Camel K CLI 工具 - 允许您访问所有 Camel K 功能。

前提条件

  • 熟悉 Apache Kafka 概念。
  • 您可以使用正确的访问级别访问 OpenShift 4.6 (或更新版本)集群、创建项目和安装操作器,以及在本地系统上安装 OpenShift 和 Apache Camel K CLI 的功能。
  • 已安装 OpenShift CLI 工具(oc),以便您可以在命令行中与 OpenShift 集群交互。

流程

  1. 使用集群管理员帐户登录 OpenShift Web 控制台。
  2. 为您的 Camel K 或 Kamelets 应用程序创建 OpenShift 项目。

    1. 选择 Home > Projects
    2. 点击 Create Project
    3. 键入项目的名称,如 my-camel-k-kafka,然后点 Create
  3. 按照 rhoas CLI 入门中所述,下载并安装 RHOAS CLI
  4. 安装 Camel K 运算符和 Camel K CLI,如 安装 Camel K 所述。
  5. 要验证是否已安装 Red Hat Integration - Camel K operator,点 Operators > Installed Operators

5.1.2.2. 使用 RHOAS 设置 Kafka 主题

Kafka 围绕 主题 组织信息。每个主题都有一个名称。应用向主题发送消息并从主题检索信息。Kafka 主题提供在 Kafka 实例中存储数据的目的地。在将数据发送到之前,您必须设置 Kafka 主题。

前提条件

  • 您可以使用正确的访问级别访问 OpenShift 集群,创建项目和安装操作器,以及在本地系统上安装 OpenShift 和 Camel K CLI 的功能。
  • 已安装 OpenShift CLI (oc)、Camel CLI (kamel)和 RHOAS CLI (rhoas)工具,如 准备 OpenShift 集群 中所述。
  • 您安装了 Red Hat Integration - Camel K operator,如 准备 OpenShift 集群 中所述。
  • 登录到 红帽云站点

流程

使用 Red Hat OpenShift Streams for Apache Kafka 设置 Kafka 主题:

  1. 在命令行中登录您的 OpenShift 集群。
  2. 打开您的项目,例如:

    oc project my-camel-k-kafka

  3. 验证项目中的 Camel K 操作器是否安装了:

    oc get csv

    结果列出了 Red Hat Camel K operator,并指示它处于 Succeeded 阶段。

  4. 准备 Kafka 实例并将其连接到 RHOAS:

    1. 使用以下命令登录到 RHOAS CLI:

      RHOAS 登录

    2. 创建 kafka 实例,如 kafka-test

      rhoas kafka create kafka-test

      创建 Kafka 实例的过程可能需要几分钟时间完成。

  5. 检查 Kafka 实例的状态:

    RHOAS 状态

    您还可以在 web 控制台中查看状态:

    https://cloud.redhat.com/application-services/streams/kafkas/

    当状态 就绪时,请继续下一步。

  6. 创建一个新的 Kafka 主题:

    rhoas kafka topic create --name test-topic

  7. 将 Kafka 实例(集群)连接到 Openshift Application Services 实例:

    RHOAS 集群连接

  8. 按照获取凭证令牌的脚本说明。

    您应该看到类似如下的输出:

    Token Secret "rh-cloud-services-accesstoken-cli" created successfully
    Service Account Secret "rh-cloud-services-service-account" created successfully
    KafkaConnection resource "kafka-test" has been created
    KafkaConnection successfully installed on your cluster.

后续步骤

5.1.2.3. 获取 Kafka 凭证

要将应用程序或服务连接到 Kafka 实例,您必须首先获取以下 Kafka 凭证:

  • 获取 bootstrap URL。
  • 使用凭证(用户名和密码)创建服务帐户。

对于 OpenShift Streams,身份验证协议是 SASL_SSL。

前提条件

  • 您已创建了 Kafka 实例,它有一个 ready 状态。
  • 您已创建了 Kafka 主题。

流程

  1. 获取 Kafka Broker URL (Bootstrap URL):

    RHOAS 状态

    这个命令返回类似如下的输出:

      Kafka
      ---------------------------------------------------------------
      ID:                     1ptdfZRHmLKwqW6A3YKM2MawgDh
      Name:                   my-kafka
      Status:                 ready
      Bootstrap URL:        my-kafka--ptdfzrhmlkwqw-a-ykm-mawgdh.kafka.devshift.org:443
  2. 要获取用户名和密码,请使用以下语法创建服务帐户:

    rhoas service-account create --name "<account-name>" --file-format json

    注意

    在创建服务帐户时,您可以选择文件格式和位置来保存凭据。如需更多信息,请输入 rhoas service-account create --help

    例如:

    rhoas service-account create --name "my-service-acct" --file-format json

    该服务帐户已创建并保存到 JSON 文件中。

  3. 要验证您的服务帐户凭证,请查看 credentials.json 文件:

    cat credentials.json

    这个命令返回类似如下的输出:

    {"clientID":"srvc-acct-eb575691-b94a-41f1-ab97-50ade0cd1094", "password":"facf3df1-3c8d-4253-aa87-8c95ca5e1225"}
  4. 授予从 Kakfa 主题发送和接收消息的权限。使用以下命令,clientID 是 credentials.json 文件(第 3 步中)中提供的值。

    rhoas kafka acl grant-access --producer --consumer --service-account $CLIENT_ID --topic test-topic --group all

    例如:

    rhoas kafka acl grant-access --producer --consumer --service-account srvc-acct-eb575691-b94a-41f1-ab97-50ade0cd1094 --topic test-topic --group all

5.1.2.4. 使用 SASL/Plain 身份验证方法创建 secret

您可以使用您获取的凭证创建 secret (Kafka bootstrap URL、服务帐户 ID 和服务帐户 secret)。

流程

  1. 编辑 application.properties 文件并添加 Kafka 凭证。

    application.properties 文件

    camel.component.kafka.brokers = <YOUR-KAFKA-BOOTSTRAP-URL-HERE>
    camel.component.kafka.security-protocol = SASL_SSL
    camel.component.kafka.sasl-mechanism = PLAIN
    camel.component.kafka.sasl-jaas-config=org.apache.kafka.common.security.plain.PlainLoginModule required username='<YOUR-SERVICE-ACCOUNT-ID-HERE>' password='<YOUR-SERVICE-ACCOUNT-SECRET-HERE>';
    consumer.topic=<TOPIC-NAME>
    producer.topic=<TOPIC-NAME>

  2. 运行以下命令,在 application.properties 文件中创建一个包含敏感属性的 secret:

    oc create secret generic kafka-props --from-file application.properties

    在运行 Camel K 集成时,您可以使用此 secret。

5.1.2.5. 使用 SASL/OAUTHBearer 验证方法创建 secret

您可以使用您获取的凭证创建 secret (Kafka bootstrap URL、服务帐户 ID 和服务帐户 secret)。

流程

  1. 编辑 application-oauth.properties 文件并添加 Kafka 凭证。

    application-oauth.properties file

    camel.component.kafka.brokers = <YOUR-KAFKA-BOOTSTRAP-URL-HERE>
    camel.component.kafka.security-protocol = SASL_SSL
    camel.component.kafka.sasl-mechanism = OAUTHBEARER
    camel.component.kafka.sasl-jaas-config = org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required \
    oauth.client.id='<YOUR-SERVICE-ACCOUNT-ID-HERE>' \
    oauth.client.secret='<YOUR-SERVICE-ACCOUNT-SECRET-HERE>' \
    oauth.token.endpoint.uri="https://identity.api.openshift.com/auth/realms/rhoas/protocol/openid-connect/token" ;
    camel.component.kafka.additional-properties[sasl.login.callback.handler.class]=io.strimzi.kafka.oauth.client.JaasClientOauthLoginCallbackHandler
    
    consumer.topic=<TOPIC-NAME>
    producer.topic=<TOPIC-NAME>

  2. 运行以下命令,在 application.properties 文件中创建一个包含敏感属性的 secret:

    oc create secret generic kafka-props --from-file application-oauth.properties

    在运行 Camel K 集成时,您可以使用此 secret。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.