#!/bin/bash # 获取当前时间的Unix时间戳 currentTimestamp=$(date +%s) kubectl get secrets --all-namespaces -o json | jq -r '.items[] | select(.type == "kubernetes.io/tls") | "\(.metadata.name) \(.metadata.namespace)"' | while read secretName namespace; do # 获取Secret中的tls.crt并解码 tlsCert=$(kubectl get secret "$secretName" -n "$namespace" -o jsonpath='{.data.tls\.crt}' | base64 --decode) # 使用OpenSSL检查证书的过期时间 expirationDate=$(echo "$tlsCert" | openssl x509 -noout -enddate | awk -F'=' '{print $2}') # 将原始日期转换为Unix时间戳 expireTimestamp=$(date -d "$expirationDate" +%s) # 计算剩余秒数 remainingSeconds=$((expireTimestamp - currentTimestamp)) # 输出Prometheus监控指标格式 printf 'secret_expire_time{secret_name="%s",namespace="%s"} %d\n' "$secretName" "$namespace" "$remainingSeconds" done