7.2. 部署 Cluster Operator
任何 Apache Kafka 部署 Streams 的第一步是安装 Cluster Operator,该 Operator 负责在 OpenShift 集群中部署和管理 Kafka 集群。单个命令应用 install/cluster-operator 文件夹中的所有安装文件: oc apply -f ./install/cluster-operator。
该命令设置您能够创建和管理 Kafka 部署所需的所有内容,包括以下资源:
-
Cluster Operator (
部署、ConfigMap) -
Apache Kafka CRD 的流(
CustomResourceDefinition) -
RBAC 资源(
ClusterRole、ClusterRoleBinding、RoleBinding) -
服务帐户(
ServiceAccount)
集群范围的资源,如 CustomResourceDefinition、ClusterRole 和 ClusterRoleBinding 需要管理员特权进行安装。在安装前,建议查看 ClusterRole 规格,以确保它们不授予不必要的特权。
安装后,Cluster Operator 会作为常规 Deployment 运行,以监视 Kafka 资源的更新。任何具有访问 Deployment 权限的 OpenShift 用户的任何标准(非 admin)OpenShift 用户可以进行配置。集群管理员还可为标准用户授予 管理 Apache Kafka 自定义资源流所需的权限。
默认情况下,会部署 Cluster Operator 的单个副本。您可以使用领导选举机制添加副本,以便在出现问题时有其他 Cluster Operator 处于待机状态。如需更多信息,请参阅 第 9.6.4 节 “使用领导选举机制运行多个 Cluster Operator 副本”。
7.2.1. 指定 Cluster Operator 监视的命名空间 复制链接链接已复制到粘贴板!
Cluster Operator 监视部署了 Kafka 资源的命名空间中是否有更新。部署 Cluster Operator 时,您可以指定要在 OpenShift 集群中监视的命名空间。您可以指定以下命名空间:
- 单个所选命名空间 (包含 Cluster Operator 的同一命名空间)
- 多个所选命名空间
- 集群中的所有命名空间
监视多个所选命名空间会因为增加处理开销而对性能有影响。要优化命名空间监控的性能,通常建议监视单个命名空间或监控整个集群。监控单个命名空间允许集中监控特定于命名空间的资源,而监控所有命名空间则提供所有命名空间中集群资源的全面视图。
Cluster Operator 会监视以下资源的更改:
-
Kafka集群的 Kafka。 -
Kafka Connect 集群的
KafkaConnect。 -
在 Kafka Connect 集群中创建和管理连接器的
KafkaConnector。 -
Kafka MirrorMaker实例的 KafkaMirrorMaker。 -
Kafka MirrorMaker 2 实例的
KafkaMirrorMaker2。 -
KafkaBridge用于 Kafka Bridge 实例。 -
Cruise Control 优化请求的
KafkaRebalance。
当在 OpenShift 集群中创建其中一个资源时,Operator 会从资源获取集群描述,并通过创建必要的 OpenShift 资源(如 Deployments、Pod、服务和 ConfigMap)开始为资源创建新集群。
每次更新 Kafka 资源时,Operator 会在为资源组成集群的 OpenShift 资源上执行对应的更新。
资源可以被修补或删除,然后重新创建资源以便使集群反映集群的所需状态。此操作可能会导致滚动更新导致服务中断。
删除资源时,操作器会取消部署集群并删除所有相关 OpenShift 资源。
虽然 Cluster Operator 可以监控 OpenShift 集群中的一个、多个或所有命名空间,但主题 Operator 和 User Operator 会监视单个命名空间中的 KafkaTopic 和 KafkaUser 资源。如需更多信息,请参阅 第 1.2.1 节 “在 OpenShift 命名空间中监视 Apache Kafka 资源的流”。
7.2.2. 部署 Cluster Operator 以观察单个命名空间 复制链接链接已复制到粘贴板!
此流程演示了如何部署 Cluster Operator,以观察 OpenShift 集群中单个命名空间中的 Apache Kafka 资源的 Streams。
先决条件
-
您需要具有创建和管理
CustomResourceDefinition和 RBAC (ClusterRole、RoleBinding和 RoleBinding )资源的权限的帐户。
流程
编辑 Apache Kafka 安装文件的 Streams,以使用 Cluster Operator 将安装到的命名空间。
例如,在这个流程中,Cluster Operator 已安装到命名空间
my-cluster-operator-namespace中。在 Linux 中,使用:
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 MacOS,使用:
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 Cluster Operator:
oc create -f install/cluster-operator -n my-cluster-operator-namespace
oc create -f install/cluster-operator -n my-cluster-operator-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查部署的状态:
oc get deployments -n my-cluster-operator-namespace
oc get deployments -n my-cluster-operator-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示部署名称和就绪
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 1/1 1 1
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 1/1 1 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow READY显示就绪/预期的副本数。当AVAILABLE输出显示为1时,部署成功。
7.2.3. 部署 Cluster Operator 以观察多个命名空间 复制链接链接已复制到粘贴板!
此流程演示了如何部署 Cluster Operator,以观察 OpenShift 集群中多个命名空间中的 Apache Kafka 资源的流。
先决条件
-
您需要具有创建和管理
CustomResourceDefinition和 RBAC (ClusterRole、RoleBinding和 RoleBinding )资源的权限的帐户。
流程
编辑 Apache Kafka 安装文件的 Streams,以使用 Cluster Operator 将安装到的命名空间。
例如,在这个流程中,Cluster Operator 已安装到命名空间
my-cluster-operator-namespace中。在 Linux 中,使用:
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 MacOS,使用:
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml文件,以添加 Cluster Operator 将监视到STRIMZI_NAMESPACE环境变量的所有命名空间的列表。例如,在这个流程中,Cluster Operator 将监视
watched-namespace-1,watched-namespace-2,watched-namespace-3。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于列出的每个命名空间,安装
RoleBindings。在本例中,我们将这些命令中的
watched-namespace替换为上一步中列出的命名空间,为watched-namespace-1,watched-namespace-2,watched-namespace-3重复它们:oc create -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n <watched_namespace> oc create -f install/cluster-operator/023-RoleBinding-strimzi-cluster-operator.yaml -n <watched_namespace> oc create -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n <watched_namespace>
oc create -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n <watched_namespace> oc create -f install/cluster-operator/023-RoleBinding-strimzi-cluster-operator.yaml -n <watched_namespace> oc create -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n <watched_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 Cluster Operator:
oc create -f install/cluster-operator -n my-cluster-operator-namespace
oc create -f install/cluster-operator -n my-cluster-operator-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查部署的状态:
oc get deployments -n my-cluster-operator-namespace
oc get deployments -n my-cluster-operator-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示部署名称和就绪
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 1/1 1 1
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 1/1 1 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow READY显示就绪/预期的副本数。当AVAILABLE输出显示为1时,部署成功。
7.2.4. 部署 Cluster Operator 以监视所有命名空间 复制链接链接已复制到粘贴板!
此流程演示了如何部署 Cluster Operator,以观察 OpenShift 集群中的所有命名空间中的 Apache Kafka 资源的 Streams。
在这种模式下运行时,Cluster Operator 会在创建的任何新命名空间中自动管理集群。
先决条件
-
您需要具有创建和管理
CustomResourceDefinition和 RBAC (ClusterRole、RoleBinding和 RoleBinding )资源的权限的帐户。
流程
编辑 Apache Kafka 安装文件的 Streams,以使用 Cluster Operator 将安装到的命名空间。
例如,在这个流程中,Cluster Operator 已安装到命名空间
my-cluster-operator-namespace中。在 Linux 中,使用:
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 MacOS,使用:
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml文件,将STRIMZI_NAMESPACE环境变量的值设置为*。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
ClusterRoleBindings,将所有命名空间的集群范围访问权限授予 Cluster Operator。oc create clusterrolebinding strimzi-cluster-operator-namespaced --clusterrole=strimzi-cluster-operator-namespaced --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator oc create clusterrolebinding strimzi-cluster-operator-watched --clusterrole=strimzi-cluster-operator-watched --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator oc create clusterrolebinding strimzi-cluster-operator-entity-operator-delegation --clusterrole=strimzi-entity-operator --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator
oc create clusterrolebinding strimzi-cluster-operator-namespaced --clusterrole=strimzi-cluster-operator-namespaced --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator oc create clusterrolebinding strimzi-cluster-operator-watched --clusterrole=strimzi-cluster-operator-watched --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator oc create clusterrolebinding strimzi-cluster-operator-entity-operator-delegation --clusterrole=strimzi-entity-operator --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Cluster Operator 部署到 OpenShift 集群。
oc create -f install/cluster-operator -n my-cluster-operator-namespace
oc create -f install/cluster-operator -n my-cluster-operator-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查部署的状态:
oc get deployments -n my-cluster-operator-namespace
oc get deployments -n my-cluster-operator-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示部署名称和就绪
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 1/1 1 1
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 1/1 1 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow READY显示就绪/预期的副本数。当AVAILABLE输出显示为1时,部署成功。