想要一些如何使用 kafkaUser 的实际例子

Want some practical example how to use kafkaUser

我正在使用带有 strimzi 运算符的 Kafka。我不知道如何使用 KafkaUser 任何人都可以向我建议我应该在哪里学习它的实际实现。我刚刚创建了一个 Kafka 用户和 KafkaTopic,现在我完全不知道该怎么做。 这是我的 KafkaUSer yml 代码:

apiVersion: kafka.strimzi.io/v1beta1
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
        operation: Read
        host: "*"
      - resource:
          type: topic
          name: my-topic
          patternType: literal
        operation: Describe
        host: "*"
      - resource:
          type: group
          name: my-group
          patternType: literal
        operation: Read
        host: "*"
      # Example Producer Acls for topic my-topic
      - resource:
          type: topic
          name: my-topic
          patternType: literal
        operation: Write
        host: "*"
      - resource:
          type: topic
          name: my-topic
          patternType: literal
        operation: Create
        host: "*"
      - resource:
          type: topic
          name: my-topic
          patternType: literal
        operation: Describe
        host: "*"

这是我的 KafkaTopic yml 文件代码:

apiVersion: kafka.strimzi.io/v1beta1
kind: KafkaTopic
metadata:
  name: my-topic
  labels:
    strimzi.io/cluster: my-cluster
spec:
  partitions: 1
  replicas: 1
  config:
    retention.ms: 7200000
    segment.bytes: 1073741824

如果您对用户启用了 tls 身份验证,我希望在您的 Kafka 自定义资源中您也启用了身份验证。 使用此身份验证类型创建 KafkaUser 时,会生成相应的 Secret,其中包含用户私钥和证书,用于与代理的相互 TLS 身份验证。 您必须从 Secret 中提取密钥和证书,并在您的客户端应用程序中配置您的密钥库(这取决于您使用的语言。如果它是 Java 您可以直接从具有相应 P12 格式的 Secret 中提取密钥库密码)。如果它是 Java 你可以参考官方 Kafka 文档来设置从 Secrets 中提取的密钥库和信任库:https://kafka.apache.org/documentation/#security_configclients

启用双向 TLS 身份验证,这意味着您还必须通过 TLS 连接到代理(您已在 Kafka 资源中启用它),因此您必须从集群 CA Secret 中提取,证书并将其导入您的信任库。 到那时,客户端将能够连接、进行身份验证并应用您描述的 ACL。

更多信息在官方文档中:

关于用户认证 https://strimzi.io/docs/operators/master/using.html#con-securing-client-authentication-str

关于连接到集群的 Kubernetes 上的客户端 运行 https://strimzi.io/docs/operators/master/using.html#configuring-internal-clients-to-trust-cluster-ca-str

关于客户端 运行 在 Kubernetes 外部连接到集群 https://strimzi.io/docs/operators/master/using.html#configuring-external-clients-to-trust-cluster-ca-str