Kubernetes üzerinde çalışan uygulamalarda TLS sertifikalarını manuel yönetmek, hem zaman alan hem de hata yapmaya açık bir süreç. İşte tam bu noktada devreye giren cert-manager, sertifika üretme, yenileme ve doğrulama işlemlerini otomatikleştirerek platformu çok daha güvenli ve sürdürülebilir hale getiriyor.
Aşağıdaki rehber, cert-manager kurulumunu baştan sona açık ve pratik bir şekilde anlatır.

Önkoşullar
Başlamadan önce ortamda aşağıdaki gereksinimlerin karşılanmış olması önerilir:
- Kubernetes v1.24+ (önerilir)
kubectlyüklü- Küme üzerinde
cluster-adminyetkisi - İnternet erişimi (Jetstack ve Let’s Encrypt için gerekli)
- (Opsiyonel) NGINX Ingress Controller veya Gateway API
Namespace Oluşturma
kubectl create namespace cert-manager
Namespace zaten mevcutsa bu adım atlanabilir.
Kurulum Yöntemleri
1) Helm ile Kurulum
Helm, CRD yönetimini ve bileşen güncellemelerini daha düzenli hale getirdiği için en önerilen yöntemdir.
Resmi dökümantasyon: 👉 https://cert-manager.io/docs/installation/helm/
2) Kubectl Apply ile Manuel Kurulum
Helm kullanmak istemeyenler için cert-manager bileşenlerini doğrudan YAML dosyalarıyla uygulamak mümkündür.
Örnek kurulum adımları:
Namespace
kubectl apply -f 00-namespace.yaml
CRD’ler
kubectl apply -f 01-crd.yaml
Secret (Cloudflare gibi sağlayıcılar için)
kubectl apply -f 01-secret.yaml
Bu dosyadaki gizli bilgiler maskelenmiştir. Ortamınıza uygun değerleri girmeniz gerekir.
cert-manager Bileşenleri
kubectl apply -f 02-certmanager.yaml
Kurulumu Doğrulama
kubectl get pods -n cert-manager
Görülmesi gereken pod’lar:
cert-managercert-manager-cainjectorcert-manager-webhook
Opsiyonel doğrulama:
cmctl check api
Let’s Encrypt ile ACME Yapılandırması
Cloudflare (DNS-01 Challenge)
Cloudflare kullanıyorsanız, minimum yetkiye sahip bir API Token oluşturmanız önerilir.
Secret Tanımı
apiVersion: v1
kind: Secret
metadata:
name: cloudflare-api-token-secret
namespace: cert-manager
type: Opaque
stringData:
api-token: REDACTED
ClusterIssuer (Production)
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
email: admin@tarsolution.com
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-prod-account-key
solvers:
- dns01:
cloudflare:
apiTokenSecretRef:
name: cloudflare-api-token-secret
key: api-token
Wildcard Sertifika Örneği
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: wildcard-tarsolution-com
namespace: default
spec:
secretName: wildcard-tarsolution-com-tls
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- tarsolution.com
- "*.tarsolution.com"
HTTP-01 (NGINX Ingress)
DNS desteklemeyen ortamlarda HTTP-01 challenge kullanılabilir.
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt-http01
namespace: default
spec:
acme:
email: admin@tarsolution.com
server: https://acme-staging-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-http01-account-key
solvers:
- http01:
ingress:
ingressClassName: nginx
En İyi Uygulamalar
- Önce staging ortamında test edin
- Cloudflare için minimum yetkili token oluşturun
ClusterIssueryerineIssuerkullanarak kapsamı namespace’e özel yapabilirsiniz- Sertifika sürelerini Prometheus + Alertmanager ile takip edin
Sorun Giderme
Sık karşılaşılan sorunlar ve kontroller:
- DNS-01: Token yetkisi, zone seçimi, DNS propagasyonu
- HTTP-01:
.well-knownyolu, ingressClassName, port yönlendirmeleri kubectl describe certificate <name>ile hata analizi
Kaldırma İşlemi
Manuel kurulum yaptıysanız:
kubectl delete -f 02-certmanager.yaml
kubectl delete -f 01-secret.yaml
kubectl delete -f 01-crd.yaml
kubectl delete -f 00-namespace.yaml
Helm üzerinden kurulum yaptıysanız:
helm uninstall cert-manager -n cert-manager
Kurulumu adım adım uygulayarak Kubernetes ortamınızda güvenilir ve otomatik bir TLS yönetimi sağlayabilirsiniz.
Kaynak: