@@ -38,6 +38,7 @@ usage() {
38
38
39
39
Modes are:
40
40
apiserver Not for kubectl, should be used for each apiserver independently
41
+ apicert Check the apicert expiration date
41
42
nodes Check for active nodes
42
43
daemonsets Check for daemonsets readiness
43
44
deployments Check for deployments availability
@@ -150,6 +151,28 @@ mode_apiserver() {
150
151
fi
151
152
}
152
153
154
+ mode_apicert () {
155
+ if [ -z " $APISERVER " ]; then
156
+ die " Apiserver URL should be defined in this mode"
157
+ fi
158
+ APICERT=$( echo " $APISERVER " | awk -F " //" ' { print $2 }' | awk -F " :" ' { print $1 }' )
159
+ APICERTDATE=$( echo | openssl s_client -connect " $APICERT " :6443 2> /dev/null | openssl x509 -noout -dates | grep notAfter | sed -e ' s#notAfter=##' )
160
+ a=$( date -d " $APICERTDATE " +%s)
161
+ b=$( date +%s)
162
+ c=$(( a- b))
163
+ d=$(( c/ 3600 / 24 ))
164
+ echo " APICERT expires in $d days"
165
+ if [ " $d " -gt " $WARN " ]; then
166
+ echo " APICERT is OK"
167
+ elif [ $d -le $WARN ] && [ $d -gt $CRIT ]; then
168
+ echo " APICERT is in WARN"
169
+ EXITCODE=1
170
+ elif [ $d -le $CRIT ]; then
171
+ echo " APICERT is in CRIT"
172
+ EXITCODE=2
173
+ fi
174
+ }
175
+
153
176
mode_nodes () {
154
177
data=" $( getJSON " api/v1/nodes" ) "
155
178
[ $? -gt 0 ] && die " $data "
@@ -723,6 +746,7 @@ mode_jobs() {
723
746
724
747
case " $MODE " in
725
748
(apiserver) mode_apiserver ;;
749
+ (apicert) mode_apicert ;;
726
750
(daemonsets) mode_daemonsets ;;
727
751
(deployments) mode_deployments ;;
728
752
(nodes) mode_nodes ;;
0 commit comments