返回顶部

k8s证书监控--x509-certificate-exporter

k8s证书监控--x509-certificate-exporter

一、下载并解压

下载并解压helm包x509-certificate-exporter-3.10.1.tgz

# 解压
tar -zxvf x509-certificate-exporter-3.10.1.tgz
cd x509-certificate-exporter
# 根据需求修改values.yaml(详见下方修改项建议)
# 创建namespace,也可使用已有namespace,但建议新建一个
kubectl creste namespace ssl-monitor
# 修改完毕后,创建监控服务
helm install x509-certificate-exporter . --namespace ssl-monitor

二、推送镜像到镜像仓库

# 导出镜像包
docker load -i enix-exporter.tar 
# 镜像重命名
docker tag docker.io/enix/x509-certificate-exporter:3.10.1 【harbor地址】/enix/x509-certificate-exporter:3.10.1
# 推送镜像
docker push 【harbor地址】/enix/x509-certificate-exporter:3.10.1

三、根据实际情况修改values.yaml,其他配置可不做修改

image:
  # 修改为harvor地址,例如10.76.153.18:8080
  registry: docker.io
  # 修改为仓库名称
  repository: enix/x509-certificate-exporter
  # 修改为镜像名称,默认是Chart中的appVersion,3.10.1
  tag: ""

secretsExporter:
  # 是否监控TLS Secrets,需要为true,不需要为false,这会创建一个deployment
  enabled: true

hostPathsExporter:
  daemonSets:
    # ds名称,建议以mater、nodes、etcd等名称作为区分
    master:
      # 节点标签,根据实际情况调整,基本也不用修改
      nodeSelector:
        node-role.kubernetes.io/master: ""
      # 容忍,根据实际情况调整,基本也不用修改
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
        operator: Exists
      # 证书所在目录,根据实际情况调整
      watchFiles:
      - /var/lib/kubelet/pki/kubelet-client-current.pem
      - /etc/kubernetes/pki/apiserver.crt
#      - /etc/kubernetes/pki/apiserver-etcd-client.crt
      - /etc/kubernetes/pki/apiserver-kubelet-client.crt
      - /etc/kubernetes/pki/ca.crt
      - /etc/kubernetes/pki/front-proxy-ca.crt
      - /etc/kubernetes/pki/front-proxy-client.crt
#      - /etc/kubernetes/pki/etcd/ca.crt
#      - /etc/kubernetes/pki/etcd/healthcheck-client.crt
#      - /etc/kubernetes/pki/etcd/peer.crt
#      - /etc/kubernetes/pki/etcd/server.crt
      # 配置文件所在目录,根据实际情况调整,也可不做配置
      watchKubeconfFiles:
      - /etc/kubernetes/admin.conf
      - /etc/kubernetes/controller-manager.conf
      - /etc/kubernetes/scheduler.conf

    # 工作节点,根据实际情况调整,可不做配置
    nodes:
      nodeSelector:
        node-role.kubernetes.io/worker: ""
      tolerations:
      - effect: NoExecute
        key: check-domain
        operator: Exists
      watchFiles:
      - /var/lib/kubelet/pki/kubelet-client-current.pem
      - /etc/kubernetes/pki/ca.crt

四、配置监控以及告警

前往prometheus使用(x509_cert_not_after - time()) / 86400是否有结果,有则成功,无则失败

前往告警平台配置告警,有效期低于14天告警

promQL为:(x509_cert_not_after - time()) / 86400 < 14

若需要配置grafana面板,则复制helm包中的x509-certificate-exporter/grafana-dashboards/x509-certificate-exporter.json,通过导入json的形式创建面板即可

五、异常处理

# 检查daemonset是否已创建
kubectl get ds -n ssl-monitor
# 检查pod是否都运行
kubectl get po -n ssl-monitor -owide
# 若运行异常,查看日志,一般都为某证书没读取权限或证书不存在
kubectl logs -n ssl-monitor 【pod name】
# 若证书不存在或目录有误,则调整监控目录
kubectl edit ds -n ssl-monitoring 【ds name】
# 若证书无读取权限,则前往该节点赋权
chmod +r 【证书路径】
posted @ 2024-03-22 17:07  丨君丶陌  阅读(79)  评论(0编辑  收藏  举报