Kubernetes, uygulamaların nasıl çalıştırılacağını yöneten, dağıtan ve ölçeklendiren açık kaynaklı bir konteyner orkestrasyon platformudur. Ancak, modern mikroservis tabanlı uygulamaların karmaşık doğası nedeniyle, bazı ek özelliklerin ve araçların kullanılması gerekir. İşte burada İstio devreye girer.
Kubernetes ve Mikroservisler
Mikroservis Mimarisi
Mikroservis mimarisi, büyük monolitik uygulamalar yerine daha küçük ve bağımsız hizmetleri bir araya getiren bir yaklaşımdır. Bu hizmetler, ayrı sunucular veya konteynerlar üzerinde çalışabilir ve birbirleriyle REST API’leri veya message broker’lar gibi yollarla iletişim kurabilirler.
Kubernetes ve Konteynerler
Kubernetes, mikroservisleri yönetmek için kullanılan birçok arasından biridir. Kubernetes, uygulamaları çalıştırmak, ölçeklendirmek, izlemek ve yeniden başlatmak için kullanılan açık kaynaklı bir konteyner orkestrasyon platformudur. Container teknolojisi, her bir uygulama parçası için izole edilmiş bir çevre sağlar ve bu nedenle uygulamaları daha güvenli ve taşınabilir hale getirir.
İstio Nedir?
İstio, Kubernetes için bir hizmet ağı (service mesh) olduğu anlamına gelir. Hizmet ağı, mikroservisler arasındaki iletişimi yönetmek ve güvenli hale getirmek için kullanılan bir araçtır. İstio, trafik yönlendirmesi, erişim kontrolü, otomatik yük dengeleme ve hata toleransı gibi özellikler sağlayarak, uygulamaların kararlılığını artırır.
İstio’nun Avantajları
Trafik Yönetimi
İstio, gelen istekleri belirli versiyonlar veya hizmetler arasında yönlendirebilir. Bu, yeni bir sürüm veya hizmet yayınladığımızda, trafik yönetimini manuel olarak değiştirmemizi gerektirmeden, uygulamalarımızın yaşam döngüsünü kolaylaştırır.
Güvenlik
İstio, kimlik doğrulama, yetkilendirme ve şifreleme gibi güvenlik özellikleri sağlar. Bu, hizmetler arasındaki iletişimi koruyarak, uygulamalarımızın daha güvenli hale gelmesini sağlar.
Gözlem ve İzleme
İstio, hizmetler arasındaki trafik ve mikroservislerin durumu hakkında geniş kapsamlı veriler toplar ve bunları analiz eder. Bu, sorunları tespit etmeyi kolaylaştırır ve hızlı bir şekilde yanıt vermemizi sağlar.
İstio Nasıl Çalışır?
İstio, her bir mikroservisin ağ trafiğinin İstio tarafından yönlendirildiği bir yan araçtır (sidecar). Yan arabirimler, mikroservise eklenen bir çift konteyner’dır. Bu konteynerlerden biri, mikroservis ile birlikte çalışır ve normal işlevselliği sağlar. Diğer konteynerse, tüm mikroservis trafiğini yakalamak, yönlendirmek ve güvenli hale getirmek için tasarlanmış bir proxy görevi görür.
İstio Kurulumu
İstio, Kubernetes cluster‘imizde birkaç adımda kurulabilir. İlk olarak, Istio release dosyasını indirip, kubectl ile kurulum yapabiliriz. Daha sonra, Istio’yı etkinlemaak istediğimiz namespace’lerde yükleyebiliriz.
İstio Kontrol Düzlemi
İstio, Kubernetes clusterımızda çalışan bir dizi servis’ten oluşur. Bu hizmetler, kontrol düzleminde (control plane) ve veri düzleminde (data plane) yer alır. Kontrol düzlemi, Istio’nun tüm özelliklerini sağlar ve genellikle ayrı bir Kubernetes namespace veya cluster’da çalıştırılır.
Mixer Servisi
Mixer, Istio’nun veri düzlemindeki diğer hizmetlerle iletişim kurduğu merkezi bir bileşendir. Mixer, metrikleri toplar, izin verilen politikaları uygular ve diğer veri düzlemindeki hizmetlerle etkileşime girer.
Pilot Servisi
Pilot, Istio’nun veri düzlemindeki hizmetler arasındaki trafik yönlendirmesini yönetir. Pilot, Envoy proxy’leri için konfigürasyonları dağıtarak, hizmetler arasındaki trafikte esnekliği sağlar.
Galley Servisi
Galley, Istio’nun yapılandırma modelinin doğru bir şekilde dağıtılmasını ve yapılandırılmasını sağlamak için kullanılan merkezi bir bileşendir. Galley, Kubernetes kaynaklarının çözümlenmesi için gereken şema doğrulamasını ve kaynakların uygun bir şekilde modellemesini sağlar.
Citadel Servisi
Citadel, Istio’nun güvenlik özelliklerini sağlayan merkezi bir bileşendir. Citadel, kimlik doğrulama ve yetkilendirme işlemlerini yönetir ve hizmetler arasındaki iletişimi şifreler.
İstio Uygulamaları
Trafik Yönetimi Özellikleri
Istio, gelen istekleri belirli sürümler veya hizmetler arasında yönlendirebilir. Bu, yeni bir sürüm veya hizmet yayınladığımızda, trafik yönetimini manuel olarak değiştirmemizi gerektirmeden, uygulamalarımızın yaşam döngüsünü kolaylaştırır. Ayrıca, İstio, otomatik yük dengeleme özellikleri sunarak, uygulamalarımızın daha hızlı yanıt vermesini sağlar.
Güvenlik Özellikleri
İstio, kimlik doğrulama, yetkilendirme ve şifreleme gibi güvenlik özellikleri sağlar. Bu, hizmetler arasındaki iletişimi koruyarak, uygulamalarımızın daha güvenli hale gelmesini sağlar.
Gözlem ve İzleme Özellikleri
İstio, hizmetler arasındaki trafik ve mikroservislerin durumu hakkında geniş kapsamlı veriler toplar ve bunları analiz eder. Bu, sorunları tespit etmeyi kolaylaştırır ve hızlı bir şekilde yanıt vermemizi sağlar.
İstio Kurulumu
Adım 1: Istio Release Dosyasını İndirin
İlk önce, Istio release dosyasını indirmeniz gerekiyor. Bunun için istio.io web sitesine gidin ve en son sürümü indirin.
Adım 2: Istioctl Kurulumunu Gerçekleştirin
Istioctl, Istio’yu yüklemek, yapılandırmak ve yönetmek için kullanılan komut satırı aracıdır. Istioctl’u indirmek ve yüklemek için aşağıdaki adımları izleyin.
Adım 3: Istio’yu Kubernetes’e Kurun
Istio’yu Kubernetes cluster’ınıza kurmak için, sadece Istio release dosyasını kullanarak birkaç komut çalıştırmanız yeterlidir. Bu adımdason aşamada, Istio’yu kurulumunu gerçekleştireceğiz.
İstio Kurulumu
Adım 1: Istio Release Dosyasını İndirin
İlk önce, Istio release dosyasını indirmeniz gerekiyor. Bunun için istio.io web sitesine gidin ve en son sürümü indirin. Yazı yayınlanma tarihi itibariyle istiore release: https://github.com/istio/istio/releases/tag/1.17.1
Adım 2: Istioctl Kurulumunu Gerçekleştirin
Istioctl, Istio’yu yüklemek, yapılandırmak ve yönetmek için kullanılan komut satırı aracıdır. Istioctl’u indirmek ve yüklemek için aşağıdaki adımları izleyin.
Adım 3: Istio’yu Kubernetes’e Kurun
Istio’yu Kubernetes cluster’ınıza kurmak için, sadece Istio release dosyasını kullanarak birkaç komut çalıştırmanız yeterlidir. Bu adımda, Istio’nun yüklenmesi, yapılandırılması ve uygulanmasıyla ilgili adımların nasıl yapıldığını göstereceğiz.
Adım 4: İstio Özelliklerinin Kullanımı
Istio’nun trafik yönetimi, güvenlik ve gözlem özelliklerini kullanmak için, aşağıdaki adımları takip edebilirsiniz.
İstio Kullanım Örnekleri
İstio, birçok farklı senaryoda kullanılabilir. İşte, İstio’nun kullanım örnekleri:
1. Trafik Yönlendirme
İstio, trafik yönlendirme kuralları oluşturmanızı sağlar. Bu sayede, taleplerin belirli mikroservislere yönlendirilmesi gibi işlevleri gerçekleştirebilirsiniz.
2. Güvenlik
İstio, mikroservisler arasındaki trafiği şifreleyerek, güvenliği sağlar. Ayrıca, kimlik doğrulama ve yetkilendirme gibi işlevleri de yerine getirir.
3. Gözlemleme
İstio, mikroservisler arasındaki trafiği izleyerek, performans sorunlarını tespit etmenizi ve sorunları gidermenizi sağlar. Ayrıca, hata ayıklama işlevleri de mevcuttur.
4. Hizmet Keşfi
İstio, servislerin keşfedilmesi için de kullanılabilir. Özellikle büyük ölçekli uygulamalarda, servislerin keşfedilmesi oldukça zor olabilir. İstio, bu sorunu çözmek için hizmet keşfi işlevlerini sağlar.
5. Tracing
İstio, mikroservisler arasındaki iletişimin izlenmesini sağlar. Bu sayede, bir talebin hangi mikroservislere gittiği ve hangi işlemlerin yapıldığı gibi detayları görüntüleyebilirsiniz.
6. Traffic Management
İstio, trafik yönetiminde oldukça esnek bir yapıya sahiptir. Bu sayede, trafik yönetimi için birçok farklı senaryoda kullanılabilir. Örneğin, trafik yönlendirme, ağırlıklandırma, hız sınırlama gibi işlevleri gerçekleştirebilirsiniz.
7. Blue-Green Deployment
İstio, Blue-Green Deployment senaryosunda da kullanılabilir. Bu sayede, yeni bir versiyonun önceki versiyonun yanında çalıştırılması ve test edilmesi mümkün olur. Böylece, yeni versiyonda bir sorun olduğunda eski versiyona geçiş yapılabilir.
8. Canary Deployment
Canary Deployment, yeni bir versiyonun sadece belirli bir kullanıcı grubuna sunulmasını sağlar. Bu sayede, yeni bir versiyonun tüm kullanıcılara sunulması öncesinde test edilebilir. İstio, Canary Deployment senaryosunu da destekler.
9. A/B Testing
A/B Testing, iki farklı versiyonun kullanıcılara sunulması ve hangi versiyonun daha iyi performans gösterdiğinin belirlenmesi için kullanılır. İstio, A/B Testing senaryosunu da destekler.
10. Distributed Tracing
İstio, Distributed Tracing işlevlerini de sağlar. Bu sayede, mikroservisler arasındaki iletişimin izlenmesi ve hata ayıklama işlemleri yapılması kolaylaşır.
11. Service Mesh
İstio, bir Service Mesh platformudur. Bu sayede, Kubernetes ortamlarında servis ağı yönetimi kolaylaşır. İstio, birçok farklı işlevi tek bir platformda sunar.
12. Kubeflow
Kubeflow, makine öğrenimi uygulamalarının Kubernetes ortamında çalıştırılması için kullanılan bir platformdur. İstio, Kubeflow ile entegre olarak çalışabilir.
13. DevOps
İstio, DevOps süreçlerinde de kullanılabilir. Özellikle, sık ve hızlı bir şekilde uygulama dağıtımı yapmanız gerektiğinde, İstio’nun sağladığı işlevler oldukça faydalıdır.
14. Cloud Native
İstio, Cloud Native uygulamalar için tasarlanmış bir platformdur. Cloud Native, uygulamaların bulut ortamlarında çalıştırılması için kullanılan bir yöntemdir. İstio, Kubernetes gibi bulut ortamlarıyla uyumlu çalışır ve uygulamaların bulut ortamında sorunsuz bir şekilde çalışmasını sağlar. Ayrıca, İstio’nun sağladığı işlevler sayesinde, uygulama yönetimi ve hizmet keşfi gibi konularda da büyük kolaylıklar sağlanır.
İstio Trafik Yönetimi
Hizmet Router’ları (Virtual Services)
Hizmet router’ları (virtual services), bir hizmetin belirli bir sürümünü veya bir hizmetin tüm sürümlerini hedef almaya yönelik trafik yönlendirme kurallarını tanımlayan Istio nesneleridir. Virtual service’ler, hizmetler arasında gelen trafiği yönlendirmek için kullanılır.
Hedef Grupları (Destination Rules)
Hedef grupları (destination rules), bir hizmetin farklı sürümlerinin yanı sıra farklı hedeflere yönlendirilebileceği hedeflerin tanımını sağlar. Destination rule’lar, hizmet router’ları tarafından kullanılır, hedeflerin hangi sürümünün hangi hedefe yönlendirileceğini tanımlarlar.
Traffic Shifting
Traffic shifting, yeni bir sürüm yayınlamaya hazır olduğumuzda eski sürümden yeni sürüme geçiş yapmak için kullanılan bir tekniktir. Bu işlem, hizmet router’ını güncelleyerek ve yeni sürümü hedef alan virtual service’leri oluşturarak gerçekleştirilir.
Mirroring
Mirroring, gerçek trafik yerine test amaçlı olarak bir kopya trafiğin oluşturulmasını sağlar. Bu, uygulamanın performansını ve hata toleransını ölçmek için kullanılabilir.
İstio Güvenlik Özellikleri
Kimlik Doğrulama ve Yetkilendirme
İstio, kimlik doğrulama ve yetkilendirme işlemlerini gerçekleştirmek için Citadel adlı bir bileşen kullanır. İletişim kurmak isteyen her iki taraf, kimlik doğrulama sürecinden geçer ve bir kez doğrulandıktan sonra, hizmetler arası iletişim şifrelenir.
Trafik Şifreleme
İstio, trafik şifrelemesi için Transport Layer Security (TLS) kullanır. TLS, hizmetler arası iletişimi şifrelemek için kullanılan standart bir protokoldür.
Network Policies
Network policies, hangi hizmetlerin birbirine erişebileceğini ve hangi portların açık kalacağını belirlemek için kullanılan bir araçtır. Istio, her hizmet için varsayılan bir network policy sağlar, ancak bu politikalar daha da özelleştirilebilir.
İstio Gözlem ve İzleme Özellikleri
Kiali Dashboard
Kiali, Istio’nun gözlem ve izleme aracıdır. Kiali, Kubernetes cluster’ınızdaki hizmetlerin sağlık durumu, trafik akışı ve hizmetler arası iletişimdeki sorunlar gibi birçok veriyi görselleştirir.
Prometheus
Prometheus, Istio’da kullanılan bir diğer gözlem aracıdır. Prometheus, metrikleri toplar ve bu metrikleri grafiksel olarak görselleştirebilir. Istio, Kubernetes cluster’ınızdaki tüm hizmetlerin metriklerini toplar ve bu metrikleri Prometheus’a gönderir.
Grafana
Grafana, metrikleri görselleştirmek için kullanılan bir diğer araçtır. Grafana, Prometheus gibi backend araçlarından verileri alabilir ve bu verileri grafikler, tablolar ve panolar halinde gösterir.
Son Olarak
Bu makalede, Istio’nun ne olduğunu, nasıl çalıştığını ve uygulamalarda nasıl kullanılabileceğini öğrendik. Istio, trafik yönetimi, güvenlik ve gözlem özellikleri sağlayarak, Kubernetes cluster’ınızdaki mikroservislerinizi daha güvenli ve esnek hale getirir. Istio, uygulamalarımızın geliştirme sürecini de kolaylaştırır ve daha hızlı ve güvenli bir şekilde dağıtmamıza olanak tanır.
ISTIO SIKÇA SORULAN SORULAR
Istio Nedir?
Istio, açık kaynaklı bir hizmet mesh platformudur. Hizmet mesh, mikro hizmetler arasındaki iletişimi kolaylaştırır ve güvenliği artırır. Istio, uygulama trafiğinin yönlendirilmesi, gözlenmesi ve kontrol edilmesi için bir ara katman görevi görür.
Kubernetes ve Istio arasındaki fark nedir?
Kubernetes ve Istio, farklı amaçlar için tasarlanmış farklı araçlardır. Kubernetes, konteyner orkestrasyonu için kullanılırken, Istio, mikro hizmetler arasındaki iletişimi kolaylaştırmak için kullanılır. Istio, Kubernetes üzerinde çalışır ve uygulama trafiği yönlendirmesi, gözlemi ve kontrolü için bir ara katman görevi görür.
Hangi durumlarda ve ne için Kubernetes ve Istio kullanılır?
Kubernetes, büyük ölçekli ve dağıtık uygulamaların yönetimi için kullanılır. İstio ise, mikro hizmetlerin yönetimi için kullanılır ve aynı zamanda güvenliği artırır.
Neden Kubernetes ve Istio kullanmalıyım?
Kubernetes ve Istio, karmaşık mikro hizmet mimarilerinin yönetimini kolaylaştırmak için tasarlanmıştır. Bu, uygulamanızın ölçeklendirilmesi ve dağıtımı için daha fazla esneklik sağlar. Ayrıca, uygulamanızın çalışmasını ve sağlığını izlemenize, güvenliğini sağlamanıza ve iş akışlarını yönetmenize olanak tanır.