NGINX Ingress Controller Kurulumu ve Kullanım Örnekleri

NGINX Ingress Controller

NGINX Ingress Controller, Kubernetes kümelerinde gelen HTTP ve HTTPS trafiğini yönlendirmek için kullanılan bir Ingress Controller'dır. NGINX, hızlı ve yüksek performanslı bir web sunucusu ve ters proxy olarak bilinir. NGINX Ingress Controller, bu güçlü özelliklerini kullanarak Kubernetes ortamında gelen istekleri yönlendirir, yük dengelemesi yapar ve SSL/TLS şifrelemesi gibi özellikleri sağlar.

NGINX Ingress Controller, Kubernetes ortamında çalışan birçok pod'a gelen istekleri yönlendirmek için kullanılır. Bu pod'lar, farklı uygulama hizmetlerini temsil edebilir. NGINX Ingress Controller, gelen istekleri Ingress kaynaklarındaki kurallara göre eşleştirir ve uygun pod'a yönlendirir.

NGINX Ingress Controller'ın bazı temel özellikleri şunlardır:

  1. Yük Dengelemesi: NGINX, gelen istekleri pod'lar arasında dengeli bir şekilde dağıtarak yük dengelemesi yapar. Bu, uygulama hizmetlerinin daha iyi ölçeklenebilirlik ve yüksek kullanılabilirlik sağlamasına yardımcı olur.

  2. İşletim Kuralı ve Yönlendirme: NGINX Ingress Controller, Ingress kaynaklarındaki tanımlı kurallara dayanarak gelen istekleri doğru hedeflere yönlendirir. Örneğin, belirli bir yol veya ana bilgisayar adına gelen istekleri belirli bir hizmete yönlendirebilir.

  3. SSL/TLS Şifrelemesi: NGINX Ingress Controller, gelen isteklerin güvenliğini sağlamak için SSL/TLS şifrelemesini destekler. Bu sayede iletişim şifrelenir ve gizlilik sağlanır. SSL/TLS sertifikaları, Ingress kaynakları üzerinde yapılandırılarak kullanılabilir.

  4. Güvenlik: NGINX, WAF (Web Application Firewall) gibi güvenlik önlemlerini uygulamak için yapılandırılabilir. Bu, gelen isteklerin güvenliğini artırır ve olası saldırılara karşı koruma sağlar.

  5. Özelleştirilebilirlik: NGINX Ingress Controller, kullanıcıların ihtiyaçlarına uyacak şekilde geniş bir yapılandırma ve özelleştirme seçenekleri sunar. Bu, özelleştirilmiş proxy ayarları, yönlendirme kuralları ve hata sayfaları gibi özellikleri yapılandırmanıza olanak sağlar.

NGINX Ingress Controller, geniş bir topluluk tarafından desteklenen ve yaygın olarak kullanılan bir Ingress Controller'dır. Hızlı, güvenilir ve ölçeklenebilir olması, Kubernetes ortamında gelen trafiği yönlendirmek için tercih edilmesini sağlar.

Özetlemek gerekirse, NGINX Ingress Controller, Kubernetes kümelerinde gelen HTTP ve HTTPS trafiğini yönlendirmek için kullanılan güçlü bir Ingress Controller'dır. Yük dengelemesi, yönlendirme, SSL/TLS şifrelemesi ve güvenlik gibi özellikleri ile uygulama hizmetlerini daha güvenli, ölçeklenebilir ve yüksek performanslı hale getirir.

KURULUM

Helm paket yöneticisi kullanıyorsanız:

helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx --create-namespace

kubectl ile yüklemek istiyorsanız:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.0/deploy/static/provider/cloud/deploy.yaml

minikube kullanıyorsanız:

minikube addons enable ingress

MicroK8s kullanıyorsanız:

microk8s enable ingress

ÖRNEKLER

  1. Basit Bir Yönlendirme Senaryosu: Kubernetes kümelerinde gelen istekleri belirli bir uygulama hizmetine yönlendirmek için NGINX Ingress Controller kullanabilirsiniz. Örneğin, gelen isteklerin "/api" yolu için "api-service" adlı bir uygulama hizmetine yönlendirilmesini isteyelim. İşte bu senaryonun bir YAML örneği:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: sample-ingress
spec:
  rules:
  - http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: api-service
            port:
              number: 80

Bu YAML dosyasında, "/api" yolu için bir kural tanımlıyoruz ve bu yolun "api-service" adlı bir hizmete yönlendirilmesini sağlıyoruz.

  1. SSL/TLS Şifrelemesi Ekleme: NGINX Ingress Controller, gelen isteklerin SSL/TLS ile şifrelenmesini destekler. Örneğin, "example.com" ana bilgisayar adına gelen isteklerin HTTPS üzerinden yönlendirilmesini sağlayalım. İşte bu senaryonun bir YAML örneği:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: sample-ingress
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: web-service
            port:
              number: 80
  tls:
  - hosts:
    - example.com
    secretName: example-tls

Bu YAML dosyasında, "example.com" ana bilgisayar adına gelen isteklerin SSL/TLS ile şifrelenmesini sağlamak için gerekli ayarları yapılandırıyoruz. Ayrıca, Let's Encrypt gibi bir sertifika sağlayıcısından alınan bir sertifika kullanmak için "letsencrypt-prod" adlı bir ClusterIssuer belirtiyoruz.

  1. Yük Dengelemesi Ekleme: NGINX Ingress Controller, gelen istekleri birden fazla pod arasında dengeli bir şekilde dağıtarak yük dengelemesi yapabilir. Örneğin, "web-service" adlı bir hizmetin arkasındaki pod'ları yük dengelemesiyle yönlendirelim. İşte bu senaryonun bir YAML örneği:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: sample-ingress
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: web-service
            port:
              number: 80
  ingressClassName: nginx
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/affinity: "cookie"
    nginx.ingress.kubernetes.io/session-cookie-name: "route"

Bu YAML dosyasında, "web-service" adlı bir hizmetin arkasındaki pod'ları yük dengelemesiyle yönlendirmek için gerekli ayarları yapılandırıyoruz. Yük dengelemesi için "cookie" tabanlı bir oturum dengeleyici kullanıyoruz.

kubectl get services  ingress-nginx-controller -n ingress-nginx

Komutunu çalıştırdığımızda Kubernetes LoadBalancer External IP Pending şeklinde kalıyorsa:

ingress-nginx namespace'in servislerindeki ngress-nginx-controller el ile düzenleyip

externalIPs:
    - 192.168.1.101

alanını eklememiz gerekebilir. On-Premise Kubernetes Cluster'da external ip otomatik olarak atanamayabilir.

NGINX Ingress Controller ile birçok farklı senaryoyu destekleyebilirsiniz. Örneklerdeki YAML dosyaları, bu senaryoların nasıl yapılandırılabileceği konusunda size bir fikir vermektedir. İhtiyaçlarınıza ve tercihlerinize bağlı olarak, farklı özellikleri ve ayarları kullanarak NGINX Ingress Controller'ı daha da özelleştirebilirsiniz.

Hoşcakalın..

Yorumlar kapalı