Nginx Ingress, Cert-Manager ve Let’s Encrypt ile HTTPS Güvenliği
Merhaba! Fatih Soysal olarak, bu makalede Nginx Ingress Controller, Cert-Manager ve Let’s Encrypt kullanarak Kubernetes kümenizdeki uygulamalarınız için kolayca HTTPS güvenliği sağlamanın adımlarını detaylı bir şekilde açıklayacağım. Bu güçlü araçlar sayesinde, karmaşık SSL sertifika yönetimini otomatikleştirecek ve sitenizi güvence altına alacaksınız. İşte adım adım yapmanız gerekenler:
Gereksinimler
Başlamadan önce aşağıdaki araçların kurulu ve çalışır durumda olduğundan emin olun:
- Kubernetes kümesi
- kubectl
- Helm
Bu araçları kurmak için ilgili belgelerine başvurabilirsiniz. Kubernetes kurulumu ve yönetimi biraz karmaşık olabilir, bu yüzden kaynaklara göz atmanızı tavsiye ederim. Kubernetes Resmi Sitesi iyi bir başlangıç noktasıdır.
Nginx Ingress Controller Kurulumu
İlk adımımız, Nginx Ingress Controller’ı Kubernetes kümemize kurmak. Bunun için Helm kullanacağız. Aşağıdaki komutu çalıştırın:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install nginx-ingress ingress-nginx/ingress-nginx
Bu komut, Nginx Ingress Controller’ı kuracak ve kümenizde bir Ingress resource’u oluşturacaktır. Kurulum tamamlandıktan sonra, Ingress Controller’ın doğru çalıştığından emin olmak için durumunu kontrol etmeniz önemlidir. Hata olması durumunda, logları inceleyerek sorunun kaynağını belirleyebilirsiniz.
Cert-Manager Kurulumu
Şimdi, Let’s Encrypt ile otomatik SSL sertifika yönetimi için Cert-Manager’ı kuracağız. Yine Helm kullanacağız:
helm repo add jetstack https://charts.jetstack.io
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --set installCRDs=true
Bu işlem, Cert-Manager’ı ve gerekli CRD’leri (Custom Resource Definitions) kuracaktır. Kurulumun başarılı olduğundan emin olmak için kubectl get pods -n cert-manager komutunu kullanarak podların durumunu kontrol edin. Tüm podların “Running” durumunda olması beklenir. Eğer sorunlar yaşarsanız, logları detaylı bir şekilde inceleyin. Cert-Manager oldukça güçlü bir araçtır ve doğru yapılandırılması önemlidir.
Let’s Encrypt ile SSL Sertifikası Elde Etme
Cert-Manager, Let’s Encrypt ile otomatik olarak SSL sertifikaları sağlayabilir. Bunun için, uygulamanız için bir Issuer ve bir Certificate resource’u tanımlamanız gerekir. Aşağıdaki örnekte, bir Issuer ve Certificate tanımlanmıştır:
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt-prod
spec:
acme:
email: sizin.email@adresiniz.com
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-prod-private-key
solvers:
- http01:
ingress:
class: nginx
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-app-cert
spec:
dnsNames:
- fatihsoysal.com #Sizin domain adınız
issuerRef:
name: letsencrypt-prod
kind: Issuer
secretName: my-app-secret
Bu yapılandırmada, dnsNames alanına kendi domain adınızı eklemeniz gerekmektedir. secretName alanında belirtilen secret’e sertifika ve anahtar kaydedilecektir. Bu dosyayı kubectl apply -f certificate.yaml komutu ile uygulayın. Cert-Manager, otomatik olarak Let’s Encrypt’ten sertifika talep edecek ve Ingress Controller’a yönlendirecektir. Bu işlem birkaç dakika sürebilir.
Ingress Resource Tanımlama
Son olarak, uygulamanız için bir Ingress resource’u tanımlayarak trafiği HTTPS üzerinden yönlendirebilirsiniz. Aşağıdaki örnekte, my-app-cert sertifikasını kullanan bir Ingress tanımlanmıştır:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
spec:
tls:
- hosts:
- fatihsoysal.com #Sizin domain adınız
secretName: my-app-secret
rules:
- host: fatihsoysal.com #Sizin domain adınız
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app-service
port:
number: 80
Bu yapılandırmada, hosts ve secretName alanlarını kendi değerlerinizle değiştirmeyi unutmayın. my-app-service uygulamanızın Kubernetes Service adıdır. Bu dosyayı da kubectl apply -f ingress.yaml komutu ile uygulayın. Bundan sonra, uygulamanıza https://fatihsoysal.com adresinden güvenli bir şekilde erişebilirsiniz.
Sonuç
Bu makalede, Nginx Ingress Controller, Cert-Manager ve Let’s Encrypt kullanarak Kubernetes kümenizdeki uygulamalarınız için HTTPS güvenliği sağlamanın kolay ve otomatik bir yolunu gösterdim. Bu süreç, karmaşık SSL sertifika yönetimini basitleştirir ve güvenliğinizi artırır. Umarım bu makale size yardımcı olmuştur. Daha fazla bilgi için fatihsoysal.com sitesini ziyaret edebilirsiniz. Herhangi bir sorunuz varsa, yorumlarda sorabilirsiniz.
#Etiketler: Nginx Ingress Controller, Cert-Manager, Let’s Encrypt, HTTPS, Kubernetes, SSL, Sertifika, Güvenlik, Otomatik Sertifika, Helm
