cert-manager, Kubernetes kümesinde sertifikaları birinci sınıf kaynak olarak yöneten ve süresi dolmadan önce yenileyen bir denetleyicidir. Sertifikayı bir YAML nesnesi olarak tanımlarsınız; gerisini denetleyici halleder.
Temel bileşenler
- Issuer / ClusterIssuer: sertifikayı kimin vereceğini belirtir (ACME, CA, Vault vb.). ClusterIssuer tüm namespace'lerde kullanılabilir.
- Certificate: istenen alan adlarını ve sonucun yazılacağı Secret adını tanımlar.
- Secret: özel anahtar ve sertifikanın saklandığı yer; Ingress buradan okur.
Let's Encrypt ile ClusterIssuer örneği
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: admin@example.com
privateKeySecretRef:
name: letsencrypt-account-key
solvers:
- http01:
ingress:
ingressClassName: nginx
Ingress üzerinden otomatik istek
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts: [app.example.com]
secretName: app-example-tls
Bu anotasyonla cert-manager, Ingress için Certificate nesnesini kendisi oluşturur. Durumu şu komutlarla izleyin:
kubectl get certificate -A
kubectl describe certificate app-example-tls
kubectl get challenges -A
Sık sorunlar
- HTTP-01 doğrulaması, 80 numaralı portun dışarıdan erişilebilir olmamasından takılır.
- Wildcard için HTTP-01 kullanılamaz; DNS-01 çözücü gerekir.
- Staging ile production issuer'ın karıştırılması tarayıcıda güvensiz zincir hatası verir.
Yenileme zamanı Certificate üzerindeki renewBefore alanıyla ayarlanabilir. Kurumsal güven gereken ortamlarda ticari bir sertifikayı Secret olarak içe aktarmak da mümkündür; seçenekler için SSL ürünlerimize göz atın.
Üretime geçmeden önce kontrol listesi
- Önce staging ClusterIssuer ile bir test Certificate oluşturup akışın çalıştığını görün.
- cert-manager sürümünü ve Kubernetes sürüm uyumluluğunu resmi dokümantasyondan kontrol edin.
- Secret'lara erişimi RBAC ile kısıtlayın; özel anahtar orada durur.
- cert-manager'ın Prometheus metriklerini izleyin ve bitişe yakın Certificate'lar için alarm kurun.