如何安装与SSL加密Kafka Broker通信的cp-ksqldb-server Helm Chart
关于cp-ksqldb-server连接SSL加密Kafka的配置方案
问题1:本地truststore文件传入集群及ssl.truststore.location设置
- 把本地的
kafka.client.truststore.jks文件创建为Kubernetes Secret:kubectl create secret generic ksql-truststore --from-file=kafka.client.truststore.jks=/本地路径/kafka.client.truststore.jks - 在cp-ksqldb-server的Helm配置里,通过
extraVolumes和extraVolumeMounts将这个Secret挂载到Pod内的指定目录,比如/etc/kafka/secrets/。 - 此时
ssl.truststore.location的值设为挂载路径下的文件名:/etc/kafka/secrets/kafka.client.truststore.jks。
问题2:是否支持像bitnami/kafka那样传递Secret值
支持,主要有两种实现方式:
- 挂载已有Secret:用
extraVolumes和extraVolumeMounts挂载包含证书或敏感密码的Secret,和问题1的挂载逻辑一致。 - 通过环境变量引用Secret:将truststore密码、SASL用户名/密码等敏感信息存入Secret,再通过
env或envFrom注入为Pod的环境变量,最后在configurationOverrides中用变量占位符引用,示例如下:configurationOverrides: ssl.truststore.password: "${TRUSTSTORE_PASSWORD}" sasl.jaas.config: |- org.apache.kafka.common.security.scram.ScramLoginModule required username="${SASL_USER}" password="${SASL_PASSWORD}"; env: - name: TRUSTSTORE_PASSWORD valueFrom: secretKeyRef: name: ksql-security-secrets key: truststore-password - name: SASL_USER valueFrom: secretKeyRef: name: ksql-security-secrets key: sasl-user - name: SASL_PASSWORD valueFrom: secretKeyRef: name: ksql-security-secrets key: sasl-password
问题3:是否可以通过卷挂载传递truststore文件
可以,这是Kubernetes中传递证书文件的标准推荐方式。具体配置示例:
extraVolumes: - name: ksql-truststore secret: secretName: ksql-truststore extraVolumeMounts: - name: ksql-truststore mountPath: /etc/kafka/secrets/ readOnly: true
挂载完成后,在configurationOverrides中指定ssl.truststore.location为挂载路径下的证书文件名即可。
内容的提问来源于stack exchange,提问作者Azman Amin
相关产品推荐
相关产品推荐

