K8S-使用Prometheus检查证书验证

时间:2019-12-08 13:39:04

标签: security kubernetes ssl-certificate 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位于同一群集中,它们需要检查的证书也位于同一群集中。 (请参阅上面的配置)

1 个答案:

答案 0 :(得分:2)

  

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

我认为"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
  

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

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

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

仅当prometheus和ssl_exporter在同一台计算机或同一Pod上运行时,才会使用文字127.0.0.1:9219,因为从prometheus的角度来看,这是127.0.0.1有意义的唯一方法