Kubernetes’te bir ACME SSL sertifikası yüklemek, cert-manager gibi olgun araçlar ve ticari CA’ların geniş desteği sayesinde artık standartlaştırılmış ve esnek bir süreçtir. İster NGINX Ingress, Traefik veya başka bir ağ geçidinin arkasında üretim iş yükleri çalıştırıyor olun, güvenli HTTPS’yi tam kontrolle otomatikleştirebilirsiniz.

Bu kılavuz size cert-manager kullanarak Kubernetes’te bir ACME SSL sertifikasının nasıl kurulacağını gösterecektir. Kurulum, Harici Hesap Bağlama (EAB) ile bir sertifika veren ayarlama ve giriş hizmetlerinizi korumak için sertifika verme konularını ele alacağız.
İhtiyacınız Olanlar
Dalmadan önce, emin olun:
- Çalışan bir Kubernetes kümeniz var (v1.23+ önerilir)
kubectlyapılandırıldı ve çalışıyor- Giriş denetleyicinize erişiminiz var (örn. NGINX, Traefik)
- Etki alanınız giriş denetleyicinizin genel IP’sine işaret eder
- ACME uyumlu CA’nızdan EAB kimlik bilgilerine sahipsiniz:
- ACME Dizin URL’si (örn. https://acme.example.com/v2/DV)
- EAB Anahtar Tanımlayıcı (KID)
- EAB HMAC Anahtarı
Not: https://acme.example.com/v2/DV bu kılavuz boyunca yer tutucu ACME dizin URL’si olarak kullanılmıştır. Bunu sertifika yetkilinizden gelen gerçek uç nokta ile değiştirin.
Adım 1 – cert-manager’ı yükleyin
cert-manager en yaygın kullanılan Kubernetes-yerel ACME istemcisidir. Sertifika verme ve yenilemeyi yöneten bir denetleyici olarak çalışır.
Helm aracılığıyla yükleyin (üretim için tercih edilir):
kubectl create namespace cert-manager
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--version v1.14.4 \
--set installCRDs=true
Birkaç saniye bekleyin ve tüm kapsüllerin çalıştığını onaylayın:
kubectl get pods -n cert-manager
Üç pod görmelisiniz: cert-manager, cert-manager-webhook ve cert-manager-cainjector.
Adım 2 – EAB Kimlik Bilgileri için Kubernetes Secret Oluşturun
EAB anahtarınızı güvenli bir şekilde saklamak için bir Kubernetes sırrı oluşturun:
kubectl create secret generic acme-eab-secret \
--namespace cert-manager \
--from-literal=eab-kid="YOUR_EAB_KID" \
--from-literal=eab-hmac-key="YOUR_EAB_HMAC_KEY"
Gerçek kimlik bilgilerinizle değiştirin. Kopyala-yapıştır boşluklarından kaçının.
Adım 3 – Bir ClusterIssuer veya Issuer tanımlayın
Şimdi, EAB kimlik bilgilerini kullanarak cert-manager’ı ACME CA’nıza bağlayan bir ClusterIssuer (tüm ad alanları için) veya Issuer (tek ad alanı) kaynağı oluşturun.
İşte örnek bir ClusterIssuer YAML:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: acme-issuer
spec:
acme:
server: https://your.acme-server.com/v2/DV
email: [email protected]
privateKeySecretRef:
name: acme-private-key
externalAccountBinding:
keyID: YOUR_EAB_KID
keySecretRef:
name: acme-eab-secret
key: eab-hmac-key
solvers:
- http01:
ingress:
class: nginx
Uygula:
kubectl apply -f clusterissuer.yaml
ingress.class: nginx yerine traefik, nginx-internal veya ingress sınıfınız ne ise onu yazın. Bunu ingress denetleyici belgelerinizde bulabilirsiniz.
Adım 4 – Bir Sertifika Kaynağı Oluşturun
ClusterIssuer’ınız hazır olduğunda, cert-manager’a hangi etki alanını güvence altına alacağını söyleyen bir Sertifika kaynağı oluşturun. İşte bir örnek:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-ssl-cert
namespace: default
spec:
secretName: my-ssl-cert-tls
issuerRef:
name: acme-issuer
kind: ClusterIssuer
commonName: yourdomain.com
dnsNames:
- yourdomain.com
- www.yourdomain.com
Uygula:
kubectl apply -f certificate.yaml
cert-manager, sertifika vereni kullanacak, meydan okumayı giriş yoluyla çözecek ve verilen sertifikayı bir Kubernetes TLS sırrı olarak saklayacaktır.
Adım 5 – Girişinizde Sertifikaya Referans Verin
Oluşturulan sertifikayı kullanmak için giriş kuralınızı güncelleyin:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
namespace: default
annotations:
cert-manager.io/cluster-issuer: acme-issuer
spec:
tls:
- hosts:
- yourdomain.com
- www.yourdomain.com
secretName: my-ssl-cert-tls
rules:
- host: yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: your-service
port:
number: 80
Uygula:
kubectl apply -f ingress.yaml
cert-manager ek açıklamayı algıladığında, ACME zorluğunu çözmeye başlayacak ve sertifikanızı verecektir.
Adım 6 – Sertifika Doğrulama ve Otomatik Yenileme
Her şeyin çalıştığını doğrulamak için:
kubectl describe certificate my-ssl-cert
Başarıyla verilen Sertifikayı arayın.
Yenileme kurulumunu kontrol etmek için çalıştırın:
kubectl get certificaterequests
cert-manager, sürenin dolmasından ~30 gün önce otomatik olarak yenileme işlemini gerçekleştirir. Bu şekilde bir yenileme simülasyonu yapabilirsiniz:
kubectl cert-manager renew my-ssl-cert
Sık Sorulan Sorular
Kubernetes’te ACME SSL kurulumu, özellikle giriş denetleyicileri, Sırlar ve DNS kayıtlarıyla uğraşırken biraz soyut gelebilir. Aşağıda, ister cert-manager ister alternatif bir kurulum kullanıyor olun, Kubernetes ortamında ACME sertifikalarını yüklerken geliştiricilerin karşılaştığı bazı yaygın soruları yanıtlıyoruz.
HTTP-01 yerine DNS-01 kullanabilir miyim?
Evet, cert-manager Cloudflare, AWS ve Google Cloud DNS gibi sağlayıcılarla DNS doğrulamasını destekler. Port 80’i göstermiyorsanız bunu kullanın.
cert-manager üretime hazır mı?
Kesinlikle. İşletmelerde ve genel bulutlarda büyük Kubernetes kümeleri için SSL’ye güç verir.
Kubernetes’te ACME ile joker sertifika kullanabilir miyim?
Evet, ancak joker sertifikalar DNS-01 doğrulaması gerektirir, bu da HTTP zorluklarını kullanmak yerine DNS kayıtlarını güncellemeyi içerir. DNS sağlayıcınızın otomasyonu (API aracılığıyla) desteklediğini onaylayın ve dns01 çözücüsünü cert-manager kurulumunuzda buna göre yapılandırın.
Son Sözler
Artık cert-manager ve ACME uyumlu bir sertifika yetkilisi kullanarak Kubernetes’te bir ACME SSL sertifikasının nasıl kurulacağını biliyorsunuz. Bu kurulum tamamen otomatiktir ve modern Kubernetes ortamları için ölçeklenebilir. Kümenizden ayrılmadan güvenli HTTPS, otomatik yenileme ve Ingress ile sorunsuz entegrasyon elde edersiniz.
Bugün SSL Dragon’dan sipariş vererek SSL Sertifikalarında %10 indirimden yararlanın!
Hızlı düzenleme, güçlü şifreleme, %99,99 tarayıcı güvenilirliği, özel destek ve 25 günlük para iade garantisi. Kupon kodu: SAVE10

