13.4. 使用 User Operator
当您创建、修改或删除使用 KafkaUser 资源的用户时,User Operator 可确保这些更改反映在 Kafka 集群中。
有关 KafkaUser 资源的更多信息,请参阅 KafkaUser 模式参考。
部署 User Operator
您可以使用 Cluster Operator 或独立 Operator 部署 User Operator。您可以将独立的 User Operator 与不是由 Cluster Operator 管理的 Kafka 集群搭配使用。
有关部署说明,请参阅以下内容:
要部署独立用户 Operator,您需要设置环境变量以连接到 Kafka 集群。如果您使用 Cluster Operator 部署 User Operator,则不需要设置这些环境变量,因为 Cluster Operator 将设置它们。
13.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 代理的访问。
先决条件
- 正在运行的 Kafka 集群使用 mTLS 身份验证和 TLS 加密配置 Kafka 代理监听程序。
- 正在运行的 User 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
13.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 会自动应用更改。