1.2. Apache Kafka operator 的流
Apache Kafka operator 的流专门构建有专家操作知识,以便在 OpenShift 上有效地管理 Kafka。每个操作器都执行不同的功能。
- Cluster Operator
- Cluster Operator 在 OpenShift 上处理 Apache Kafka 集群的部署和管理。它自动设置 Kafka 代理和其他 Kafka 组件和资源。
- Topic Operator
- 主题 Operator 管理 Kafka 集群中的创建、配置和删除主题。
- User Operator
- User Operator 管理需要访问 Kafka 代理的 Kafka 用户。
当您为 Apache Kafka 部署流时,您首先部署 Cluster Operator。然后,Cluster Operator 已准备好处理 Kafka 的部署。您还可以使用 Cluster Operator (推荐)或独立 Operator 部署 Topic Operator 和 User Operator。您可以将独立 Operator 与不是由 Cluster Operator 管理的 Kafka 集群一起使用。
主题 Operator 和 User Operator 是实体 Operator 的一部分。Cluster Operator 可以基于 Entity Operator 配置部署一个或多个 Operator。
要部署独立 Operator,您需要设置环境变量以连接到 Kafka 集群。如果您使用 Cluster Operator 部署 Operator,则不需要设置这些环境变量,因为它们将由 Cluster Operator 设置。
1.2.1. 在 OpenShift 命名空间中监视 Apache Kafka 资源的流 复制链接链接已复制到粘贴板!
Operator 会监视和管理 OpenShift 命名空间中的 Apache Kafka 资源的流。Cluster Operator 可以监控 OpenShift 集群中的单个命名空间、多个命名空间或所有命名空间。主题 Operator 和用户 Operator 可以监视单个命名空间。
-
Cluster Operator 监视
Kafka资源 -
主题 Operator 监视
KafkaTopic资源 -
User Operator 监视
KafkaUser资源
主题 Operator 和 User Operator 只能监视命名空间中的单个 Kafka 集群。它们只能连接到单个 Kafka 集群。
如果多个主题 Operator 监控同一命名空间,则可能会出现名称冲突和主题删除。这是因为每个 Kafka 集群都使用名称相同的 Kafka 主题(如 __consumer_offsets)。请确定只有一个主题 Operator 会监视给定的命名空间。
当将多个用户 Operator 与单个命名空间一起使用时,带有给定用户名的用户可在多个 Kafka 集群中存在。
如果您使用 Cluster Operator 部署 Topic Operator 和 User Operator,它们会默认监控 Cluster Operator 部署的 Kafka 集群。您还可以使用 operator 配置中的 watchedNamespace 指定命名空间。
对于每个 Operator 的独立部署,您可以指定一个命名空间和与 Kafka 集群的连接,以便在配置中监视。
1.2.2. 管理 RBAC 资源 复制链接链接已复制到粘贴板!
Cluster Operator 为需要访问 OpenShift 资源的 Apache Kafka 组件创建和管理基于角色的访问控制(RBAC)资源。
要使 Cluster Operator 正常工作,OpenShift 集群中需要权限与 Kafka 资源交互,如 Kafka 和 KafkaConnect,以及 ConfigMap、Pod、Deployment 和 Service 等受管资源。
通过以下 OpenShift RBAC 资源指定权限:
-
ServiceAccount -
Role和ClusterRole -
RoleBinding和ClusterRoleBinding
1.2.2.1. 为 Apache Kafka 组件委派权限到流 复制链接链接已复制到粘贴板!
Cluster Operator 在名为 strimzi-cluster-operator 的服务帐户下运行,它被分配集群角色来为 Apache Kafka 组件创建流所需的 RBAC 资源。角色绑定将集群角色与服务帐户关联。
OpenShift 强制执行 特权升级 会阻止,这意味着 Cluster Operator 无法授予其没有特权,也不能在其无法访问的命名空间中授予此类特权。因此,Cluster Operator 必须具有它编配的所有组件所需的权限。
Cluster Operator 必须能够执行以下操作:
-
通过在相关命名空间中创建
Role和RoleBinding资源,启用 Topic Operator 来管理KafkaTopic资源。 -
通过在相关命名空间中创建
Role和RoleBinding资源,使 User Operator 能够管理KafkaUser资源。 -
通过创建
ClusterRoleBinding来允许 Streams for Apache Kafka 发现节点的故障域。
使用机架感知分区分配时,代理 pod 需要访问运行它们的节点的信息,如 Amazon AWS 中的 Availability Zone。由于 节点是 集群范围的资源,必须通过 ClusterRoleBinding 而非命名空间范围的 RoleBinding 授予权限。
以下小节描述了 Cluster Operator 所需的 RBAC 资源。
1.2.2.2. ClusterRole 资源 复制链接链接已复制到粘贴板!
Cluster Operator 使用 ClusterRole 资源来提供资源所需的访问权限。根据 OpenShift 集群设置,可能需要集群管理员来创建集群角色。
只有创建 ClusterRole 资源时才需要集群管理员权限。Cluster Operator 不会在集群管理员帐户下运行。
RBAC 资源遵循 最小特权原则,仅包含 Cluster Operator 运行 Kafka 组件集群所需的权限。
Cluster Operator 需要所有集群角色才能委派权限。
| Name | 描述 |
|---|---|
|
| Cluster Operator 用来部署和管理操作对象的命名空间范围的资源的访问权限。 |
|
| Cluster Operator 用来部署和管理操作对象的资源的访问权限。 |
|
| Cluster Operator 用来进行领导选举机制的访问权限。 |
|
| Cluster Operator 用来监控和管理 Apache Kafka 自定义资源的 Streams 的访问权限。 |
|
| 在使用机架感知时,访问允许 Kafka 代理从 OpenShift worker 节点获取拓扑标签的权限。 |
|
| 主题和用户 Operator 使用的访问权限来管理 Kafka 用户和主题。 |
|
| 在使用机架感知时,访问允许 Kafka Connect、MirrorMaker (1 和 2)和 Kafka Bridge 的权限,以从 OpenShift worker 节点获取拓扑标签。 |
1.2.2.3. ClusterRoleBinding 资源 复制链接链接已复制到粘贴板!
Cluster Operator 使用 ClusterRoleBinding 和 RoleBinding 资源将其 ClusterRole 与 ServiceAccount 关联。包含集群范围资源的集群角色需要集群角色绑定。
| Name | 描述 |
|---|---|
|
|
为 Cluster Operator 授予来自 |
|
|
为 Cluster Operator 授予 |
|
|
授予 Cluster Operator 来自 |
| Name | 描述 |
|---|---|
|
|
为 Cluster Operator 授予来自 |
|
|
为 Cluster Operator 授予来自 |
|
|
为 Cluster Operator 授予 |
|
|
为 Cluster Operator 授予 |
1.2.2.4. ServiceAccount 资源 复制链接链接已复制到粘贴板!
Cluster Operator 使用 strimzi-cluster-operator ServiceAccount 运行。此服务帐户授予其管理操作对象所需的权限。Cluster Operator 创建额外的 ClusterRoleBinding 和 RoleBinding 资源,以将其中一些 RBAC 权限委派给操作对象。
每个操作对象都使用 Cluster Operator 创建自己的服务帐户。这允许 Cluster Operator 遵循最小特权原则,并只授予操作对象只包括实际需要的访问权限。
| 名称 | 使用者 |
|---|---|
|
| ZooKeeper pod |
|
| Kafka 代理 pod |
|
| Entity Operator |
|
| Cruise Control pod |
|
| Kafka Exporter pod |
|
| Kafka Connect pod |
|
| MirrorMaker Pod |
|
| MirrorMaker 2 pod |
|
| Kafka Bridge pod |
1.2.3. 管理 pod 资源 复制链接链接已复制到粘贴板!
StrimziPodSet 自定义资源供 Apache Kafka 用于创建和管理 Kafka、Kafka Connect 和 MirrorMaker 2 pod。如果使用 ZooKeeper,则也会使用 StrimziPodSet 资源创建和管理 ZooKeeper pod。
您不能创建、更新或删除 StrimziPodSet 资源。StrimziPodSet 自定义资源在内部使用,资源由 Cluster Operator 单独管理。因此,Cluster Operator 必须正确运行,以避免 pod 无法启动,并且 Kafka 集群不可用。
OpenShift Deployment 资源用于创建和管理其他组件的 pod:Kafka Bridge、Kafka Exporter、Cruise Control,(已弃用) MirrorMaker 1、User Operator 和 Topic Operator。