AWS EKS Kümesi ve ALB Ingress Controller Kurulumu
AWS Load Balancer Controller, Kubernetes kümeniz için AWS Elastic Load Balancer'ları otomatik olarak yöneten bir Kubernetes denetleyicisidir. Bu araç, eski AWS bulut sağlayıcı yöntemlerinin yerini alır ve AWS servisleriyle daha iyi entegrasyon sunar. Hem HTTP/HTTPS trafiği için Application Load Balancer (ALB) hem de TCP/UDP trafiği için Network Load Balancer (NLB) desteği sağlar.
Bu rehberde, AWS EKS kümenizde bu kurulumu nasıl yapacağınızı anlatacağız.
Ön Gereksinimler
Kuruluma başlamadan önce aşağıdaki araçların hazır olduğundan emin olun:
- Çalışan bir AWS EKS kümesi
- Kümeniz için yapılandırılmış
kubectl - Yüklü ve yapılandırılmış AWS CLI
eksctlaracı- Politikalar ve roller oluşturmak için uygun IAM izinleri
Kurulum Adımları
1. Helm 3 Kurulumu
Denetleyiciyi dağıtmak için Kubernetes paket yöneticisi olan Helm'i kullanacağız.
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
Helm, karmaşık Kubernetes uygulamalarının yönetimini tek bir paket (chart) halinde sunarak kolaylaştırır.
2. IAM OIDC Sağlayıcısını Etkinleştirme
Bu adım, Kubernetes pod'larının IAM rollerini güvenli bir şekilde üstlenmesini sağlayan IAM Roles for Service Accounts (IRSA) özelliğini etkinleştirmek için kritiktir.
eksctl utils associate-iam-oidc-provider \
--region ap-southeast-1 \
--cluster dev-cluster \
--approve
Burada kümeniz ile AWS IAM arasında bir güven ilişkisi kurulur.
3. IAM Politikası Oluşturma
Denetleyicinin yük dengeleyicileri yönetebilmesi için gerekli izinleri tanımlayan resmi IAM politikasını indirin ve oluşturun.
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/install/iam_policy.json
aws iam create-policy \
--policy-name AWSLoadBalancerControllerIAMPolicy \
--policy-document file://iam_policy.json
Bu politika, Load Balancer oluşturma, silme ve yapılandırma izinlerini içerir.
4. IAM Servis Hesabı (Service Account) Oluşturma
Kubernetes servis hesabını bir IAM rolüne bağlayarak denetleyicinin AWS API'lerine erişmesini sağlayın.
eksctl create iamserviceaccount \
--cluster=dev-cluster \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--role-name AmazonEKSLoadBalancerControllerRole \
--attach-policy-arn=arn:aws:iam::SIZIN_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \
--approve
5. Controller'ı Dağıtma (Deploy)
Resmi EKS Helm deposunu ekleyin ve kurulumu başlatın.
helm repo add eks https://aws.github.io/eks-charts
helm repo update eks
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=dev-cluster \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller \
--set region=ap-southeast-1 \
--set vpcId=vpc-SIZIN_VPC_ID
Bu komut, yüksek erişilebilirlik için varsayılan olarak iki kopya (replica) halinde denetleyiciyi başlatır.
Kurulumu Doğrulama
Kurulumun başarılı olup olmadığını kontrol etmek için:
kubectl get deployment -n kube-system aws-load-balancer-controller
kubectl get pods -n kube-system -l app.kubernetes.io/name=aws-load-balancer-controller
Logları inceleyerek herhangi bir hata olup olmadığını görebilirsiniz.
Nasıl Çalışır?
Controller kurulduktan sonra Ingress ve Service kaynaklarını izlemeye başlar:
kubernetes.io/ingress.class: albanotasyonuna sahip bir Ingress oluşturduğunuzda AWS'de bir ALB oluşturur.- Hedef gruplarını (Target Groups) ayarlar.
- Yönlendirme kurallarını yapılandırır.
- Güvenlik gruplarını (Security Groups) yönetir.

Avantajlar
- Otomatik Hazırlama: Manuel ALB oluşturmaya gerek kalmaz.
- Maliyet Optimizasyonu: Tek bir ALB'yi birden fazla Ingress kaynağı ile paylaşabilirsiniz.
- Güvenlik: AWS WAF ve Security Group entegrasyonu.
Bu yapı, modern DevOps süreçlerinde, özellikle Docker tabanlı mikroservis mimarilerinde ve Jenkins gibi CI/CD araçlarıyla birlikte kullanıldığında büyük esneklik sağlar.