如何在kafkaconnector资源中抽象地使用kafka connect信任库密码?

jaql4c8m  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(420)

我们有一个由3个节点组成的连接集群。我们的连接群集信任库中需要两个证书。我们已按以下方式安装这些证书。

...
spec:
  tls:
      trustedCertificates:
      - certificate: ca.crt
        secretName: my-cluster-cluster-ca-cert
      - secretName: root-cer
        certificate: RootCA.crt
      - certificate: IntermediateCA.crt
        secretName: inter-cer
      - secretName: solace-broker-secret
        certificate: secure-solace-broker.crt
...

如您所知,在三个connect集群启动后,证书已安装到以下信任库中 /tmp/kafka/cluster.truststore.p12 . 此外,我们还可以在以下文件中找到随机信任库密码: /tmp/strimzi-connect.properties .
我们在kafkanconnector资源文件中指定信任库路径和信任库密码。

apiVersion: kafka.strimzi.io/v1alpha1
kind: KafkaConnector
metadata:
  name: solace-source-connector
  labels:
    strimzi.io/cluster: my-connect-cluster
spec:
  class: com.solace.connector.kafka.connect.source.SolaceSourceConnector
  tasksMax: 1
  config:
    value.converter: org.apache.kafka.connect.converters.ByteArrayConverter
    key.converter: org.apache.kafka.connect.storage.StringConverter
    kafka.topic: solace-test
    sol.host: tcps://msdkjskdjsdfrdfjdffdhxu3n.messaging.solace.cloud:55443
    sol.username: my-solace-cloud-username
    sol.password: password
    sol.vpn_name: solaceservice
    sol.topics: try-me
    sol.message_processor_class: com.solace.connector.kafka.connect.source.msgprocessors.SolSampleSimpleMessageProcessor
    sol.ssl_trust_store: /tmp/kafka/cluster.truststore.p12
    sol.ssl_trust_store_password: HARDCODED_RANDOM_PASSWORD

现在我们进入其中一个连接集群吊舱,从 /tmp/strimzi-connect.properties 然后在 sol.ssl_trust_store_password 现场。
我的问题是:
有没有办法把密码参数化?任何使用密码的封装方式(这样我们就不需要进入pod就可以知道密码了——期望是,kafkanconnector资源会从 /tmp/strimzi-connect.properties 文件,在哪个pod上运行)

vlf7wbxs

vlf7wbxs1#

我从jakub scholz的slack频道得到了答案。
您正在使用的tls配置和信任库应该用于connect和kafka之间的通信,而不是连接器。我认为您有两种选择如何为连接器提供信任库
您可以使用与现在相同的信任库,但是使用fileconfigprovider加载密码-我认为应该在每个connect节点上加载正确的密码
您只需使用连接器的信任库创建自己的机密,然后使用以下方法将其加载到connect中:https://strimzi.io/docs/operators/latest/full/using.html#assembly-Kafka连接外部配置部署配置Kafka连接
我就是这样实现的:
创建自定义密钥库和我的证书:

keytool -import -file RootCA.crt -alias root -keystore myTrustStore

使用信任存储创建kubernetes机密:

kubectl create secret generic my-trust-store --from-file=myTrustStore

正在将机密加载到连接资源文件中:

spec:
  ...
  externalConfiguration:
    volumes:
      - name: my-trust-store
        secret:
          secretName: my-trust-store

连接集群pod启动后,证书将在/opt/kafka/external configuration/my trust store中可用/

相关问题