Bulut
100%

Istio ile Kubernetes Service Mesh Mimarisi

Yüzlerce mikroservisin birbiriyle güvenli, izlenebilir ve kontrollü bir şekilde iletişim kurmasını sağlayan Istio Service Mesh altyapısı.

Genel Bakış

Kubernetes (K8s) ortamında mikroservis sayısı arttıkça, bu servislerin birbiriyle nasıl iletişim kurduğu, hataların nerede oluştuğu ve güvenliğin nasıl sağlanacağı karmaşık bir hal alır. Service Mesh (Hizmet Ağı), uygulamaların kodunu değiştirmeden bu sorunları çözen bir altyapı katmanıdır ve Istio bu alanın tartışmasız lideridir.

Sorun

Bir e-ticaret sitesinde Sepet servisi, Ödeme servisine HTTP isteği gönderiyor olsun. Ağda bir anlık kopma yaşanırsa Sepet servisi ne yapmalı? İsteği tekrar mı denemeli (Retry)? Kaç saniye bekleyip pes etmeli (Timeout)? Ya da iki servis arasındaki trafik şifrelenmiş mi? Bu tür ağ, güvenlik ve izlenebilirlik mantıklarını her bir mikroservisin içine (Java, Python, Node.js kodu olarak) ayrı ayrı yazmak büyük bir mimari hatadır.

Çözüm: Envoy Proxy ve Sidecar Modeli

Istio, Kubernetes pod'larının içine uygulamanızın yanına sessizce küçük bir yardımcı konteyner (Envoy Proxy - Sidecar) enjekte eder.

Uygulama dışarıya bir istek attığında, bu istek önce yanındaki Envoy Proxy'ye gider. Envoy Proxy, Istio Kontrol Düzlemi'nden (Istiod) aldığı kurallara göre bu trafiği şifreler, yönlendirir veya gerekirse tekrar dener.

Teknik Detaylar

Istio'nun en güçlü özelliklerinden biri mTLS (Mutual TLS) desteğidir. K8s içindeki servisler birbirleriyle konuşurken trafik varsayılan olarak açık metin (plaintext) akar. Istio, iki servis arasındaki tüm trafiği otomatik olarak mTLS ile şifreler; böylece ağ sızmalarına karşı içerideki veri izlenemez. Ayrıca Circuit Breaker (Devre Kesici) özelliği sayesinde, çökmekte olan bir backend servisine giden trafiği tamamen keserek (fail-fast), tüm sistemin zincirleme çökmesini engeller.

Sonuç

Istio Service Mesh, geliştiricileri ağ, güvenlik (Authentication/Authorization) ve izleme (Tracing/Metrics) yükünden kurtarır. Ancak K8s cluster'ına ciddi bir RAM ve CPU ek yükü getirdiği için, 20-30'dan az servisi olan küçük projeler için fazla ağır bir çözümdür.

İlgili Wiki'ler

Tümünü Gör