首页 > 解决方案 > K8S - 使用 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 的地方),看看证书是否有效。我应该 目标内放什么以使其工作?

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

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

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

我的情况是:

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

标签: securitykubernetesssl-certificateprometheus

解决方案


我应该在目标内放什么以使其工作?

我认为自述文件的“目标”部分很清楚:它包含您希望监视器报告的端点:

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

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

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

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

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


推荐阅读