Bu makalede, Azure Kubernetes Service(AKS) dağıtıldıktan sonra Cloud Native Computing Foundation (CNCF) projelerini kullanan bir uygulamayı kavramsallaştırma, mimari oluşturma ve dağıtma adımları gösterilmektedir. Mimaride GitHub'da CNCF Projeleri Uygulaması açıklanmaktadır. Depodaki kurulum yönergeleri, mimariyi dağıtmaya yönelik adımlar sağlar.
Mimari
Bu mimarinin bir Visio dosyasını indirin.
İş yükü, çalışanların gider raporlarını göndermek ve görüntülemek için kullanabileceği basit bir web uygulamasıdır. Bir çalışan gider raporu gönderdiğinde, çalışanın yöneticisi bir e-posta alır.
İş Akışı
Uygulama akışı
1. Çalışan, giderleri göndermek için NGINX Girişi aracılığıyla bir web uygulamasına erişir.
2. Web uygulaması, çalışanın yöneticisini almak için bir API uygulaması çağırır.
3. Web uygulaması, gider raporunun oluşturulması için oluşturulan bir iletiyi bir Knative aracısına iletir.
4. Gider raporu MySQL'e kaydedilir.
5. Knative, E-posta Dağıtıcısı işlevini yük olarak gider iletisiyle tetikler.
6. E-posta Dağıtıcısı bir SendGrid iletisi oluşturur.
7. SendGrid, alınan yöneticiye gözden geçirilmesi için bir e-posta gönderir.
DevOps akışı
a. Geliştiriciler Visual Studio Code'da kodu yazar veya güncelleştirir.
b. Geliştiriciler kodu Visual Studio Code'daki yerel çalışma alanlarından GitHub'a iletir.
c. GitHub Web Kancası, GitHub kodunu kopyalayan Tekton işlem hatlarını tetikler.
d. İşlem hatları derleme ve gönderme ile kapsayıcı görüntülerini bir Harbor kayıt defterine gönderir.
e. Tekton web uygulamasını, API uygulamasını ve E-posta Dağıtıcısı uygulamalarını dağıtır.
f. Prometheus uygulama ölçümlerini yakalar.
r. Mühendisler grafana panosundaki ölçümleri izler.
h. DevOps mühendisleri Grafana Panosu'nu izler.
Altyapı
i. AKS temelinde sunulan altyapıyı temel alan AKS kümesi.
ii. Küme depolama için kullanılan Rook Ceph.
iii. Bağlayıcı hizmet ağı.
iv. Kubernetes kümesinde genel uygulama izleme için Jaeger.
Küm işlemleri
GitOps yönetimini kullanarak kümeleri ve küme önyüklemesini yönetmeyi yararlı bulabilirsiniz. Flux popüler bir GitOps işlecidir. Güncelleştirilmiş bildirimler ve Helm grafiklerinde doğrulamayı etkinleştirmek için genellikle GitHub Actions ile eşleştirilir.
Bileşenler
Azure
- Azure Kubernetes Service (AKS). Yönetilen küme altyapısını sağlar.
Açık kaynak yazılım
- Kubernetes. CNCF. Kapsayıcılı uygulamaların dağıtımını, ölçeklendirmesini ve yönetimini otomatikleştirir.
- Flux. CNCF. Altyapı teslimi için GitOps sağlayıcısı.
- Kale. CNCF. Kümeler için depolama yönetimi sağlar.
- Liman'a. CNCF. Görüntüler için Container Registry.
- Bağlayıcı. CNCF. OpenFaaS, NGINX, Prometheus ve Jaeger ile tümleşen hizmet ağı.
- Prometheus. CNCF. Uygulama ölçümlerini yakalar.
- Jaeger'a. CNCF. Kubernetes kümesinde genel uygulama izleme sağlar.
- Knative. CNCF. Sunucusuz ve Olay Odaklı uygulama oluşturmak için kullanılır. E-posta Dağıtıcısı işlevini dağıtır.
- MySQL. Gider raporlarını depolayan veritabanı.
- NGINX. Çalışanların gider raporlarını göndermek için web uygulamasına erişmek için kullandığı Kubernetes giriş denetleyicisi.
- Tekton' a. Sürekli tümleştirme /sürekli dağıtım (CI/CD) için kullanılan Continuous Delivery Foundation projesi. Web uygulamasını, API uygulamasını ve E-posta Dağıtıcısı uygulamalarını dağıtır.
- Grafana' ya. Uygulama ölçümleri için pano.
- SendGrid. Gider raporu incelemesi için yöneticiye posta gönderen dış e-posta hizmeti.
- GitHub. Kod deposu. Tekton işlem hatları GitHub kodunu kullanır.
- .NET Core. Web ön ucu ve web API'sinde kullanılır.
- Flux. GitOps yönetimi sağlar.
Alternatifler
Bu projede CNCF mezunu ve inkübed projeler kullanılıyor. Kullanılan hizmetler için birden çok alternatif olabilir. Alternatifler için CNCF web sitesine bakın. Bunlardan bazılarını açıklayan bazı kaynaklar şunlardır:
- Hizmet ağı seçeneklerinin karşılaştırması
- Hizmet olarak işlev (sunucusuz) alternatifler
- Vitess: Kubernetes'te parçalı MySQL
- Zipkin ve OpenTracing kullanarak mikro hizmetlerinizi izleme
- Geliştirici odaklı deneyime sahip GitOps
Çeşitli Azure hizmetlerini alternatif olarak düşünebilirsiniz. Örneğin, Web Uygulaması Yönlendirme, Azure Container Registry, Azure Container Storage, Azure İzleyici, Prometheus için Azure İzleyici yönetilen hizmeti, Azure Yönetilen Grafana.
Microsoft ayrıca, NGINX, Istio, Prometheus, Grafana ve OpenEBS gibi AKS'de Yönetilen Eklentiler/Türetilmiş projeler olarak açık kaynak yazılım projelerini destekler.
Senaryo ayrıntıları
Bu mimariyi yalnızca AKS'ye değil, herhangi bir Kubernetes kümesine dağıtabilirsiniz. AKS platformunun esnekliğinin bir örneğini sağlar. AKS, Yönetilen Kubernetes kümesinin Azure'da dağıtılmasına olanak sağlar.
Bu makaleyi gözden geçirdikten sonra, çoğunlukla CNCF projelerinden oluşan tipik bir uygulamayı nasıl dağıtabileceğinizi iyi anlayacaksınız.
Olası kullanım örnekleri
Diğer kullanım örneklerinde de benzer tasarım desenleri bulunur:
- Kapsayıcı tabanlı iş yükleri için CI/CD işlem hattı oluşturma
- AKS için GitOps kullanma
Dikkat edilmesi gereken noktalar
Bu önemli noktalar, bir iş yükünün kalitesini artırmak için kullanılabilecek bir dizi yol gösteren ilke olan Azure İyi Tasarlanmış Çerçeve'nin yapı taşlarını uygular. Daha fazla bilgi için bkz . Microsoft Azure İyi Tasarlanmış Çerçeve.
- Kubernetes kümesi için, sanal makine (VM) SKU'su DS2_v2 veya daha büyük olan en az 3 düğümlü bir kullanıcı düğümü havuzuna ihtiyacınız vardır.
- Azure yönetilen diskleri kullanan birimler bölgeler arasında eklenemez. Aynı bölgede bulunmaları gerekir.
- Kale kurulumu 20 ile 25 dakika arasında sürebilir. Sonraki adıma geçmeden önce Ceph kümesinin tamamen sağlandığından emin olun.
- Jaeger kurulumu yaklaşık 5 dakika sürer.
- Linkerd'in panoda görünmesi yaklaşık 12 dakika sürer.
Maliyet iyileştirme
Maliyet iyileştirmesi, gereksiz giderleri azaltmanın ve operasyonel verimlilikleri iyileştirmenin yollarını aramaktır. Daha fazla bilgi için bkz . Maliyet iyileştirme sütununa genel bakış.
Maliyetleri tahmin etmek için Azure fiyatlandırma hesaplayıcısını kullanabilirsiniz. Aşağıda, bu projeyi Azure'da çalıştırmak için bazı fiyatlandırma konuları yer alır. Göz ardı edilebilir bir bant genişliği maliyeti uygulanır.
Sanal Makine Ölçek Kümeleri
AKS kümesi için Azure Sanal Makine Ölçek Kümeleri kullanılan VM'ler ücretlendirilir. Daha fazla bilgi için bkz. fiyatlandırma Sanal Makine Ölçek Kümeleri.
Depolama
Depolama maliyetleri Rook yüklemesi için gereken her veri diski için geçerlidir. Bu 3 düğümlü AKS kümesi için Rook yapılandırması düğüm başına iki veri diski kullanır: 1 GB disk ve 200 GB disk. Daha fazla bilgi için bkz . Depolama maliyeti fiyatlandırması.
Yük Dengeleyici
Bu AKS kümesiyle ilişkili yük dengeleyici ücrete tabi olur. Daha fazla bilgi için bkz . Load Balancer fiyatlandırması.
Sanal ağ
AKS kümesi tarafından kullanılan sanal ağ ücretlendirilir. Daha fazla bilgi için bkz. fiyatlandırma Sanal Ağ.
Bu senaryoyu dağıtın
Bu senaryoyu Azure/cloud-native-app GitHub deposundan dağıtın. CNCF Projeleri Uygulamasını ortamınıza dağıtmak için sağlanan dizideki kurulum yönergelerini izleyin.
Bu depo bir topluluk projesidir. Topluluktan yapılan iyileştirmeler ve değişiklikler için çekme isteklerini (PR) kabul eder ve onaylar.