0

我正在使用带有 srimzi 运算符的 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
4

1 回答 1

1

如果您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

于 2020-11-18T08:21:44.910 回答