8.5. 配置 Cluster Operator
使用环境变量配置 Cluster Operator。在 Deployment 配置文件中,指定 Cluster Operator 的容器镜像的环境变量。
AMQ Streams 发行工件提供的 Deployment 配置文件为 install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml。
您可以使用以下环境变量来配置 Cluster Operator。如果您以待机模式运行 Cluster Operator 副本,则需要额外的 环境变量来启用领导选举机制。
STRIMZI_NAMESPACE以逗号分隔的 Operator 运行的命名空间列表。如果没有设置,则为空字符串,或设置为
*,Cluster Operator 在所有命名空间中运行。Cluster Operator 部署可能会使用 Downward API 把它自动设置为 Cluster Operator 部署的命名空间。
Cluster Operator 命名空间的配置示例
env: - name: STRIMZI_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespaceenv: - name: STRIMZI_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow STRIMZI_FULL_RECONCILIATION_INTERVAL_MS- 可选,默认为 120000 ms。定期协调 之间的间隔,以毫秒为单位。
STRIMZI_OPERATION_TIMEOUT_MS- 可选,默认的 300000 ms。内部操作的超时时间,以毫秒为单位。在常规 OpenShift 操作的集群中使用 AMQ Streams 所需的时间比通常要长(例如,因为下载 Docker 镜像会较慢)。
STRIMZI_ZOOKEEPER_ADMIN_SESSION_TIMEOUT_MS-
可选,默认为 10000 ms。Cluster Operator 的 ZooKeeper admin 客户端的会话超时,以毫秒为单位。如果 Cluster Operator 的 ZooKeeper 请求因为超时问题而定期失败,则增加这个值。通过
maxSessionTimeout配置在 ZooKeeper 服务器端设置了最大允许的会话时间。默认情况下,最大会话超时值为 20 倍,默认的tickTime(默认值为 2000)为 40000 ms。如果您需要更高的超时,请更改maxSessionTimeoutZooKeeper 服务器配置值。 STRIMZI_OPERATIONS_THREAD_POOL_SIZE- 可选,默认为 10。worker 线程池大小,用于各种异步和阻止由 Cluster Operator 运行的操作。
STRIMZI_OPERATOR_NAME- 可选,默认为 pod 的主机名。在发出 OpenShift 事件时,Operator 名称标识 AMQ Streams 实例。
STRIMZI_OPERATOR_NAMESPACE运行 Cluster Operator 的命名空间的名称。不要手动配置此变量。使用 Downward API。
env: - name: STRIMZI_OPERATOR_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespaceenv: - name: STRIMZI_OPERATOR_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow STRIMZI_OPERATOR_NAMESPACE_LABELS可选。运行 AMQ Streams Cluster Operator 的命名空间标签。使用命名空间标签在 网络策略 中配置命名空间选择器。网络策略允许 AMQ Streams Cluster Operator 访问具有这些标签的命名空间的操作对象。如果没有设置,则网络策略中的命名空间选择器会被配置为允许从 OpenShift 集群中任何命名空间访问 Cluster Operator。
env: - name: STRIMZI_OPERATOR_NAMESPACE_LABELS value: label1=value1,label2=value2env: - name: STRIMZI_OPERATOR_NAMESPACE_LABELS value: label1=value1,label2=value2Copy to Clipboard Copied! Toggle word wrap Toggle overflow STRIMZI_LABELS_EXCLUSION_PATTERN可选,默认的正则表达式为
^app.kubernetes.io/(?!part-of).*。用于过滤从主自定义资源传播到其子资源的正则表达式排除模式。标签排除过滤器不适用于 template 部分中的标签,如spec.kafka.template.pod.metadata.labels。env: - name: STRIMZI_LABELS_EXCLUSION_PATTERN value: "^key1.*"env: - name: STRIMZI_LABELS_EXCLUSION_PATTERN value: "^key1.*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow STRIMZI_CUSTOM_{COMPONENT_NAME}_LABELS可选。一个或多个自定义标签,应用到
{COMPONENT_NAME}自定义资源创建的所有 pod。当创建自定义资源或下一个协调时,Cluster Operator 会标记 pod。标签可应用到以下组件:
-
KAFKA -
KAFKA_CONNECT -
KAFKA_CONNECT_BUILD -
ZOOKEEPER -
ENTITY_OPERATOR -
KAFKA_MIRROR_MAKER2 -
KAFKA_MIRROR_MAKER -
CRUISE_CONTROL -
KAFKA_BRIDGE -
KAFKA_EXPORTER
-
STRIMZI_CUSTOM_RESOURCE_SELECTOR可选。过滤 Cluster Operator 处理的自定义资源的标签选择器。Operator 仅在设置了指定标签的自定义资源上运行。Operator 不会看到没有这些标签的资源。标签选择器适用于
Kafka,KafkaConnect,KafkaBridge,KafkaMirrorMaker, 和KafkaMirrorMaker2资源。只有在对应的 Kafka 和 Kafka Connect 集群具有匹配的标签时,才会操作KafkaRebalance和KafkaConnector资源。env: - name: STRIMZI_CUSTOM_RESOURCE_SELECTOR value: label1=value1,label2=value2env: - name: STRIMZI_CUSTOM_RESOURCE_SELECTOR value: label1=value1,label2=value2Copy to Clipboard Copied! Toggle word wrap Toggle overflow STRIMZI_KAFKA_IMAGES-
必需。从 Kafka 版本到包含该版本的 Kafka 代理的对应 Docker 镜像的映射。所需的语法为空格或用逗号分开的 <
version> = <image>对。例如3.5.0=registry.redhat.io/amq-streams/kafka-35-rhel8:2.6.0, 3.6.0=registry.redhat.io/amq-streams/kafka-36-rhel8:2.6.0。当指定了属性Kafka.spec.kafka.version但没有在Kafka资源的Kafka.spec.kafka.image时使用这个。 STRIMZI_DEFAULT_KAFKA_INIT_IMAGE-
可选,默认
registry.redhat.io/amq-streams/strimzi-rhel8-operator:2.6.0。如果没有将镜像指定为Kafka资源中的kafka-init-image,则用作 init 容器的镜像名称。init 容器在代理进行初始配置工作之前启动,如机架支持。 STRIMZI_KAFKA_CONNECT_IMAGES-
必需。从 Kafka 版本到该版本的 Kafka Connect 的对应 Docker 镜像的映射。所需的语法为空格或用逗号分开的 <
version> = <image>对。例如3.5.0=registry.redhat.io/amq-streams/kafka-35-rhel8:2.6.0, 3.6.0=registry.redhat.io/amq-streams/kafka-36-rhel8:2.6.0。当指定KafkaConnect.spec.version属性而不是KafkaConnect.spec.image时,这会被使用。 STRIMZI_KAFKA_MIRROR_MAKER_IMAGES-
必需。从 Kafka 版本到该版本的 MirrorMaker 的对应 Docker 镜像的映射。所需的语法为空格或用逗号分开的 <
version> = <image>对。例如3.5.0=registry.redhat.io/amq-streams/kafka-35-rhel8:2.6.0, 3.6.0=registry.redhat.io/amq-streams/kafka-36-rhel8:2.6.0。当指定KafkaMirrorMaker.spec.version属性而不是KafkaMirrorMaker.spec.image时,这会被使用。 STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE-
可选,默认
registry.redhat.io/amq-streams/strimzi-rhel8-operator:2.6.0。如果没有将镜像指定为Kafka.spec.entityOperator.topicOperator.image中的 Kafka.spec.entityOperator.image,则部署主题 Operator 时用作默认镜像名称。 STRIMZI_DEFAULT_USER_OPERATOR_IMAGE-
可选,默认
registry.redhat.io/amq-streams/strimzi-rhel8-operator:2.6.0。如果没有将镜像指定为Kafka.spec.entityOperator.userOperator.image中的 Kafka.spec.entityOperator.image,则部署 User Operator时要使用的镜像名称。 STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE-
可选,默认
registry.redhat.io/amq-streams/kafka-36-rhel8:2.6.0。如果没有将镜像指定为Kafka.spec.entityOperator.tlsSidecar.image 中的Kafka.spec.entityOperator.tlsSidecar.image时,用作实体 Operator 的 sidecar 容器的默认值。sidecar 提供 TLS 支持。 STRIMZI_IMAGE_PULL_POLICY-
可选。应用到由 Cluster Operator 管理的所有 pod 中的容器的
ImagePullPolicy。有效值为Always、ifNotPresent 和Never。如果未指定,则使用 OpenShift 默认值。更改策略将导致对所有 Kafka、Kafka Connect 和 Kafka MirrorMaker 集群进行滚动更新。 STRIMZI_IMAGE_PULL_SECRETS-
可选。以逗号分隔的
Secret名称列表。此处引用的 secret 包含拉取容器镜像的容器 registry 的凭证。secret 在 Cluster Operator 创建的所有 pod 的imagePullSecrets属性中指定。更改此列表会导致所有 Kafka、Kafka Connect 和 Kafka MirrorMaker 集群进行滚动更新。 STRIMZI_KUBERNETES_VERSION可选。覆盖从 API 服务器检测到的 OpenShift 版本信息。
OpenShift 版本覆盖配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow KUBERNETES_SERVICE_DNS_DOMAIN可选。覆盖默认的 OpenShift DNS 域名后缀。
默认情况下,OpenShift 集群中分配的服务具有使用默认后缀
cluster.local的 DNS 域名。例如,对于 broker kafka-0 :
<cluster-name>-kafka-0.<cluster-name>-kafka-brokers.<namespace>.svc.cluster.local
<cluster-name>-kafka-0.<cluster-name>-kafka-brokers.<namespace>.svc.cluster.localCopy to Clipboard Copied! Toggle word wrap Toggle overflow DNS 域名添加到用于主机名验证的 Kafka 代理证书中。
如果您在集群中使用不同的 DNS 域名后缀,请将
KUBERNETES_SERVICE_DNS_DOMAIN环境变量从默认值改为您用来与 Kafka 代理建立连接。STRIMZI_CONNECT_BUILD_TIMEOUT_MS- 可选,默认的 300000 ms。使用额外连接器构建新 Kafka Connect 镜像的超时时间(以毫秒为单位)。在使用 AMQ Streams 构建包含许多连接器或使用较慢的容器 registry 时,请考虑增加这个值。
STRIMZI_NETWORK_POLICY_GENERATION可选,默认
true。资源的网络策略。网络策略允许 Kafka 组件间的连接。将此环境变量设置为
false可禁用网络策略生成。例如,如果要使用自定义网络策略,您可以执行此操作。自定义网络策略可让更多地控制组件间的连接。STRIMZI_DNS_CACHE_TTL-
可选,默认为
30。在本地 DNS 解析器中缓存成功名称查找的秒数。任何负值表示永久缓存。零表示不缓存,这对于避免应用较长缓存策略的连接错误非常有用。 STRIMZI_POD_SET_RECONCILIATION_ONLY-
可选,默认
false。当设置为true时,Cluster Operator 会仅协调StrimziPodSet资源,并忽略其他自定义资源(Kafka、KafkaConnect等)的更改。此模式可用于确保在需要时重新创建 pod,但不会对集群进行其他更改。 STRIMZI_FEATURE_GATES- 可选。启用或禁用由 功能门控制的功能。
STRIMZI_POD_SECURITY_PROVIDER_CLASS-
可选。可插拔的
PodSecurityProvider类配置,可用于为 Pod 和容器提供安全上下文配置。
8.5.1. 使用网络策略限制对 Cluster Operator 的访问 复制链接链接已复制到粘贴板!
使用 STRIMZI_OPERATOR_NAMESPACE_LABELS 环境变量,使用命名空间标签为 Cluster Operator 建立网络策略。
Cluster Operator 可以在与它管理的资源或单独的命名空间中运行。默认情况下,STRIMZI_OPERATOR_NAMESPACE 环境变量配置为使用 Downward API 来查找 Cluster Operator 运行的命名空间。如果 Cluster Operator 在与资源相同的命名空间中运行,则 AMQ Streams 只需要本地访问并被 AMQ Streams 允许。
如果 Cluster Operator 在一个独立的命名空间中运行,则 OpenShift 集群中的所有命名空间都可以访问 Cluster Operator,除非配置了网络策略。通过添加命名空间标签,对 Cluster Operator 的访问仅限于指定的命名空间。
为 Cluster Operator 部署配置的网络策略
8.5.2. 配置 Cluster Operator 的定期协调 复制链接链接已复制到粘贴板!
使用 STRIMZI_FULL_RECONCILIATION_INTERVAL_MS 变量设置 Cluster Operator 定期协调的时间间隔。将其值替换为所需间隔(以毫秒为单位)。
为 Cluster Operator 部署配置的协调周期
Cluster Operator 对从 OpenShift 集群接收的适用集群资源的所有通知做出反应。如果 Operator 没有运行,或者因为某种原因没有收到通知,资源将与正在运行的 OpenShift 集群的状态不同步。为了正确处理故障转移,Cluster Operator 会执行定期协调过程,以便它可以将资源的状态与当前集群部署进行比较,以便在所有环境中具有一致的状态。
8.5.3. 使用领导选举机制运行多个 Cluster Operator 副本 复制链接链接已复制到粘贴板!
默认 Cluster Operator 配置可让领导选举机制运行 Cluster Operator 的多个并行副本。一个副本被选为活跃领导值,并运行部署的资源。其他副本以待机模式运行。当领导机停止或失败时,其中一个备用副本被选为新的领导,并开始操作部署的资源。
默认情况下,AMQ Streams 使用单个 Cluster Operator 副本运行,该副本始终是领导副本。当单个 Cluster Operator 副本停止或失败时,OpenShift 会启动新的副本。
运行具有多个副本的 Cluster Operator 并不是必须的。但是,在出现重大故障导致的大规模中断时,在待机时具有副本非常有用。例如,假设多个 worker 节点或整个可用区失败。故障可能会导致 Cluster Operator pod 和许多 Kafka pod 同时停机。如果后续 pod 调度会导致缺少资源,这可能会在运行单个 Cluster Operator 时延迟操作。
8.5.3.1. 为 Cluster Operator 副本启用领导选举机制 复制链接链接已复制到粘贴板!
在运行额外的 Cluster Operator 副本时,配置领导选举环境变量。支持以下环境变量:
STRIMZI_LEADER_ELECTION_ENABLED-
可选,默认禁用(
false)。启用或禁用领导选举机制,允许其他 Cluster Operator 副本在待机上运行。
默认情况下,领导选举机制被禁用。它仅在安装时应用此环境变量时启用。
STRIMZI_LEADER_ELECTION_LEASE_NAME-
启用领导选举机制时需要。用于领导选举的 OpenShift
Lease资源的名称。 STRIMZI_LEADER_ELECTION_LEASE_NAMESPACE启用领导选举机制时需要。创建用于领导选举 OpenShift
Lease资源的命名空间。您可以使用 Downward API 将其配置为部署 Cluster Operator 的命名空间。env: - name: STRIMZI_LEADER_ELECTION_LEASE_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespaceenv: - name: STRIMZI_LEADER_ELECTION_LEASE_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow STRIMZI_LEADER_ELECTION_IDENTITY启用领导选举机制时需要。配置在领导选举过程中使用的给定 Cluster Operator 实例的身份。每个 operator 实例的身份必须是唯一的。您可以使用 Downward API 将其配置为部署 Cluster Operator 的 pod 的名称。
env: - name: STRIMZI_LEADER_ELECTION_IDENTITY valueFrom: fieldRef: fieldPath: metadata.nameenv: - name: STRIMZI_LEADER_ELECTION_IDENTITY valueFrom: fieldRef: fieldPath: metadata.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow STRIMZI_LEADER_ELECTION_LEASE_DURATION_MS- 可选,默认为 15000 ms。指定获取租期的有效持续时间。
STRIMZI_LEADER_ELECTION_RENEW_DEADLINE_MS- 可选,默认为 10000 ms。指定领导机应尝试保持领导状态的期间。
STRIMZI_LEADER_ELECTION_RETRY_PERIOD_MS- 可选,默认为 2000 ms。指定领导对租期锁定的更新频率。
8.5.3.2. 配置 Cluster Operator 副本 复制链接链接已复制到粘贴板!
要以待机模式运行额外的 Cluster Operator 副本,您需要增加副本数并启用领导选举机制。要配置领导选举机制,请使用领导选举环境变量。
要进行所需的更改,请配置位于 install/cluster-operator/ 中的以下 Cluster Operator 安装文件:
- 060-Deployment-strimzi-cluster-operator.yaml
- 022-ClusterRole-strimzi-cluster-operator-role.yaml
- 022-RoleBinding-strimzi-cluster-operator.yaml
领导选举机制具有自己的 ClusterRole 和 RoleBinding RBAC 资源,这些资源以 Cluster Operator 运行的命名空间为目标,而不是其监视的命名空间。
默认部署配置在与 Cluster Operator 相同的命名空间中创建一个名为 strimzi-cluster-operator 的 Lease 资源。Cluster Operator 使用租期来管理领导选举机制。RBAC 资源提供使用 Lease 资源的权限。如果您使用不同的 Lease 名称或命名空间,请相应地更新 ClusterRole 和 RoleBinding 文件。
先决条件
-
您需要具有创建和管理
CustomResourceDefinition和 RBAC (ClusterRole、RoleBinding和 RoleBinding )资源的权限的帐户。
流程
编辑用于部署 Cluster Operator 的 Deployment 资源,该资源在 060-Deployment-strimzi-cluster-operator.yaml 文件中定义。
将
replicas属性从默认值(1)更改为与所需副本数匹配的值。增加 Cluster Operator 副本数
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查领导选举
env属性是否已设置。如果没有设置,请配置它们。
要启用领导选举机制,
STRIMZI_LEADER_ELECTION_ENABLED必须设置为true(默认)。在本例中,租期的名称被改为
my-strimzi-cluster-operator。为 Cluster Operator 配置领导选举环境变量
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关可用环境变量的描述,请参阅 第 8.5.3.1 节 “为 Cluster Operator 副本启用领导选举机制”。
如果您为领导选举机制中使用的
Lease资源指定了不同的名称或命名空间,请更新 RBAC 资源。(可选)在
022-ClusterRole-strimzi-cluster-operator-role.yaml文件中编辑ClusterRole资源。使用
Lease资源的名称更新resourceNames。更新对租期的 ClusterRole 引用
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)在
022-RoleBinding-strimzi-cluster-operator.yaml文件中编辑RoleBinding资源。使用
Lease资源的名称以及创建的命名空间更新subjects.name和subjects.namespace。更新对租期的 RoleBinding 引用
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 Cluster Operator:
oc create -f install/cluster-operator -n myproject
oc create -f install/cluster-operator -n myprojectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查部署的状态:
oc get deployments -n myproject
oc get deployments -n myprojectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示部署名称和就绪
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 3/3 3 3
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 3/3 3 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow READY显示就绪/预期的副本数。当AVAILABLE输出显示正确的副本数时,部署可以成功。
8.5.4. 配置 Cluster Operator HTTP 代理设置 复制链接链接已复制到粘贴板!
如果您在 HTTP 代理后运行 Kafka 集群,您仍然可以在集群内和移出数据。例如,您可以使用连接器运行 Kafka Connect,该连接器从代理外部推送和拉取镜像。或者,您可以使用代理与授权服务器连接。
配置 Cluster Operator 部署来指定代理环境变量。Cluster Operator 接受标准代理配置(HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY)作为环境变量。代理设置应用到所有 AMQ Streams 容器。
代理地址的格式为 http://<ip_address>:<port_number>。要使用名称和密码设置代理,格式为 http://<username>:<password>@<ip-address>:<port_number>。
先决条件
-
您需要具有创建和管理
CustomResourceDefinition和 RBAC (ClusterRole、RoleBinding和 RoleBinding )资源的权限的帐户。
流程
要在 Cluster Operator 中添加代理环境变量,请更新其
部署配置 (install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml)。Cluster Operator 的代理配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,直接编辑
Deployment:oc edit deployment strimzi-cluster-operator
oc edit deployment strimzi-cluster-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您更新了 YAML 文件而不是直接编辑
Deployment,请应用更改:oc create -f install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml
oc create -f install/cluster-operator/060-Deployment-strimzi-cluster-operator.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.5.5. 使用 Cluster Operator 配置禁用 FIPS 模式 复制链接链接已复制到粘贴板!
在启用了 FIPS 的 OpenShift 集群中运行时,AMQ Streams 会自动切换到 FIPS 模式。通过在 Cluster Operator 的部署配置 中禁用 FIPS_MODE 环境变量来禁用 FIPS 模式。禁用 FIPS 模式后,AMQ Streams 会在 OpenJDK 中为所有组件自动禁用 FIPS。禁用 FIPS 模式后,AMQ Streams 不兼容 FIPS。AMQ Streams operator 以及所有操作对象都相同,就像在启用了 FIPS 的 OpenShift 集群中运行的一样。
流程
要在 Cluster Operator 中禁用 FIPS 模式,更新其
部署配置install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml) 并增加FIPS_MODE环境变量。Cluster Operator 的 FIPS 配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 禁用 FIPS 模式。
或者,直接编辑
Deployment:oc edit deployment strimzi-cluster-operator
oc edit deployment strimzi-cluster-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您更新了 YAML 文件而不是直接编辑
Deployment,请应用更改:oc apply -f install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml
oc apply -f install/cluster-operator/060-Deployment-strimzi-cluster-operator.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow