K8s挂载Secret卷部署Kafka Connect遇TopicAuthorizationException求助
Kafka Connect Worker通过Secret挂载JKS文件无法访问偏移存储主题的解决方案求助
在Kubernetes环境中使用Helm部署confluentinc/cp-kafka-connect-base:7.2.2镜像的Kafka Connect Worker,Kafka集群采用SSL加密,依赖JKS格式的keystore和truststore。当前服务抛出TopicAuthorizationException,无法访问偏移存储主题。
将JKS文件直接打包进镜像时服务可正常运行,但通过Secret卷挂载的方式部署就会出现权限异常,急需解决该挂载方式下的问题。
相关配置文件
Secrets.yaml
apiVersion: v1 kind: Secret metadata: name: {{ .Values.appName }}-jks-files namespace: {{ .Values.namespace }} labels: app: {{ .Values.appName }}-jks-files data: keystore.jks: {{ .Files.Get KeyStoreLoc | b64enc }} truststore.jks: {{ .Files.Get TruststoreLoc | b64enc }}
Deployment.yaml(仅模板部分)
JKS密码通过ConfigMap注入(配置未展示)
template: metadata: labels: app: {{ .Values.appName }} spec: volumes: - name: ssl-keystore secret: secretName: {{ .Values.appName }}-jks-files containers: - image: {{ .Values.imageName }} imagePullPolicy: Always name: {{ .Values.appName }} volumeMounts: - mountPath: "/etc/connect-ssl" name: ssl-keystore readOnly: true ports: - containerPort: 8080 name: http protocol: TCP envFrom: - configMapRef: name: {{ .Values.appName }}-config-map
已尝试的排查操作
- 手动对JKS文件做Base64编码后存入Secret,替代Helm的
.Files.Get方式,问题依旧; - 修改JKS文件名(带/不带
.jks后缀),无效; - 进入Pod验证JKS文件确实存在于挂载路径
/etc/connect-ssl下; - 在容器内使用
keytool命令可正常解密JKS文件,验证文件完整性; - 修改环境变量
CONNECT_SSL_KEYSTORE_LOCATION指向不存在的路径,服务会正常提示文件不存在,说明路径配置生效。
恳请提供可行的解决方案!
内容的提问来源于stack exchange,提问作者devvin
相关产品推荐
相关产品推荐

