ToB企服应用市场:ToB评测及商务社交产业平台
标题:
监控Kubernetes集群证书过期时间的三种方案
[打印本页]
作者:
东湖之滨
时间:
2022-12-14 19:19
标题:
监控Kubernetes集群证书过期时间的三种方案
前言
Kubernetes 中大量用到了证书, 比如 ca证书、以及 kubelet、apiserver、proxy、etcd等组件,还有 kubeconfig 文件。
如果证书过期,轻则无法登录 Kubernetes 集群,重则整个集群异常。
为了解决证书过期的问题,一般有以下几种方式:
大幅延长证书有效期,短则 10年,长则 100 年;
证书快过期是自动轮换,如 Rancher 的 K3s,RKE2 就采用这种方式;
增加证书过期的监控,便于提早发现证书过期问题并人工介入
本次主要介绍关于 Kubernetes 集群证书过期的监控,这里提供 3 种监控方案:
使用
Blackbox Exporter
通过 Probe 监控 Kubernetes apiserver 证书过期时间;
使用
kube-prometheus-stack
通过 apiserver 和 kubelet 组件监控获取相关证书过期时间;
使用
enix 的 x509-certificate-exporter
监控集群所有node的 /etc/kubernetes/pki 和 /var/lib/kubelet 下的证书以及 kubeconfig 文件
方案一: Blackbox Exporter 监控 Kubernetes apiserver 证书过期时间
Blackbox Exporter 用于探测 HTTPS、HTTP、TCP、DNS、ICMP 和 grpc 等 Endpoint。在你定义 Endpoint 后,Blackbox Exporter 会生成指标,可以使用 Grafana 等工具进行可视化。Blackbox Exporter 最重要的功能之一是测量 Endpoint 的可用性。
当然, Blackbox Exporter 探测 HTTPS 后就可以获取到证书的相关信息, 就是利用这种方式实现对 Kubernetes apiserver 证书过期时间的监控.
配置步骤
调整 Blackbox Exporter 的配置, 增加 insecure_tls_verify: true, 如下:
重启 blackbox exporter: kubectl rollout restart deploy ...
增加对 Kubernetes APIServer 内部端点
https://kubernetes.default.svc.cluster.local/readyz
的监控.
如果你没有使用 Prometheus Operator, 使用的是原生的 Prometheus, 则需要修改 Prometheus 配置文件的 configmap 或 secret, 添加 scrape config, 示例如下:
如果在使用 Prometheus Operator, 则可以增加如下 Probe CRD, Prometheus Operator 会自动将其转换并 merge 到 Prometheus 中.
apiVersion: monitoring.coreos.com/v1
kind: Probe
metadata:
name: kubernetes-apiserver
spec:
interval: 60s
module: http_2xx
prober:
path: /probe
url: monitor-prometheus-blackbox-exporter.default.svc.cluster.local:9115
targets:
staticConfig:
static:
- https://kubernetes.default.svc.cluster.local/readyz
复制代码
最后, 可以增加 Prometheus 告警 Rule, 这里就直接用 Prometheus Operator 创建 PrometheusRule CRD 做示例了, 示例如下:
[code]apiVersion: monitoring.coreos.com/v1kind: PrometheusRulemetadata: name: prometheus-blackbox-exporterspec: groups: - name: prometheus-blackbox-exporter rules: - alert: BlackboxSslCertificateWillExpireSoon expr: probe_ssl_earliest_cert_expiry - time() < 86400 * 30 for: 0m labels: severity: warning - alert: BlackboxSslCertificateWillExpireSoon expr: probe_ssl_earliest_cert_expiry - time() < 86400 * 14 for: 0m labels: severity: critical - alert: BlackboxSslCertificateExpired annotations: description: |- SSL certificate has expired already VALUE = {{ $value }} LABELS = {{ $labels }} summary: SSL certificate expired (instance {{ $labels.instance }}) expr: probe_ssl_earliest_cert_expiry - time()
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4