7.4. 使用 User Operator
当您使用 KafkaUser 资源创建、修改或删除用户时,用户 Operator 可确保这些更改在 Kafka 集群中反映出来。
有关 KafkaUser 资源的更多信息,请参阅 KafkaUser 模式参考。
部署 User Operator
您可以使用 Cluster Operator 或独立 Operator 部署 User Operator。您可以在不由 Cluster Operator 管理的 Kafka 集群中使用独立 User Operator。
有关部署说明,请查看以下操作:
要部署独立 User Operator,您需要设置环境变量以连接到 Kafka 集群。如果要使用 Cluster Operator 部署 User Operator,则不需要设置这些环境变量,因为 Cluster Operator 将设置它们。
7.4.1. 配置 Kafka 用户 复制链接链接已复制到粘贴板!
使用 KafkaUser 资源的属性来配置 Kafka 用户。
您可以使用 oc apply 来创建或修改用户,oc delete 来删除现有的用户。
例如:
-
oc apply -f <user_config_file> -
oc delete KafkaUser < ;user_name>
用户代表 Kafka 客户端。配置 Kafka 用户时,您可以启用客户端访问 Kafka 所需的用户身份验证和授权机制。所用的机制必须与对应的 Kafka 配置匹配。有关使用 Kafka 和 KafkaUser 资源保护对 Kafka 代理的访问的更多信息,请参阅 保护对 Kafka 代理的访问。
先决条件
- 使用 mTLS 身份验证和 TLS 加密,运行带有 Kafka 代理监听程序 的 Kafka 集群。
- 正在运行的用户 Operator (通常使用 Entity Operator 部署)。
流程
配置
KafkaUser资源。这个示例使用 ACL 指定 mTLS 验证和简单的授权。
Kafka 用户配置示例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaUser metadata: name: my-user labels: strimzi.io/cluster: my-cluster spec: authentication: type: tls authorization: type: simple acls: # Example consumer Acls for topic my-topic using consumer group my-group - resource: type: topic name: my-topic patternType: literal operations: - Describe - Read host: "*" - resource: type: group name: my-group patternType: literal operations: - Read host: "*" # Example Producer Acls for topic my-topic - resource: type: topic name: my-topic patternType: literal operations: - Create - Describe - Write host: "*"在 OpenShift 中创建
KafkaUser资源。oc apply -f <user_config_file>等待用户就绪状态更改为
True:oc get kafkausers -o wide -w -n <namespace>Kafka 用户状态
NAME CLUSTER AUTHENTICATION AUTHORIZATION READY my-user-1 my-cluster tls simple True my-user-2 my-cluster tls simple my-user-3 my-cluster tls simple True当
READY输出显示为True时,用户创建成功。如果
READY列留空,则从资源 YAML 或 User Operator 日志中获取有关状态的更多详细信息。消息提供有关当前状态的原因的详细信息。
oc get kafkausers my-user-2 -o yaml有关具有
NotReady状态的用户的详情# ... status: conditions: - lastTransitionTime: "2022-06-10T10:07:37.238065Z" message: Simple authorization ACL rules are configured but not supported in the Kafka cluster configuration. reason: InvalidResourceException status: "True" type: NotReady在本例中,用户未就绪的原因是,因为
Kafka配置中没有启用简单的授权。用于简单授权的 Kafka 配置
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... authorization: type: simple在更新 Kafka 配置后,其状态会显示用户已就绪。
oc get kafkausers my-user-2 -o wide -w -n <namespace>用户的状态更新
NAME CLUSTER AUTHENTICATION AUTHORIZATION READY my-user-2 my-cluster tls simple True获取详细信息不会显示任何信息。
oc get kafkausers my-user-2 -o yaml有关具有
READY状态的用户的详情# ... status: conditions: - lastTransitionTime: "2022-06-10T10:33:40.166846Z" status: "True" type: Ready
7.4.2. 使用资源请求和限值配置 User Operator 复制链接链接已复制到粘贴板!
您可以将资源(如 CPU 和内存)分配给 User Operator,并为其消耗的资源数量设置限值。
先决条件
- Cluster Operator 正在运行。
流程
根据需要,在编辑器中更新 Kafka 集群配置:
oc edit kafka MY-CLUSTER在
Kafka资源中的spec.entityOperator.userOperator.resources属性中,为 User Operator 设置资源请求和限值。apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka spec: # Kafka and ZooKeeper sections... entityOperator: userOperator: resources: requests: cpu: "1" memory: 500Mi limits: cpu: "1" memory: 500Mi保存文件并退出编辑器。Cluster Operator 会自动应用更改。