kubeadm 安裝時的證書有效期設定為 1 年,雖說有 sealos 這樣的不知名安裝器以及各種方案來更新證書,但是對於像我一樣經常跟不知**的 kubernetes 集群打交道的人來說,這個有效期就是達摩什麼的利劍,不一定什麼時候會砍到脖子上。如果能用 prometheus 對證書有效期進行監控或者告警,就能更好地保護好自己的脖子了,ssl-exporter 就是這麼個有趣的專案。
ssl-exporter 是個 prometheus exporter,能提供多種針對 ssl 的檢測手段,包括:https 證書生效/失效時間、檔案證書生效/失效時間,ocsp 等相關指標。下面用 api server 證書檢測來驗證這一功能:
首先進行部署:
apiversion: v1
kind: service
metadata:
labels:
name: ssl-exporter
name: ssl-exporter
spec:
ports:
- name: ssl-exporter
protocol: tcp
port: 9219
targetport: 9219
selector:
---kind: deployment
metadata:
name: ssl-exporter
spec:
replicas: 1
selector:
matchlabels:
template:
metadata:
name: ssl-exporter
labels:
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 服務的內容:
- 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 中,就可以及時的獲取到證書的過期時間了。 介紹乙個小工具 Linqer
這些天寫linq挺煩人的,就上網搜搜可有什麼好的sql轉linq的工具,咦,馬上就看上了linqer。哈哈,介紹一下使用方法吧 第一步 執行這個神馬檔案。第二步 指定乙個路徑給它。他會生成乙個linqer.exe可執行的檔案。第三步 執行這個exe檔案,點選add按鈕,第四步 在彈出的add介面中,...
diy乙個小工具
仔細分析任務,其實關鍵點就是環境變數,建立乙個新程序,然後把環境變數塊傳遞進去,變可完成任務,環境塊是乙個string,name value 而且對於unicode 和ansi 的對待方式不同,如果是unicode,createprocess時要傳遞 dword dwcreationflags這個引...
乙個讀取properties的小工具
乙個讀取properties的小工具 resourcebundle.getbundle weixin 通過resourcebundle,我們需要訪問位於 web inf classes目錄下的乙個字尾名為properties的文字型別檔案,從裡面讀取我們需要的值。springboot我們可以直接放預...