Kubernetes Ingress Controller (Nginx) Kurulumu ve SSL Yönetimi

müfettiş

Moderatör
Katılım
20 Ocak 2024
Mesajlar
325
Tepkime puanı
1
Puanları
18

images (1).png

Kubernetes Ingress Controller (Nginx) Kurulumu ve SSL Yönetimi​


Giriş: Kümeye Açılan Kapı​

Kubernetes kümenizde (Cluster) 50 tane mikroservis çalışıyor. Bunları dış dünyaya (internete) nasıl açacaksınız?
  • NodePort: Her servis için sunucuda bir port açmak (Örn: 30001, 30002). Güvensiz ve yönetilemez.
  • LoadBalancer: Her servis için Bulut sağlayıcıdan (AWS/Azure) bir IP adresi kiralamak. Çok pahalı.
  • Çözüm: Ingress.
Ingress, tüm trafiği tek bir kapıdan (Port 80/443) alıp, içerideki doğru servise yönlendiren akıllı bir resepsiyonisttir (Reverse Proxy).

Ingress Controller Nedir?​

Ingress bir "kural listesidir" (YAML dosyası). Bu kuralları uygulayan yazılıma ise Ingress Controller denir. En popüleri Nginx Ingress Controller'dır.

Çalışma mantığı şöyledir:
  1. Kullanıcı api.sirket.com adresine gider.
  2. Trafik Load Balancer üzerinden Ingress Controller'a (Nginx) gelir.
  3. Ingress kurallara bakar: "Host api.sirket.com ise trafiği backend-service Pod'una gönder."
  4. Trafik doğru konteynere ulaşır.

Nginx Ingress Controller Kurulumu​

Helm (K8s paket yöneticisi) kullanarak kurulum çok basittir:

Bash

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx<br>helm install my-nginx ingress-nginx/ingress-nginx<br>
Bu komut, kümenizde Nginx çalışan bir Pod ve ona bağlı bir Load Balancer servisi oluşturur. Artık tek bir IP adresiniz vardır.

Kural Yazma (Ingress Resource)​

Trafiği yönlendirmek için şöyle bir YAML yazarız:

YAML:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ornek-ingress
spec:
  rules:
  - host: site.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: frontend-service
            port:
              number: 80
  - host: api.site.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: backend-service
            port:
              number: 5000

Bu kural, site.com'u frontend'e, api.site.com'u backend'e yönlendirir.

Otomatik SSL: Cert-Manager ve Let's Encrypt​

Modern web'de HTTPS zorunludur. Yüzlerce sertifikayı elle yönetmek imkansızdır.Cert-Manager, Kubernetes içinde çalışan bir araçtır.
  1. Otomatik olarak Let's Encrypt'e gider.
  2. Alan adının size ait olduğunu doğrular.
  3. Ücretsiz SSL sertifikasını alır ve Ingress'e yükler.
  4. Sertifika süresi dolmadan (90 gün) otomatik yeniler.
Tek yapmanız gereken Ingress YAML dosyasına küçük bir not (Annotation) eklemektir:cert-manager.io/cluster-issuer: "letsencrypt-prod"

Sonuç​

Ingress, Kubernetes'in trafik polisidir. Tek bir IP üzerinden binlerce web sitesini ve API'yi yönetmenizi, SSL sertifikalarını otomatize etmenizi ve maliyetleri düşürmenizi sağlar.
 
Geri
Üst