背景

自建K8s集羣使用Helm部署ECK,ECK內部使用自簽證書處理服務間傳輸加密

報錯信息

{"log.level":"error","@timestamp":"2025-12-18T08:10:53.731Z","message":"Error dialing x509: certificate signed by unknown authority","component":{"binary":"metricbeat","dataset":"elastic_agent.metricbeat","id":"http/metrics-monitoring","type":"http/metrics"},"log":{"source":"http/metrics-monitoring"},"service.name":"metricbeat","server.address":"elasticsearch-es-http.elastic-stack.svc:9200","ecs.version":"1.6.0","log.origin":{"file.line":39,"file.name":"transport/logging.go","function":"github.com/elastic/elastic-agent-libs/transport/httpcommon.(*HTTPTransportSettings).RoundTripper.LoggingDialer.func2"},"network.transport":"tcp","log.logger":"elasticsearch.esclientleg","ecs.version":"1.6.0"}

解決方法

# 提取ES CA證書
kubectl -n elastic-stack get secrets  elasticsearch-es-http-ca-internal -o json | jq -r '.data."tls.crt"' | base64 -d > ecki.crt

# 獲取其 SHA256 指紋
openssl x509 -in ecki.crt -noout -fingerprint -sha256 | awk -F'=' '{print $2}' | tr -d ':'
D195016D2FEB558D2DD08CDCA3D98E1C5B932F3361F7342235FC11654308F178
# 記錄SHA256 指紋

修改Helm配置文件

1. 註釋xpack.fleet.agents.elasticsearch.hosts 2. 添加xpack.fleet.outputs部分配置

eck-kibana:
  enabled: true
  fullnameOverride: kibana
  elasticsearchRef:
    name: elasticsearch
  config:
    #xpack.fleet.agents.elasticsearch.hosts: ["https://elasticsearch-es-http.elastic-stack.svc:9200"]
    xpack.fleet.agents.fleet_server.hosts: ["https://fleet-server-agent-http.elastic-stack.svc:8220"]
    xpack.fleet.outputs:
      - id: fleet-default-output
        name: Default
        type: elasticsearch
        hosts: ["https://elasticsearch-es-http.elastic-stack.svc:9200"]
    # openssl x509 -fingerprint -sha256 -noout -in tls/kibana/elasticsearch-ca.pem (colons removed)
        ca_trusted_fingerprint: D195016D2FEB558D2DD08CDCA3D98E1C5B932F3361F7342235FC11654308F178
        is_default: true
        is_default_monitoring: true

更新elastic-stack

helm upgrade eck-stack-with-fleet elastic/eck-stack  \
	--create-namespace \
	-n elastic-stack \
	-f fleet-agents.yaml

參考:https://discuss.elastic.co/t/error-dialing-x509-certificate-signed-by-unknown-authority-kubernetes-integration/370859/8