Istio

menu icon

Istio

Geliştiricilerin farklı mikro hizmetlerden oluşan ağları kesintisiz bir biçimde bağlamasına, yönetmesine ve güvenceye almasına imkan tanıyan Istio açık kaynak teknolojisi hakkında daha fazla bilgi edinin.

Istio nedir?

Bir Kubernetes kümesindeki konteynerleri bağlayan, izleyen ve güvenceye alan yapılandırılabilir bir açık kaynak hizmet örgüsü (service-mesh) katmanıdır. Bu yazı hazırlandığı sırada, Istio yalnızca Kubernetes ile yerel olarak çalışmaktadır, ancak açık kaynaklı olması sayesinde herkesin, Istio'nun herhangi bir küme yazılımı üzerinde çalışmasını sağlayan uzantılar yazmasına imkan tanır. Bugün, Istio'nun en popüler kullanım senaryosu olan Kubernetes ile kullanımına odaklanacağız.

Kubernetes, bir konteyner orkestrasyonu aracıdır ve Kubernetes'in temel bileşenlerinden biri de bir düğümdür. Bir düğüm, dosya sistemleriyle veya diğer bileşenlerle birlikte bir veya daha fazla konteynerden oluşur. Bir mikro hizmetler mimarisi, her biri farklı mikro hizmetleri temsil eden bir düzine farklı düğüme sahip olabilir. Kubernetes, düğümlerin kullanılabilirliğini ve kaynak tüketimini yönetir, pod otomatik ölçeklemearacını kullanarak talep arttıkça podlar ekler. Istio, güvenliği, yönetimi ve izlemeyi eklemek için poda ek konteynerler enjekte eder.

Istio, açık kaynak olması nedeniyle, kendisini destekleyen herhangi bir genel bulut ve istekli sistem yöneticileri bulunan herhangi bir özel bulut üzerinde çalışabilir.

Aşağıdaki video, Istio ile ilgili temel hususları daha ayrıntılı olarak açıklıyor (5:13):

Ağ hizmet örgüsü (service mesh)

Kuruluşlar mikro hizmetlere geçtiklerinde, düzinelerce ve hatta yüzlerce belirli uygulamayı desteklemeleri gerekir. Bu da uç noktaların ayrı olarak yönetilmesi, talep dahil olmak üzere çok sayıda sanal makinenin desteklenmesi anlamına gelir. Kubernetes gibi küme yazılımları, podlar oluşturabilir ve bunları dikey ölçekleyebilir, ancak Kubernetes, yönlendirme, trafik kuralları veya güçlü izleme ya da hata ayıklama araçları sağlamaz.

Burada hizmet örgüsü devreye girer.

Hizmetlerin sayısı arttıkça, potansiyel iletişim kurma yollarının sayısı da katlanarak artar. İki hizmetin yalnızca iki iletişim yolu bulunur. Üç hizmetin altı, 10 hizmetin ise 90 yolu bulunur. Bir hizmet örgüsü, iletişim için bir ilke yaratarak bu iletişim yollarının yapılandırılması için tek bir yöntem sağlar.

Bir hizmet örgüsü, önceden belirlenen bir yapılandırma doğrultusunda hizmetleri ölçer ve iletişim trafiğini yönlendirir. Bu, bir sistem yöneticisinin, çalışan bir konteyneri yapılandırmak (veya bunu yapacak kodu yazmak) yerine, hizmet örgüsüne yapılandırma sunarak bu işi tamamlamasını sağlayabileceği anlamına gelir. Bugüne kadar, bunun her zaman web sunucuları ve hizmetler arası iletişim kullanılarak yapılması gerekiyordu.

Bunu bir kümede yapmanın en yaygın yolu, sidecar kalıbının kullanılmasıdır. Bir sidecar, pod içindeki yeni bir konteynerdir ve iletişim trafiğini hizmetler ve konteynerler arasında yönlendirir ve gözlemler.

Istio ve Kubernetes

Daha önce belirtildiği gibi, Istio bir katman olarak Kubernetes'in üzerine eklenir ve temelde programcı ve sistem yöneticisi tarafından görülmeyen konteynerler ekler. "Sidecar" konteynerler olarak adlandırılan bu konteynerler, "aradaki kişi" olarak görev yapar, trafiği yönlendirir ve bileşenler arasındaki etkileşimleri izler. İkisi üç farklı şekilde birlikte çalışır: yapılandırma, izleme ve yönetim.

Yapılandırma

Kubernetes ile yapılandırmayı ayarlamanın başlıca yolu, yaygın olarak "kubectl -f <dosyaadı>" biçiminde kullanılan kubectl komutudur ve burada dosya, YAML dosyasıdır. Istio kullanıcıları, kubectl ile yeni ve farklı YAML dosyası türlerini çalıştırabilir ya da yeni, isteğe bağlı ioctl komutunu kullanabilirler.

İzleme

Istio sayesinde, Kubernetes ile çalışan uygulamalarınızın durumunu kolaylıkla izleyebilirsiniz. Istio'nun ölçüm araçları, uygulamaların durumunu yönetebilir ve görselleştirebilir. Ayrıca Kubernetes gibi yalnızca küme ve düğümlerin genel olarak izlenmesinin ötesinde içgörüler sağlar.

Yönetim

Istio arabirimi temelde Kubernetes ile aynı olduğundan, yönetilmesi için neredeyse hiç ek çalışma gerekmez. Aslında Istio, kullanıcının tüm Kubernetes kümesini etkileyen ve yöneten ilkeler yaratmasına olanak sağlar, özel yönetim koduna duyulan gereksinimi ortadan kaldırırken aynı zamanda her kümenin yönetilmesi için gerekli olan süreyi azaltır.

Avantajlar

Bir hizmet örgüsünün başlıca avantajları arasında iyileştirilmiş hata ayıklama, izleme, yönlendirme, güvenlik ve kullanım yer alır. Bu bağlamda, Istio ile daha geniş bir hizmet yelpazesinin yönetilmesi daha az çaba gerektirir.

İyileştirilmiş hata ayıklama

Örneğin, bir hizmetin çok sayıda bağımlılığı olduğunu düşünelim. Bir sigorta şirketindeki pay_claim hizmeti, deductible_amt hizmetini, bu hizmet de is_member_covered hizmetini çağırır ve bu şekilde devam eder. Karmaşık bir bağımlılık zinciri içinde 10 veya 12 hizmet çağrısı bulunabilir. Bu 12 çağrıdan birinde hata oluştuğunda, bir çeşit 500 hatası, 400 hatası ve belki de hiç yanıt verilmemesi ile sonuçlanan art arda hatalara neden olacaktır.

Bu çağrı kümesinde hata ayıklamak için yığın izlemesi gibi bir şey kullanabilirsiniz. Ön uçta, istemci tarafındaki geliştiriciler hangi öğelerin, web sunucularından hangi sıralama ile geri alındığını görebilir ve bunları inceleyebilir. Ön uç programcıları, hata ayıklamaya yardımcı olması için bir şelale şeması elde edebilirler.

Örnekte gösterilmeyen şey, veri merkezinin içinde neler olduğudur—geri çağırma =parselLotamaAudiences dört başka web hizmetini nasıl çağırıyor ve hangileri daha yavaş yanıt veriyor. Daha sonra, buna çok benzeyen bir şemada Istio'nun işlev çağrılarını izlemek için araçları nasıl sağladığını göreceğiz.

İzleme ve gözlemlenebilirlik

DevOps ekipleri ile BT Yöneticileri, gecikme süresini, hizmet süresini, trafiğin bir yüzdesi olarak hataları ve benzeri hususları görmek için trafiği gözlemlemek isteyebilirler. Genellikle, bir gösterge panosu görmek isterler. Bir gösterge panosu, toplamın veya ortalamanın ya da bu ölçülerin zaman içindeki değerlerinin bir görselleştirmesini ve belki de belirli bir düğümün, hizmetin veya podun "ayrıntılarına inme" yeteneğini sağlar. Kubernetes, bu işlevi yerel olarak sağlamaz.

İlke

Kubernetes, varsayılan olarak, her podun diğer tüm podlara trafik göndermesine izin verir. Istio, sistem yöneticilerinin birbiriyle çalışabilecek hizmetleri kısıtlamak amacıyla bir ilke oluşturmasına izin verir. Örneğin, hizmetlerin yalnızca gerçek bağımlılıklar olan diğer hizmetleri çağırabileceğini düşünelim. Hizmetleri çalışır durumda tutmaya yönelik bir başka ilke, oran sınırlamasıdır ve aşırı trafiğin bir hizmeti tıkamasını durdurarak hizmet engelleme saldırılarını önler.

Yönlendirme ve yük dengeleme

Kubernetes, varsayılan olarak sırayla yük dengeleme sağlar. Bir mikro hizmeti sağlayan altı adet pod varsa, Kubernetes tarafından bir yük dengeleyici ya da her poda artan sıralamayla talepler gönderen ve ardından yeniden başlayan bir "hizmet" sağlar. Ancak bazen, bir şirket tarafından aynı hizmetin farklı sürümleri üretim ortamında devreye alınır.

Bunun en basit örneği, bir mavi/yeşil devreye alımı olabilir. Bu örnekte yazılım, üretim ortamında, üretim kullanıcılarını buna göndermeden, uygulamanın tamamen yeni bir sürümünü oluşturabilir. Şirket, yeni sürümü tanıttıktan sonra, hata durumunda yeniden eski sürüme hızla geri dönmek için eski sunucuları etkin durumda tutabilir.

Istio ile bunu yapmak, bir yapılandırma dosyasında etiketleme kullanmak kadar kolaydır. Sistem yöneticileri ayrıca, hangi tür hizmetle bağlantı kurulacağını belirtmek için etiketler kullanabilir ve üstbilgilere dayalı olarak kurallar oluşturabilirler. Örneğin, beta kullanıcıları, en son ve en yüksek derlemeye sahip bir 'kanarya' poduna yönlendirme gerçekleştirebilir, sıradan kullanıcılar ise dengeli üretim derlemesine gider.

Devre kesme

Bir hizmetin aşırı yüklenmesi veya devre dışı kalması durumunda, ek talepler sistemi aşırı yüklemeye de devam ederken hata verecektir. Istio, hataları ve gecikmeleri takip etmesi sayesinde, zorla bir duraklama gerçekleştirilmesini sağlayabilir ve ilke ile belirlenen belirli sayıda talebin ardından hizmetin yeniden işler duruma getirilmesine olanak sağlayabilir. Küçük bir metin dosyası oluşturarak ve Istio'ya bunu yeni ilke olarak kullanma talimatı vererek, bu ilkenin kümenin tamamında uygulanmasını sağlayabilirsiniz.

Güvenlik

Istio; kimlik doğrulaması, yetkilendirme ve denetim ile birlikte kimlik, ilke ve şifrelemeyi varsayılan olarak sağlar. Yönetilen ve diğerleriyle iletişim kuran herhangi bir pod, herhangi bir gözlemi engellemek için şifrelenmiş trafik kullanacaktır. Kimlik hizmeti, şifrelemeyle birlikte, hiçbir yetkisiz kullanıcının bir hizmet çağrısını taklit edememesini veya "kandıramamasını" sağlar. Kimlik doğrulaması, yetkilendirme ve denetim, güvenlik ve operasyon profesyonellerine daha az iş yükü ile izlemek için gereksinim duydukları araçları sağlar.

Basitleştirilmiş sistem yönetimi

Geleneksel uygulamalar, yine de Istio'nun sunduğu belirleme, ilke ve güvenlik özelliklerine gereksinim duyar. Bu uygulamalar, programcıların ve sistem yöneticilerinin hatalı soyutlama düzeyinde çalışmasına ve her hizmet için aynı güvenlik kurallarını tekrar tekrar yeniden uygulamasına neden olur. Istio, bunların doğru seviyede çalışmalarına olanak sağlar-tek bir kontrol paneli aracılığıyla küme için ilkeyi belirler. Aynı zamanda, Istio'nun aşağıda açıklanan erişim kontrolleri, gösterge panoları ve hata ayıklama araçlarıyla, bir web sayfasına gitmek yerine komut satırını kullanarak bir eklentiyi kolayca ekleyebilirsiniz.

Örnekler

Hizmetleri görselleştirin

Istio 1.1, Kiali adı verilen ve web tabanlı görselleştirme sağlayan yeni bir eklenti içerir. Bunu hizmet taleplerini takip etmek, ayrıntılara inmek ve hatta kendi yönteminizle sorgulamak ve biçimlendirmek için hizmet talebi geçmişini bir JSON olarak dışa aktarmak amacıyla kullanabilirsiniz. Aşağıdaki iş yükü grafiği, fiilen birbirine bağımlı olan hizmetler doğrultusunda gerçek zamanlı olarak oluşturulan bir bağımlılık grafiği sunar. Trafiğin fiilen gözlemlenmesi sonucunda oluşturulmuştur.

Kiali adı verilen ve web tabanlı görselleştirme sağlayan yeni eklentinin resmi.

Hizmet çağrılarını izleyin

Istio'nun bir bileşeni olan Jaeger hizmeti, herhangi bir hizmet için izleme sağlar. Bu örnekte, ürün sayfasını izledik. İlk resimdeki her nokta, bir hizmet çağrısını temsil eder. Bir noktayı tıklayarak, kesin hizmet taleplerini ve yanıtlarını takip etmek için şelale şemasının "ayrıntılarına inebiliriz".

Bir Istio bileşeni olan ve herhangi bir hizmet için takip sağlayan The Jaeger hizmetinin resmi.  Bu örnekte, ürün sayfasını izledik.  İlk resimdeki her nokta bir hizmet çağrısını ifade eder.

Ayrıca, ürün sayfasına daha yakından bakabiliriz. Hataların ürün sayfasının kendisinde olduğunu görebiliriz-ayrıntılar başarıyla döndürülmüştür.

Ürün sayfasının resmi.  Hataların ürün sayfasının kendisinde olduğunu görebiliriz-ayrıntılar başarıyla döndürülmüştür.

Gösterge panoları

Istio, sistem durumunun ve performansının izlenmesi için çok sayıda gösterge panosu (kullanıma hazır) ile birlikte sunulur. Bunlar, işlemci ve bellek kullanımını, trafik talebini, 400 ve 500 hatalarının sayısını, talepleri karşılama süresini ve daha fazlasını ölçebilir. En iyisi de, bunlar yalnızca Istio kurularak ve çalıştırılarak ve Istio için mevcut olan açık kaynak gösterge panosu araçlarından biri olan Grafana eklenerek kullanılabilir. Istio ayrıca, iki farklı gösterge panosu daha sağlar: Kiali ve Jaeger.

Istio'nun sistem durumunu ve performansını izlemeye yönelik çok sayıdaki gösterge panosunun (kullanıma hazır) resmi.

Istio ile Envoy karşılaştırması

Istio, izleme, yönetim ve loga kaydetme gerçekleştirmek için önemli ölçüde genişletilmiş olmakla birlikte, Envoy'un bir sürümünü kullanır. Her podun takip edilmesi gerekir ve Istio'nun tüm podlara ilişkin bilgileri birleştirmesi ve sağlaması gerekir. Istio kullanımına bir alternatif, Envoy'un Kubernetes kümesinde doğrudan devreye alınması ve yönetim kodunun yazılması olabilir. Ancak, bunu düşündüğünüzde, temelde Istio'yu yeniden yazmış olursunuz ve özel bir geliştirme projesinin tüm ilgili maliyetleriyle ve hatalarıyla da karşı karşıya kalırsınız.

Eğitici programlar

Istio web sitesi (bağlantı IBM dışındadır), Istio ile çalışmaya başlamak için çok sayıda yararlı belge ve yönerge içerir. 

Istio ve IBM

Yönetilen Istio, IBM Cloud Kubernetes Hizmetinin bir parçası olarak sunulur. Hizmet, Istio'nun sorunsuz kurulumunu, kontrol düzlemi bileşenlerinin otomatik olarak güncellenmesini ve yaşam döngüsü yönetimini ve platform log dosyasına kayıt ve izleme araçları ile bütünleştirilmesini sağlar. Yönetilen Istio entegrasyonunu yeni ya da mevcut kümelerinize ekleyin ve mikro hizmetlerinizin kontrolünü hemen geri alın. Knative'i keşfetmek ilginizi çekiyorsa, "Knative: Temel Bir Rehber " sayfasına bakın.

IBM Cloud Kubernetes Hizmeti üzerindeki Yönetilen Istio hakkında daha fazla bilgi edinin

Yönetilen Kubernetes'in bulut yolculuğunuzda size nasıl yardımcı olabileceğine ilişkin bir genel bakış için "Yönetilen Kubernetes'in Avantajları" başlıklı videomuzu izleyin:

Üretim ortamlarında konteynerlerin devreye alınmasına olanak sağlamaya ve bunu hızlandırmaya yönelik en iyi uygulamalar hakkında daha fazla bilgi edinmek için "Üretim Ortamında Konteynerlerin ve Kubernetes'in Çalıştırılmasına İlişkin En İyi Uygulamalar" başlıklı rapora bakın.

Hizmet örgülerinin uygulamanızdaki hizmetler arasındaki etkileşimleri kontrol etmenize nasıl yardımcı olabileceğini "Istio Açıklanıyor: Hizmet Örgüsünü Kullanmaya Başlarken" (PDF, 4,1 MB) başlıklı pratik kılavuzla öğrenin.

IBM Cloud'u hemen kullanmaya başlamaya hazırsanız, buradan kaydolun.