ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

深入Kubernetes证书监控:ssl_exporter的Secret与kubeconfig探测器使用指南

深入Kubernetes证书监控:ssl_exporter的Secret与kubeconfig探测器使用指南 深入Kubernetes证书监控ssl_exporter的Secret与kubeconfig探测器使用指南【免费下载链接】ssl_exporterExports Prometheus metrics for TLS certificates项目地址: https://gitcode.com/gh_mirrors/ss/ssl_exporterssl_exporter 是一款专为 Prometheus 生态打造的TLS 证书监控导出器Exporter它能将证书的有效期、颁发者、序列号等信息转换为标准的 Prometheus 指标。在 Kubernetes 场景中它内置了两个针对性极强的探测器kubernetes探测器读取集群中kubernetes.io/tls类型的 Secret和kubeconfig探测器解析 kubeconfig 文件内嵌的 CA 与客户端证书帮助你提前发现证书过期风险避免服务因证书失效而中断。为什么 Kubernetes 需要专门的证书监控Kubernetes 集群里藏着大量证书Ingress / Gateway 证书通常以kubernetes.io/tls类型的 Secret 存储过期后直接导致域名无法访问节点与组件证书admin.conf、kubelet 证书等嵌在 kubeconfig 或节点文件中过期后会导致节点失联、控制面组件掉线ServiceAccount Token、内部 CA等同样有生命周期。手工检查不现实而 ssl_exporter 把证书还剩多少天过期变成了可查询、可告警的指标配合 Prometheus 与 Grafana 就能实现自动化监控。快速安装与运行从仓库获取源码并构建构建入口见 Makefilegit clone https://gitcode.com/gh_mirrors/ss/ssl_exporter cd ssl_exporter make ./ssl_exporter --config.fileexamples/ssl_exporter.yaml也可以使用 Docker 镜像快速启动docker run -p 9219:9219 ribbybibby/ssl-exporter:latest flags启动后访问http://localhost:9219/probe?target...即可触发探测/metrics路径暴露指标。默认监听地址与路径由--web.listen-address、--web.metrics-path、--web.probe-path三个参数控制完整参数列表可在 README.md 中查看。提示模块行为通过--config.file指定的 YAML 配置文件调整示例文件 examples/ssl_exporter.yaml 已经包含了kubernetes与kubeconfig模块的写法可直接参考。用 kubernetes 探测器监控集群中的 TLS Secretkubernetes探测器会自动列出集群中所有kubernetes.io/tls类型的 Secret并导出其中每个证书的有效期指标。核心指标指标含义ssl_kubernetes_cert_not_after证书失效时间Unix 时间戳ssl_kubernetes_cert_not_before证书生效时间Unix 时间戳指标自带丰富的标签namespace、secret、key、cn、issuer_cn、serial_no、dnsnames等定义见 prober/metrics.go可以按命名空间、Secret 名称灵活过滤和告警。目标格式与通配符目标格式为namespace/name两部分均支持通配符匹配实现见 prober/kubernetes.gocurl localhost:9219/probe?modulekubernetestargetkube-system/my-tls-secret # 精确匹配 curl localhost:9219/probe?modulekubernetestarget*/* # 全集群所有 TLS Secret一条*/*就能把整个集群的 TLS 证书纳入监控非常省事。凭证从哪里来探测器按以下优先级获取集群访问凭证newKubeClient逻辑见 prober/kubernetes.go模块配置中显式指定的kubeconfig路径环境变量$KUBECONFIG默认配置文件$HOME/.kube/config在集群内运行时自动使用 Pod 的 ServiceAccountin-cluster 凭证。也就是说把它部署成 Deployment 后只需给 ServiceAccount 授予只读列出 Secrets的权限即可无需挂载任何文件。Prometheus 抓取配置参考 examples/example.prometheus.yml 中的ssl-kubernetes-secrets任务- job_name: ssl-kubernetes-secrets metrics_path: /probe params: module: [kubernetes] target: [*/*] static_configs: - targets: [127.0.0.1:9219]用 kubeconfig 探测器监控节点 kubeconfig 证书kubeconfig探测器实现见 prober/kubeconfig.go会解析指定的 kubeconfig 文件提取其中的certificate-authority(-data)与client-certificate(-data)并导出ssl_kubeconfig_cert_not_after/ssl_kubeconfig_cert_not_before标签包括kubeconfig文件路径、name、type区分cluster还是user中的证书直接对本地文件发起探测即可curl localhost:9219/probe?modulekubeconfigtarget/etc/kubernetes/admin.conf经典玩法DaemonSet 监控所有节点README 推荐的最佳实践是把 ssl_exporter 以DaemonSet形式部署每个节点一个实例然后让 Prometheus 按节点抓取各自本机的 kubeconfig 证书scrape_configs: - job_name: ssl-kubernetes-kubeconfig metrics_path: /probe params: module: [kubeconfig] target: [/etc/kubernetes/admin.conf] kubernetes_sd_configs: - role: node relabel_configs: - source_labels: [__address__] regex: ^(.*):(.*)$ target_label: __address__ replacement: ${1}:9219这样每个节点的 kubelet / admin 证书过期时间都会按instance标签分别上报节点证书临期时可精准告警到对应节点。实用告警查询语句拿到指标后配合 PromQL 就能实现证书临期告警。以下语句整理自 README.md 的示例查询# 集群 Secret 中 7 天内过期的证书 ssl_kubernetes_cert_not_after - time() 86400 * 7 # 任意来源 7 天内过期的证书含通配符证书 ssl_cert_not_after{cn~\*.*} - time() 86400 * 7 # 探测失败的目标排查权限、网络、Secret 不存在等问题 ssl_probe_success 0建议把ssl_probe_success 0也加入告警——它意味着监控本身出问题了与证书临期同样重要。总结探测器适用场景核心指标典型部署方式kubernetes集群内 Ingress 等 TLS Secretssl_kubernetes_cert_not_afterDeployment ServiceAccountkubeconfig节点 kubeconfig / admin.conf 证书ssl_kubeconfig_cert_not_afterDaemonSetssl_exporter 让 Kubernetes 证书监控变得极其简单kubernetes 探测器一条*/*覆盖全集群 TLS Secretkubeconfig 探测器配合 DaemonSet 覆盖每个节点再叠加 7 天临期告警就能把证书悄悄过期这类隐性故障消灭在发生之前。更多指标标签说明与 Grafana 面板可参考 README.md 与 contrib/grafana/dashboard.json。【免费下载链接】ssl_exporterExports Prometheus metrics for TLS certificates项目地址: https://gitcode.com/gh_mirrors/ss/ssl_exporter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表