2024-11-01Hünkar Döner

AWS Load Balancer Controller Nedir? EKS ile Nasıl Kullanılır?

AWSEKSALBIngressNetworking
A

AWS Load Balancer Controller Nedir?

Kubernetes dünyasında dış trafiği içeri almak için "Ingress" veya "Service (LoadBalancer)" kaynakları kullanılır. Ancak Kubernetes tek başına AWS Load Balancer'larını (ALB/NLB) nasıl yaratacağını bilmez.

İşte AWS Load Balancer Controller (LBC), bu boşluğu dolduran bir eklentidir (Add-on). LBC, Kubernetes API'sini dinler ve bir Ingress kaynağı oluşturduğunuzda, gider AWS tarafında bir Application Load Balancer (ALB) oluşturur ve trafiği podlarınıza yönlendirir.

Özellikleri

  • ALB Yönetimi (L7): Ingress kaynakları için otomatik ALB oluşturur. SSL sonlandırma, içerik tabanlı yönlendirme yapar.
  • NLB Yönetimi (L4): "Service" tipi LoadBalancer olan kaynaklar için Network Load Balancer (NLB) oluşturur. Yüksek performans sağlar.
  • IP Target Mode: Trafiği NodePort üzerinden değil, doğrudan Pod IP'sine yönlendirir. Bu, gecikmeyi (latency) azaltır.

EKS Üzerinde Kurulum

1. IAM Politikası

LBC'nin AWS API'si ile konuşabilmesi (LB oluşturmak, silmek) için bir IAM rolüne ihtiyacı vardır. Gerekli JSON politikasını AWS'ten indirin ve bir IAM Policy oluşturun.

2. Service Account (IRSA)

Bu IAM politikasını kullanacak bir Kubernetes Service Account oluşturun. eksctl create iamserviceaccount ... komutu bunu kolayca yapar.

3. Helm ile Kurulum

helm repo add eks https://aws.github.io/eks-charts
helm install aws-load-balancer-controller eks/aws-load-balancer-controller   -n kube-system   --set clusterName=my-cluster   --set serviceAccount.create=false   --set serviceAccount.name=aws-load-balancer-controller

Nasıl Kullanılır?

Kurulumdan sonra bir Ingress dosyası oluşturun ve kubernetes.io/ingress.class: alb notasyonunu ekleyin.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
spec:
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80

Bu dosyayı uyguladığınızda (kubectl apply), AWS konsolunda yeni bir ALB'nin oluştuğunu göreceksiniz. LBC, AWS Danışmanlığı projelerinde EKS ağ yapısının temel taşıdır.