K8S - 使用 Prometheus 检查证书验证

K8S - Check certificate validation with Prometheus

我需要找到 K8S 集群的证书验证,例如使用警报管理器通知 证书即将过期并发送适当的通知。

我找到了这个 repo 但不是我不确定如何配置它,目标是什么以及如何实现它?

https://github.com/ribbybibby/ssl_exporter

基于黑盒导出器

https://github.com/prometheus/blackbox_exporter


- job_name: "ssl"
  metrics_path: /probe
  static_configs:
    - targets:
        - 127.0.0.1
  relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: 127.0.0.1:9219 # SSL exporter.



我想查看当前的K8S集群(部署了Prometheus),看证书是否有效。 我应该在 insidetarget 中放置什么才能使其工作?

我需要在集群中公开一些东西吗?

更新 这是证书在系统中的位置

      tls:
        mode: SIMPLE
        privateKey: /etc/istio/bide-tls/tls.key
        serverCertificate: /etc/istio/bide-tls/tls.crt

我的场景是:

Prometheus 和 ssl_exporter 在同一个集群中,他们需要检查的证书也在同一个集群中。 (见上面的配置)

What should I put there inside the target to make it work?

我认为 "Targets" section of the readme 很清楚:它包含您希望监视器报告的端点:

static_configs:
  - targets:
      - kubernetes.default.svc.cluster.local:443
      - gitlab.com:443
relabel_configs:
  - source_labels: [__address__]
    target_label: __param_target
  - source_labels: [__param_target]
    target_label: instance
  - target_label: __address__
    # rewrite to contact the SSL exporter
    replacement: 127.0.0.1:9219

Do I need to expose something in cluster ?

取决于您是否要报告 内部 证书,或者 ssl_exporter 是否可以到达您想要的端点。例如,在上面的代码片段中,我使用了 KubeDNS 名称 kubernetes.default.svc.cluster.local 并假设 ssl_exporter 是 运行 作为集群中的一个 Pod。如果这不适用于您,您可能希望将该端点更改为 k8s.my-cluster-dns.example.com:6443 或您的 kubernetes API 正在侦听的任何您的 kubectl 可以到达的端点。

然后,以同样的方式,如果 prometheus 和您的 ssl_exporter 都在集群内 运行,那么您可以将 replacement: 更改为 Service IP由您的 ssl_exporter Pods 支持的地址。如果 prometheus 在集群外而 ssl_monitor 在集群内,那么你需要创建一个 Service of type: NodePort 这样你就可以将你的 prometheus 指向一个(或全部?)节点 IP 地址和 ssl_exporter 正在侦听的 NodePort

唯一会使用文字 127.0.0.1:9219 的情况是 prometheus 和 ssl_exporter 在同一台机器或同一 Pod 中 运行,因为这是唯一的方式127.0.0.1 从普罗米修斯的角度来看是有意义的