我们有一个由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上运行)
1条答案
按热度按时间vlf7wbxs1#
我从jakub scholz的slack频道得到了答案。
您正在使用的tls配置和信任库应该用于connect和kafka之间的通信,而不是连接器。我认为您有两种选择如何为连接器提供信任库
您可以使用与现在相同的信任库,但是使用fileconfigprovider加载密码-我认为应该在每个connect节点上加载正确的密码
您只需使用连接器的信任库创建自己的机密,然后使用以下方法将其加载到connect中:https://strimzi.io/docs/operators/latest/full/using.html#assembly-Kafka连接外部配置部署配置Kafka连接
我就是这样实现的:
创建自定义密钥库和我的证书:
使用信任存储创建kubernetes机密:
正在将机密加载到连接资源文件中:
连接集群pod启动后,证书将在/opt/kafka/external configuration/my trust store中可用/