2, Mar 2025
Kubernetes Service Mesh Nedir?

Kubernetes Service Mesh, mikroservis mimarisinde servisler arası iletişimi yöneten bir altyapı katmanıdır. Mikroservislerin birbirleriyle nasıl iletişim kurduğunu, trafiğin nasıl yönlendirildiğini, güvenlik politikalarını ve hata toleransını merkezi olarak yönetir.

Service Mesh, genellikle Sidecar Proxy adı verilen bir yapı ile çalışır. Bu proxy, her mikroservisin yanında çalışır ve gelen/giden tüm trafiği yönetir.


🎯 Neden Service Mesh Kullanılır?

Mikroservislerin sayısı arttıkça, servisler arası iletişim:

  • Güvenlik
  • Yük Dengeleme
  • İzleme (Observability)
  • Retry & Timeout
  • Circuit Breaker
  • Servis Keşfi (Service Discovery)
  • Versiyonlama (Canary Deployments)

gibi özellikler gerektirir.


🔑 Nasıl Çalışır?

Service Mesh, aşağıdaki temel bileşenlerden oluşur:

BileşenAçıklama
Control PlaneTrafik politikalarını merkezi olarak yönetir
Data PlaneServisler arasındaki gerçek veri trafiğini yönetir (Sidecar Proxy)
Sidecar ProxyHer mikroservisin yanına eklenir ve gelen/giden trafiği denetler

🎯 Popüler Service Mesh Araçları

Service MeshAçıklamaProxy
IstioEn popüler, açık kaynaklıEnvoy
LinkerdHafif ve kolay kurulabilirLinkerd Proxy
ConsulHashiCorp tarafından geliştirilmiştirEnvoy
KumaHafif, Envoy tabanlıEnvoy

🔌 Istio ile Service Mesh Kurulumu (Kubernetes)

Istio, en çok kullanılan Service Mesh araçlarından biridir.

1. Istio Yükleme

bashCopyEdit# Istio CLI indir
curl -L https://istio.io/downloadIstio | sh -

# Istio yükleme
cd istio-<version>
export PATH=$PWD/bin:$PATH
istioctl install --set profile=demo -y

2. Namespace Etiketleme

İlgili Namespace’e otomatik Sidecar Proxy eklenmesi için etiketleme yapılır.

bashCopyEditkubectl label namespace default istio-injection=enabled

3. Uygulama Deploy Edelim

Bir örnek BookInfo uygulaması deploy edelim:

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

4. Servisleri Kontrol Et

bashCopyEditkubectl get pods
kubectl get svc

🔑 Traffic Management

İsteklerin yüzde kaçının hangi servise gideceğini belirleyebilirsiniz.

Örneğin:

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

🔐 Güvenlik

  • mTLS (Mutual TLS): Servisler arası şifreli iletişim
  • Authentication Policies
  • Authorization Policies

📊 Monitoring & Observability

  • Prometheus
  • Grafana
  • Kiali (Servis Ağı Görselleştirme)

🔌 Circuit Breaker

Hata oranı belirli bir seviyeye ulaştığında istekleri durdurur:

yamlCopyEditapiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  trafficPolicy:
    connectionPool:
      http:
        http1MaxPendingRequests: 1
        maxRequestsPerConnection: 1
    outlierDetection:
      consecutiveErrors: 5
      interval: 10s
      baseEjectionTime: 30s

🎯 Avantajları

✅ Merkezi trafik yönetimi
✅ mTLS ile otomatik güvenlik
✅ Canary ve Blue-Green deployment desteği
✅ İzlenebilirlik (Observability)
✅ Circuit Breaker


⚠️ Dezavantajları

❌ Karmaşık yapı
❌ Yüksek CPU ve bellek tüketimi
❌ Öğrenme eğrisi yüksek


💪 Hangisini Seçmeliyim?

İhtiyaçÖnerilen Service Mesh
BasitlikLinkerd
Gelişmiş ÖzelliklerIstio
Multi-ClusterConsul
HafiflikKuma

🌐 Mimari Şeması

lessCopyEdit[Client] --> [Ingress Gateway] --> [Sidecar Proxy] --> [Microservice A]
                                              |
                                              --> [Microservice B]
                                              |
                                              --> [Microservice C]

📌 Sonuç

Service Mesh, mikroservislerin güvenli, ölçeklenebilir ve izlenebilir şekilde iletişim kurmasını sağlar. Kubernetes ile entegre bir şekilde çalışarak altyapıyı daha dayanıklı hale getirir.


🔥 Öneri

filesharingsecure projesinde Istio + Azure Kubernetes Service (AKS) kullanarak:

  • mTLS
  • Traffic Management
  • Canary Deployment
  • Retry & Circuit Breaker

kullanabiliriz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir