第 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:
- 登录您的 OpenShift 集群的 Web 控制台。
- 创建或打开您要在其中创建集成的项目,如 my-camel-k-kafka。
- 安装 Camel K 运算符和 Camel K CLI,如 安装 Camel K 所述。
安装 AMQ 流 Operator:
- 在任何项目中,选择 Operators > OperatorHub。
- 在 Filter by Keyword 字段中,键入 AMQ Streams。
点 Red Hat Integration - AMQ Streams 卡,然后点 Install。
此时会打开 Install Operator 页面。
- 接受默认值,然后单击 Install。
- 选择 Operators > Installed Operators 来验证是否安装了 Camel K 和 AMQ Streams operator。
5.1.1.2. 使用 AMQ Streams 设置 Kafka 主题 复制链接链接已复制到粘贴板!
Kafka 主题提供在 Kafka 实例中存储数据的目的地。在将数据发送到之前,您必须设置 Kafka 主题。
前提条件
- 您可以访问 OpenShift 集群。
- 已安装 Red Hat Integration - Camel K 和 Red Hat Integration - AMQ Streams operator,如 准备 OpenShift 集群 所述。
-
已安装 OpenShift CLI (
oc
)和 Camel K CLI (kamel
)。
流程
使用 AMQ Streams 设置 Kafka 主题:
- 登录您的 OpenShift 集群的 Web 控制台。
- 选择 Projects,然后单击您在其中安装 Red Hat Integration - AMQ Streams operator 的项目。例如,点 my-camel-k-kafka 项目。
- 选择 Operators > Installed Operators,然后点 Red Hat Integration - AMQ Streams。
创建 Kafka 集群:
- 在 Kafka 下,点击 Create instance。
- 输入集群的名称,如 kafka-test。
接受其他默认值,然后单击 Create。
创建 Kafka 实例的过程可能需要几分钟时间完成。
当状态就绪时,请继续下一步。
创建 Kafka 主题:
- 选择 Operators > Installed Operators,然后点 Red Hat Integration - AMQ Streams。
- 在 Kafka 主题 下,点 Create Kafka Topic。
- 输入主题的名称,如 test-topic。
- 接受其他默认值,然后单击 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 集群交互。
流程
- 使用集群管理员帐户登录 OpenShift Web 控制台。
为您的 Camel K 或 Kamelets 应用程序创建 OpenShift 项目。
- 选择 Home > Projects。
- 点击 Create Project。
-
键入项目的名称,如
my-camel-k-kafka
,然后点 Create。
- 按照 rhoas CLI 入门中所述,下载并安装 RHOAS CLI。
- 安装 Camel K 运算符和 Camel K CLI,如 安装 Camel K 所述。
- 要验证是否已安装 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 主题:
- 在命令行中登录您的 OpenShift 集群。
打开您的项目,例如:
oc project my-camel-k-kafka
验证项目中的 Camel K 操作器是否安装了:
oc get csv
结果列出了 Red Hat Camel K operator,并指示它处于
Succeeded
阶段。准备 Kafka 实例并将其连接到 RHOAS:
使用以下命令登录到 RHOAS CLI:
RHOAS 登录
创建 kafka 实例,如 kafka-test :
rhoas kafka create kafka-test
创建 Kafka 实例的过程可能需要几分钟时间完成。
检查 Kafka 实例的状态:
rhoas status
您还可以在 web 控制台中查看状态:
https://cloud.redhat.com/application-services/streams/kafkas/
当状态 就绪时,请继续下一步。
创建一个新的 Kafka 主题:
rhoas kafka topic create --name test-topic
将 Kafka 实例(集群)连接到 Openshift Application Services 实例:
RHOAS 集群连接
按照获取凭证令牌的脚本说明。
您应该看到类似如下的输出:
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.
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.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
5.1.2.3. 获取 Kafka 凭证 复制链接链接已复制到粘贴板!
要将应用程序或服务连接到 Kafka 实例,您必须首先获取以下 Kafka 凭证:
- 获取 bootstrap URL。
- 使用凭证(用户名和密码)创建服务帐户。
对于 OpenShift Streams,身份验证协议是 SASL_SSL。
前提条件
- 您已创建了 Kafka 实例,它有一个 ready 状态。
- 您已创建了 Kafka 主题。
流程
获取 Kafka Broker URL (Bootstrap URL):
rhoas status
这个命令返回类似如下的输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要获取用户名和密码,请使用以下语法创建服务帐户:
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 文件中。
要验证您的服务帐户凭证,请查看
credentials.json
文件:cat credentials.json
这个命令返回类似如下的输出:
{"clientID":"srvc-acct-eb575691-b94a-41f1-ab97-50ade0cd1094", "password":"facf3df1-3c8d-4253-aa87-8c95ca5e1225"}
{"clientID":"srvc-acct-eb575691-b94a-41f1-ab97-50ade0cd1094", "password":"facf3df1-3c8d-4253-aa87-8c95ca5e1225"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 授予从 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 $CLIENT_ID --topic test-topic --group all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
rhoas kafka acl grant-access --producer --consumer --service-account srvc-acct-eb575691-b94a-41f1-ab97-50ade0cd1094 --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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.2.4. 使用 SASL/Plain 身份验证方法创建 secret 复制链接链接已复制到粘贴板!
您可以使用您获取的凭证创建 secret (Kafka bootstrap URL、服务帐户 ID 和服务帐户 secret)。
流程
编辑
application.properties
文件并添加 Kafka 凭证。application.properties 文件
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在
application.properties
文件中创建一个包含敏感属性的 secret:oc create secret generic kafka-props --from-file application.properties
oc create secret generic kafka-props --from-file application.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在运行 Camel K 集成时,您可以使用此 secret。
另请参阅
5.1.2.5. 使用 SASL/OAUTHBearer 验证方法创建 secret 复制链接链接已复制到粘贴板!
您可以使用您获取的凭证创建 secret (Kafka bootstrap URL、服务帐户 ID 和服务帐户 secret)。
流程
编辑
application-oauth.properties
文件并添加 Kafka 凭证。application-oauth.properties 文件
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在
application.properties
文件中创建一个包含敏感属性的 secret:oc create secret generic kafka-props --from-file application-oauth.properties
oc create secret generic kafka-props --from-file application-oauth.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在运行 Camel K 集成时,您可以使用此 secret。
另请参阅