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 【证书路径】