如何在Kubernetes的Logstash/ECK中配置ssl_certificate_authorities参数?
步骤1:定位Elasticsearch CA证书对应的Secret
Elastic Operator部署时,会自动将自签名CA证书存储在Kubernetes Secret中,默认命名规则为 <your-es-cluster-name>-es-ca(比如集群名为my-es-cluster,则Secret名为my-es-cluster-es-ca)。
先用命令确认Secret存在:
kubectl get secrets | grep es-ca
步骤2:提取CA证书内容
从Secret中导出明文的CA证书:
kubectl get secret <your-es-cluster-name>-es-ca -o jsonpath='{.data.ca\.crt}' | base64 -d
将输出的证书内容保存为一个文件(比如es-ca.crt),确保Logstash进程能访问到该文件的路径。
步骤3:配置Logstash的ssl_certificate_authorities
在Logstash的Elasticsearch输出配置块中,指定证书文件路径:
output { elasticsearch { hosts => ["https://<es-service-name>:9200"] # 替换为你的ES服务地址 ssl => true ssl_certificate_authorities => ["/path/to/es-ca.crt"] # 替换为实际证书路径 user => "elastic" # 默认用户名,可根据实际情况修改 password => "<your-elastic-password>" # 从ES的secret中获取,命令示例:kubectl get secret <cluster>-es-elastic-user -o jsonpath='{.data.elastic}' | base64 -d } }
步骤4:Kubernetes环境下部署Logstash的优化方案
如果Logstash也部署在K8s集群中,直接挂载Secret更方便,无需手动复制证书:
- 在Logstash的Deployment配置中添加Volume:
volumes: - name: es-ca-cert secret: secretName: <your-es-cluster-name>-es-ca
- 在容器配置中挂载该Volume到指定路径:
volumeMounts: - name: es-ca-cert mountPath: /usr/share/logstash/config/certs readOnly: true
- 此时Logstash配置中的证书路径应为:
ssl_certificate_authorities => ["/usr/share/logstash/config/certs/ca.crt"]
内容的提问来源于stack exchange,提问作者Swpnil Pawar
相关产品推荐
相关产品推荐

