vi k8s-certs-check.sh
CODE
#!/bin/bash
# Eşik gün sayısı
THRESHOLD_DAYS=35
NEED_RENEWAL=false
LOG_FILE="$(dirname "$0")/cert_renewal.log"
current_date=$(date '+%Y-%m-%d %H:%M:%S')
sudo kubeadm certs check-expiration > /tmp/cert_check.txt
# İlk veri satırını ayıklamak için 'CERTIFICATE' başlığını bul
first_data_line=$(grep -A 100 'CERTIFICATE' /tmp/cert_check.txt | tail -n +2 | head -n 1)
# Gün sayısını ayıkla
days=$(echo "$first_data_line" | awk '{print $(NF-2)}' | grep -Eo '[0-9]+')
echo "Gün sayısı: $days"
# Gün sayısının eşikten az olup olmadığını kontrol et
if [[ -n "$days" && "$days" -lt "$THRESHOLD_DAYS" ]]; then
echo "Sertifikanın süresi $THRESHOLD_DAYS günden az kalmış: $first_data_line"
NEED_RENEWAL=true
fi
if [[ -n "$days" && "$days" -lt "$THRESHOLD_DAYS" ]]; then
echo "[$current_date] Sertifika süresi az kaldı. Yenileme işlemi başlatılıyor..." | tee -a "$LOG_FILE"
sudo kubeadm certs renew all
sudo systemctl restart kubelet
echo -e "\033[0;32m[$current_date] Yenileme işlemi tamamlandı! Sertifikaların süresi tekrar kontrol ediliyor...\033[0m" | tee -a "$LOG_FILE"
sudo kubeadm certs check-expiration | tee -a "$LOG_FILE"
else
echo -e "\033[0;32m[$current_date] Sertifikaların süresi yeterli, yenilemeye gerek yok.\033[0m" | tee -a "$LOG_FILE"
fi
CODE
sudo chmod +x k8s-certs-check.sh
./k8s-certs-check.sh
CODE
Scripti çalıştırdığınız dizine cert_renewal.log
dosyasını ekler ve buradan çalıştırma loglarını izleyebilirsiniz.
Dilerseniz scriptin belirli bir zamanda ya da zaman periyodunda çalıştırılmasını sağlayabilirsiniz. Bunun için cron kullanılabilir.
Açılan dosyanın içine alttaki satırı ekleyiniz.
59 23 1 * * /path/k8s-certs-check.sh
CODE
Örnek kulllanımda her ayın 1. günü saat 23:59 da script çalışacaktır.