Docker部署Kibana 7.17.3时证书文件的正确存放路径咨询
Kibana 7.17.3 Docker对接安全ES集群的证书路径配置
问题根因
服务未就绪是两个配置错误共同导致的:
kibana.yml放错了默认加载路径,Kibana进程根本没读到你写的自定义配置- 手动创建的
certs子目录默认属主是root,Kibana运行时的非特权用户无证书读取权限
正确配置步骤
- 修正Dockerfile复制逻辑
Kibana 7.17.3官方Docker镜像默认工作目录为/usr/share/kibana,仅会从/usr/share/kibana/config/路径加载kibana.yml配置,且该目录默认已经给运行时的kibana(UID 1000)用户配置了读权限,不需要额外调整权限。
把Dockerfile里的复制指令改成如下即可:# 配置文件必须放到config目录下才会被默认加载 COPY kibana.yml /usr/share/kibana/config/ # 证书直接放到config根目录,不要自定义certs子目录,避免权限问题 COPY *.p12 /usr/share/kibana/config/ - 调整
kibana.yml内的证书路径为容器内绝对路径
配置里不要写相对路径,必须和容器内实际存放路径完全对应,参考配置:elasticsearch.hosts: ["https://VNET内网ES集群地址:9200"] # 替换为你实际的p12 CA证书文件名 elasticsearch.ssl.certificateAuthorities: ["/usr/share/kibana/config/elastic-ca.p12"] elasticsearch.ssl.verificationMode: certificate xpack.security.enabled: true # 如果开启了客户端证书认证,补充对应证书、私钥的绝对路径即可
自定义证书目录的适配方法
如果你一定要把证书存到/usr/share/kibana/config/certs/自定义子目录,必须在Dockerfile里追加权限修正指令,否则Kibana进程读不到文件:
COPY *.p12 /usr/share/kibana/config/certs/ RUN chown -R kibana:kibana /usr/share/kibana/config/certs/
对应的kibana.yml里的证书路径也要同步替换为/usr/share/kibana/config/certs/你的证书文件名.p12。
快速排查方式
部署后执行docker logs <你的kibana容器名>看日志即可快速定位问题:
- 报
ENOENT: no such file or directory说明配置里写的证书路径和实际存放路径不匹配 - 报
EACCES: permission denied说明证书所在目录/文件权限配置错误,Kibana用户无读取权限
注意不要把RPM/DEB安装版的默认路径
/etc/kibana套用到Docker镜像上,Docker版本的Kibana不会从这个路径加载任何配置或证书。
内容的提问来源于stack exchange,提问作者Mykola Antoniv
相关产品推荐
相关产品推荐

