第 11 章 使用 User Operator 管理 Kafka 用户
当使用 KafkaUser
资源创建、修改或删除用户时,User Operator 可确保这些更改反映在 Kafka 集群中。
有关 KafkaUser
资源的更多信息,请参阅 KafkaUser
模式参考。
11.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 代理监听程序。
- 正在运行的用户 Operator (通常使用 Entity Operator 部署)。
流程
配置
KafkaUser
资源。这个示例使用 ACL 指定 mTLS 身份验证和简单授权。
Kafka 用户配置示例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaUser metadata: name: my-user-1 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