Takip et

Nginx Ingress, Cert-Manager ve Let’s Encrypt ile HTTPS Güvenliği

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

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.