Kubernetes tarafında sertifika doğrulama hataları genellikle x509: certificate signed by unknown authority veya x509: certificate has expired or is not yet valid mesajıyla karşınıza çıkar. Sorun kubectl istemcisinde, API sunucusunda, Ingress'te ya da Pod içindeki bir uygulamada olabilir.
Belirtiler ve olası nedenler
kubectlkomutları "Unable to connect to the server: x509" hatası verir.- kubeconfig içindeki
certificate-authority-dataalanı eski veya başka bir kümeye aittir. - API sunucusu sertifikasının SAN listesinde bağlandığınız IP veya DNS adı yoktur.
- kubeadm ile kurulan kümede bileşen sertifikalarının süresi dolmuştur.
- Pod içindeki uygulama, kurumsal (özel) bir CA ile imzalı bir servise bağlanır ve bu CA imajda tanımlı değildir.
Adım adım teşhis
Önce sunucunun gerçekte hangi sertifikayı sunduğuna bakın:
openssl s_client -connect API_ADRESI:6443 -showcerts </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates -ext subjectAltName
kubectl config view --raw -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 -d | openssl x509 -noout -subject -dates
kubeadm certs check-expiration
İlk çıktıdaki issuer ile kubeconfig'teki CA uyuşmuyorsa yanlış kubeconfig kullanıyorsunuzdur. SAN eksikse API sunucu sertifikası ilgili adla yeniden üretilmelidir.
Pod içinde özel CA güvenmek
Kurumsal CA sertifikasını bir ConfigMap'e koyup Pod'a bağlayabilirsiniz:
kubectl create configmap kurum-ca --from-file=kurum-ca.crt=./kurum-ca.crt
# Pod spec içinde
volumeMounts:
- name: ca
mountPath: /etc/ssl/certs/kurum-ca.crt
subPath: kurum-ca.crt
volumes:
- name: ca
configMap:
name: kurum-ca
Uygulama çalışma zamanına göre ayrıca SSL_CERT_FILE ya da NODE_EXTRA_CA_CERTS gibi ortam değişkenleri gerekebilir.
Önleme
- Dış erişime açık Ingress için güvenilir bir CA'dan sertifika kullanın, cert-manager ile yenilemeyi otomatikleştirin.
- kubeadm sertifikalarının bitiş tarihlerini düzenli izleyin.
- Doğrulamayı kapatan
--insecure-skip-tls-verifyseçeneğini yalnızca geçici testte kullanın.
Herkese açık servisleriniz için SSL sertifikaları sayfasına, canlı kontrol için SSL Checker aracına bakabilirsiniz. Zincir ve güven deposu sorunlarının temelinde hemen her zaman eksik veya yanlış CA bilgisi yatar; kaynağı bulunca çözüm kısadır.