Öncelikle Cert-manager ‘i kubernetes’te dağıtıyoruz.
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v1.6.1/cert-manager.yamlLet’s encrypt bir sandbox ortamına sahip. İlk olarak, API kullanım sınırlaması nedeniyle bir sandbox düzenleyicisi oluşturuyoruz.
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt-staging
namespace: jenkins
spec:
acme:
server: https://acme-staging-v02.api.letsencrypt.org/directory
email: [email protected]
privateKeySecretRef:
name: letsencrypt-staging
solvers:
- http01:
ingress:
class: nginxEmail kısmındaki [email protected] kısmını kendi e-posta adresiniz ile değiştirin. Let’s encrypt sertifika bitiş süreleri yaklaştığında veya tamamen bittiğinde size bir e-posta gönderir.
Namespace kısmında ingress ve servisiniz hangi namespace üzerinde çalışıyorsa onu yazın. Ben Jenkins namespace için SSL kuracağım.
Yukarıdaki komutları bir dosyaya kaydettikten sonra Kubernetes üzerinde ayağa kaldırıyoruz.
kubectl apply -f dosyaadi.yamlissuer.cert-manager.io "letsencrypt-staging" createdŞimdi production issuer kaldırıyoruz
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt-prod
namespace: jenkins
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: [email protected]
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginxEmail kısmındaki [email protected] kısmını kendi e-posta adresiniz ile değiştirin. Let’s encrypt sertifika bitiş süreleri yaklaştığında veya tamamen bittiğinde size bir e-posta gönderir.
Yukarıdaki komutları bir dosyaya kaydettikten sonra Kubernetes üzerinde ayağa kaldırıyoruz.
kubectl apply -f dosyaadi.yamlŞimdi SSL kuracağımız ingress’in annotations kısmına aşağıdaki ifadeleri ekliyoruz.
annotations:
cert-manager.io/issuer: "letsencrypt-staging"
spec:
tls:
- hosts:
- sezer.test
secretName: quickstart-example-tlssezer.test alan adını kendi alan adınız ile değiştirmeyi unutmayın!
Ardından aşağıdaki komutla app namespace üzerindeki sertifikaları kontrol ediyoruz. Ready true olunca prod kısmına geçeceğiz.
kubectl get certificate -n jenkinsNAME READY SECRET AGE
quickstart-example-tls True quickstart-example-tls 3mHarika! Şimdi tekrardan SSL kuracağımız ingress’e gidip annotations kısmına eklediğimiz ifadeyi değiştirip kaydedelim.
annotations:
#cert-manager.io/issuer: "letsencrypt-staging"
cert-manager.io/issuer: "letsencrypt-prod"
Ingress’i tekrar kaydettikten sonra sertifikanın oluşması bir kaç dakikayı bulabilir.
Aşağıdaki komutla detayları görebiliriz.
kubectl describe certificate quickstart-example-tls -n jenkinsReason: CertIssued
Status: True
Type: Ready
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CreateOrder 9m cert-manager Created new ACME order, attempting validation...
Normal DomainVerified 8m cert-manager Domain "sezer.test" verified with "http-01" validation
Normal IssueCert 8m cert-manager Issuing certificate...
Normal CertObtained 7m cert-manager Obtained certificate from ACME server
Normal CertIssued 7m cert-manager Certificate issued SuccessfullyArtık tüm Kubernetes projelerinizde SSL kullanmamak için hiçbir mazeretiniz yok!
