前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >介绍一个小工具:SSL-exporter

介绍一个小工具:SSL-exporter

作者头像
崔秀龙
发布2021-01-28 18:03:33
1.2K0
发布2021-01-28 18:03:33
举报
文章被收录于专栏:伪架构师伪架构师

Kubeadm 安装时的证书有效期设置为 1 年,虽说有 sealos 这样的不知名安装器以及各种方案来更新证书,但是对于像我一样经常跟不知来源的 Kubernetes 集群打交道的人来说,这个有效期就是达摩什么的利剑,不一定什么时候会砍到脖子上。如果能用 Prometheus 对证书有效期进行监控或者告警,就能更好地保护好自己的脖子了,ssl-exporter 就是这么个有趣的项目。

ssl-exporter 是个 Prometheus Exporter,能提供多种针对 SSL 的检测手段,包括:https 证书生效/失效时间、文件证书生效/失效时间,OCSP 等相关指标。下面用 API Server 证书检测来验证这一功能:

首先进行部署:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  labels:
    name: ssl-exporter
  name: ssl-exporter
spec:
  ports:
    - name: ssl-exporter
      protocol: TCP
      port: 9219
      targetPort: 9219
  selector:
    app: ssl-exporter
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ssl-exporter
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ssl-exporter
  template:
    metadata:
      name: ssl-exporter
      labels:
        app: ssl-exporter
    spec:
      initContainers:
        # Install kube ca cert as a root CA
        - name: ca
          image: alpine
          command:
            - sh
            - -c
            - |
              set -e
              apk add --update ca-certificates
              cp /var/run/secrets/kubernetes.io/serviceaccount/ca.crt /usr/local/share/ca-certificates/kube-ca.crt
              update-ca-certificates
              cp /etc/ssl/certs/* /ssl-certs
          volumeMounts:
            - name: ssl-certs
              mountPath: /ssl-certs
      containers:
        - name: ssl-exporter
          image: ribbybibby/ssl-exporter:v0.6.0
          ports:
            - name: tcp
              containerPort: 9219
          volumeMounts:
            - name: ssl-certs
              mountPath: /etc/ssl/certs
      volumes:
        - name: ssl-certs
          emptyDir: {}

上面的 YAML 部署了一个 Deployment 和 Service,在 9219 端口上提供 Exporter 服务。

接下来在 Prometheus 中配置一下抓取 Kubernetes 服务的内容:

代码语言:javascript
复制
- job_name: ssl-exporter
  metrics_path: /probe
  static_configs:
  - targets:
    - kubernetes.default.svc:443
  relabel_configs:
  - source_labels: [__address__]
    target_label: __param_target
  - source_labels: [__param_target]
    target_label: instance
  - target_label: __address__
    replacement: ssl-exporter:9219

接下来就可以进行查询了,查询语句:(ssl_cert_not_after-time())/3600/24,这个表达式查询各个目标的过期时间和当前时间的差。执行查询获取到过期天数,查询结果是 349 天。同样的表达式,复制到 Alertmanager 中,就可以及时的获取到证书的过期时间了。

相关链接

  • ssl-exporter: https://github.com/ribbybibby/ssl_exporter
  • ssl-exporter 示例部署和配置: https://github.com/ribbybibby/ssl_exporter/issues/12#issuecomment-562966945
  • sealos: https://github.com/fanux/sealos
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 伪架构师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 相关链接
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档