2024-10-27Harsh Goenka

Amazon EKS Üzerinde Istio Service Mesh Kurulumu: Pratik Rehber

KubernetesAWSEKSIstioDevOpsService Mesh
A

Mikroservisler uygulamaları ölçeklendirmeyi ve geliştirmeyi kolaylaştırır, ancak servisler arası iletişim güvenliği, görünürlük ve trafik yönetimi gibi yeni zorlukları da beraberinde getirir. İşte burada, en yaygın kullanılan service mesh çözümlerinden biri olan Istio devreye girer.

Bu rehberde, Amazon EKS üzerinde Istio'yu nasıl kuracağınızı, gözlemlenebilirliği (observability) nasıl sağlayacağınızı, mTLS ile servisleri nasıl güvence altına alacağınızı ve trafik yönetimini nasıl yapacağınızı öğreneceksiniz.

Istio Nedir ve Neden Önemlidir?

Istio, servisleriniz arasında durur ve hafif Envoy sidecar proxy'leri kullanarak iletişimi otomatik olarak yönetir. Istio ile şunları elde edersiniz:

  • Akıllı trafik kontrolü
  • Karşılıklı TLS (mTLS) ve sıfır güven (zero-trust) güvenliği
  • Yerleşik telemetri ve izleme
  • Dayanıklılık, yeniden denemeler ve devre kesiciler (circuit-breaking)

Tüm bunları uygulama kodunuzu değiştirmeden kazanırsınız.

Gereksinimler

Başlamadan önce aşağıdakilere ihtiyacınız olacak:

  • Bir AWS hesabı
  • awscli
  • kubectl
  • eksctl
  • istioctl

Adım 1: EKS Cluster Oluşturma

Öncelikle, Kubernetes cluster'ımızı oluşturalım. Bunun için eksctl aracını kullanacağız.

eksctl create cluster --name istio-eks-demo --region us-east-1 --nodegroup-name standard-workers --node-type t3.medium --nodes 3

Cluster oluştuğunda (yaklaşık 15-20 dakika sürebilir), bağlantıyı doğrulayın:

kubectl get nodes

Cluster Doğrulama

Adım 2: Istio Kurulumu

En son Istio sürümünü indirin ve kurun:

curl -L https://istio.io/downloadIstio | sh -
cd istio-*
export PATH=$PWD/bin:$PATH

Şimdi Istio'yu cluster'a demo profili ile kurun. Bu profil, test ve demo amaçlı kullanım için uygundur.

istioctl install --set profile=demo -y

Istio Kurulumu

Kurulumun başarılı olduğunu doğrulamak için:

kubectl get pods -n istio-system

Istio Podları

Adım 3: Otomatik Sidecar Enjeksiyonunu Etkinleştirme

Istio'nun çalışabilmesi için her servisin yanına bir Envoy proxy (sidecar) eklenmesi gerekir. Bunu otomatik hale getirmek için default namespace'ini etiketleyin:

kubectl label namespace default istio-injection=enabled

Sidecar Enjeksiyonu

Adım 4: Örnek Uygulama Dağıtımı (Bookinfo)

Istio'nun özelliklerini test etmek için klasik Bookinfo uygulamasını kullanacağız.

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

Podların ve servislerin çalıştığını doğrulayın:

kubectl get pods
kubectl get services

Bookinfo Podları

Adım 5: Uygulamayı Dışarı Açma (Gateway)

Uygulamaya dışarıdan erişebilmek için bir Istio Gateway oluşturmamız gerekiyor.

kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

Gateway IP adresini veya DNS adını alın:

kubectl get svc istio-ingressgateway -n istio-system

Gateway Servisi

Tarayıcınızdan bu adrese giderek /productpage yolunu kontrol edin. Bookinfo uygulamasını görmelisiniz.

Bookinfo Arayüzü

Adım 6: Gözlemlenebilirlik (Kiali ve Grafana)

Istio'nun en güçlü yanlarından biri sunduğu görünürlüktür. Kiali panosunu açarak servis haritasını görebilirsiniz.

Önce eklentileri yükleyin:

kubectl apply -f samples/addons

Ardından Kiali panosunu açın:

istioctl dashboard kiali

Traffic Graph sekmesinde servisler arasındaki iletişimi görsel olarak izleyebilirsiniz.

Kiali Panosu

Adım 7: Trafik Yönetimi ve Canary Dağıtımı

Istio ile trafiği farklı sürümler arasında dağıtabilirsiniz. Örneğin, trafiğin %80'ini v1 sürümüne, %20'sini v2 sürümüne yönlendirelim.

Önce hedef kurallarını (destination rules) oluşturun:

kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml

Ardından VirtualService tanımını uygulayın:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 80
    - destination:
        host: reviews
        subset: v2
      weight: 20

Bu konfigürasyon, DevOps süreçlerinde Canary dağıtımları için kritik öneme sahiptir.

Sonuç

Bu rehberde, Amazon EKS üzerinde Istio Service Mesh kurulumunu tamamladık, örnek bir uygulama dağıttık ve temel trafik yönetimi özelliklerini inceledik. Istio, karmaşık mikroservis yapılarını yönetmek için güçlü bir araçtır ve AWS üzerinde sorunsuz bir şekilde çalışır.