Bu örnek senaryo, başlangıçta Kubernetes üzerinde çalıştırılacak şekilde tasarlanmış olan mevcut bir iş yükünün azure container apps'te çalıştırabileceği bir örneği gösterir. Azure Container Apps, ekiplerin karmaşık altyapıyı ve kapsayıcı düzenlemesini basitleştirmeye çalıştığı brownfield iş yükleri için uygundur. Örnek iş yükü kapsayıcılı mikro hizmetler uygulaması çalıştırır.
Örnek, Azure Kubernetes Service'teki Mikro hizmetler mimarisinde kullanılan iş yükünü alır ve uygulama platformu olarak Azure Container Apps'te yeniden barındırır.
İpucu
Mimari, bu makalede açıklanan tasarım seçimlerinden bazılarını gösteren örnek bir uygulama tarafından desteklenmektedir.
Bu mimarinin bir Visio dosyasını indirin.
Bu senaryoda kapsayıcı görüntüleri Azure Container Registry'den alınır ve bir Container Apps ortamına dağıtılır.
Aynı ortamı paylaşan hizmetler aşağıdakilerden yararlandır:
- İç giriş ve hizmet bulma
- Çalışma zamanı günlüğü için tek bir Log Analytics çalışma alanı
- Gizli dizilerin ve sertifikaların güvenli yönetimi
İş akışı hizmeti kapsayıcı uygulaması tek düzeltme modunda çalışıyor. Tek düzeltme modunda çalışan bir kapsayıcı uygulamasının sıfır çok çoğaltmaları tarafından yedeklenen tek bir düzeltmesi vardır. Çoğaltma, uygulama kapsayıcısı ve gerekli sepet kapsayıcılarından oluşur. Bu örnek sepet kapsayıcılarını kullanmadığından, her kapsayıcı uygulaması çoğaltması tek bir kapsayıcıyı temsil eder. Bu örnek ölçeklendirmeyi kullanmadığından, her kapsayıcı uygulaması için yalnızca bir çoğaltma çalıştırılır.
İş akışı, gizli dizileri yönetmek için karma bir yaklaşım kullanır. Yönetilen kimlikler, bu tür uygulamaların kod değişikliği gerektirmediği hizmetlerde kullanılır. İnsansız Hava Aracı Zamanlayıcı ve Teslimat hizmetleri, burada depolanan gizli dizilere erişmek üzere Azure Key Vault ile kimlik doğrulaması yapmak için kullanıcı tarafından atanan yönetilen kimlikleri kullanır. Kalan hizmetler, Container Apps hizmeti aracılığıyla uygulama düzeyinde gizli dizileri depolar.
Bu diyagramda çözümün çalışma zamanı mimarisi gösterilmektedir.
Bu mimarinin bir Visio dosyasını indirin.
- Alma hizmeti: İstemci isteklerini alır, arabelleğe alır ve Azure Service Bus aracılığıyla iş akışı hizmetine gönderir.
- İş akışı hizmeti: Azure Service Bus'tan gelen iletileri kullanır ve temel hizmetlere iletir.
- Paket hizmeti: Paketleri yönetir.
- İnsansız hava aracı zamanlayıcı hizmeti: İnsansız hava araçlarını zamanlar ve uçuşta insansız hava araçlarını izler.
- Teslim hizmeti: Zamanlanmış veya aktarımda olan teslimatları yönetir.
İnsansız hava aracı teslim hizmeti, birbiriyle uyumlu bir dizi Azure hizmetini kullanır.
Birincil bileşen Azure Container Apps'tir .
Bu özellikler, önceki AKS mimarisinin karmaşıklıklarının çoğunun yerini alır:
- Yerleşik hizmet bulma
- Tam olarak yönetilen HTTP ve HTTP/2 uç noktaları
- Tümleşik yük dengeleme
- Günlüğe kaydetme ve izleme
- KEDA tarafından desteklenen HTTP trafiğini veya olaylarını temel alan otomatik ölçeklendirme (Kubernetes tabanlı Olay Odaklı Otomatik Ölçeklendirme)
- Uygulama yükseltmeleri ve sürüm oluşturma
Azure Container Registry özel kapsayıcı görüntülerini depolar. Docker Hub gibi diğer kapsayıcı kayıt defterlerini de kullanabilirsiniz.
Azure Cosmos DB, MongoDB için açık kaynak Azure Cosmos DB'yi kullanarak verileri depolar. Mikro hizmetler genellikle durum bilgisi yoktur ve durumlarını dış veri depolarına yazar. Azure Cosmos DB, MongoDB ve Cassandra için açık kaynak API'leri olan bir NoSQL veritabanıdır.
Azure Service Bus , hizmet olarak güvenilir bulut mesajlaşması ve basit hibrit tümleştirme sunar. Service Bus, mikro hizmet uygulamalarıyla ortak olan zaman uyumsuz mesajlaşma desenlerini destekler.
Redis için Azure Cache yoğun trafik yüklerinin hızını ve performansını artırmak için uygulama mimarisine bir önbelleğe alma katmanı ekler.
Azure İzleyici , uygulamadaki ölçümleri ve günlükleri toplar ve depolar. Uygulamayı izlemek, uyarıları ve panoları ayarlamak ve hataların kök neden analizini yapmak için bu verileri kullanın. Bu senaryoda, altyapı ve uygulamanın kapsamlı izlemesi için log analytics çalışma alanı kullanılır.
Application Insights , hizmetler için genişletilebilir uygulama performansı yönetimi (APM) ve izleme sağlar. Her hizmet, uygulamayı izlemek ve verileri Azure İzleyici'ye yönlendirmek için Application Insights SDK'sı ile izlenir.
Uygulamaları yapılandırmak ve dağıtmak için Bicep Şablonları .
Bu örneğin alternatif senaryolarından biri, GitHub'da Azure Kubernetes Service (AKS) Fabrikam İnsansız Hava Aracı Teslimi deposunda bulunan Kubernetes kullanan Fabrikam İnsansız Hava Aracı Teslim uygulamasıdır.
İşletmeniz, Azure Container Apps kullanarak mikro hizmet kapsayıcılarının dağıtımını ve yönetimini basitleştirebilir. Container Apps, modern uygulamalar oluşturmak ve dağıtmak için tam olarak yönetilen sunucusuz bir ortam sağlar.
Fabrikam, Inc. (kurgusal bir şirket) kullanıcıların teslimat için malları almak için bir insansız hava aracı talep ettiği bir insansız hava aracı teslimat uygulaması uyguluyor. Bir müşteri teslim alma zamanladığında, arka uç sistemi bir insansız hava aracı ataması yapıyor ve kullanıcıya tahmini teslimat süresini bildiriyor.
Mikro hizmetler uygulaması bir Azure Kubernetes Service (AKS) kümesine dağıtıldı. Ancak Fabrikam ekibi gelişmiş veya platforma özgü AKS özelliklerinden yararlanmıyordu. Sonunda uygulamayı çok fazla ek yük olmadan Azure Container Apps'e geçirmişlerdir. Fabrikam, çözümünü Azure Container Apps'e taşıma yoluyla şunları gerçekleştirebildi:
- Uygulamayı neredeyse olduğu gibi geçirme: Uygulamalarını AKS'den Azure Container Apps'e taşırken çok az kod değişikliği gerekiyordu.
- Bicep şablonlarıyla hem altyapıyı hem de iş yükünü dağıtın: Uygulama kapsayıcılarını dağıtmak için Kubernetes YAML bildirimi gerekmezdi.
- Yönetilen giriş aracılığıyla uygulamayı kullanıma sunma: Alma Hizmeti'ni kullanıma sunma amacıyla dış, https tabanlı giriş için yerleşik destek, kendi girişlerini yapılandırma gereksinimini ortadan kaldırdı.
- ACR'den kapsayıcı görüntülerini çekme (Azure Container Registry): Azure Container Apps için belirli bir temel görüntü veya kayıt defteri gerekmez.
- Uygulama yaşam döngüsünü yönetme: Düzeltme özelliği, belirli bir kapsayıcı uygulamasının birden çok düzeltmesini çalıştırmayı ve A/B testi veya Mavi/Yeşil dağıtım senaryoları için bunlar arasında trafik bölmeyi destekler.
- Yönetilen kimliği kullanma: Fabrikam ekibi, Azure Key Vault ve Azure Container Registry ile kimlik doğrulaması yapmak için yönetilen kimlik kullanabildi.
- Yönetimi basitleştirmek ve kapsayıcı düzenleyici çalıştırmanın karmaşıklığını önlemek için brownfield mikro hizmet tabanlı bir uygulamayı hizmet olarak platforma (PaaS) dağıtın.
- Kapsayıcılı hizmetleri yerel ölçek-sıfırı destekleyen bir platforma geçirerek işlemleri ve yönetimi iyileştirin.
- tek düzeltme modunda iş akışı hizmeti gibi uzun süre çalışan bir arka plan işlemi yürütür.
Container Apps'in diğer yaygın kullanım alanları şunlardır:
- Sunucusuz, tüketim tabanlı bir platformda kapsayıcılı iş yüklerini çalıştırma.
- KEDA tarafından desteklenen HTTP/HTTPS trafiğini ve/veya Olay temelli tetikleyicileri temel alan uygulamaları otomatik ölçeklendirme
- Kapsayıcılı uygulamalar için bakım yükünü en aza indirme
- API uç noktalarını dağıtma
- Arka plan işleme uygulamalarını barındırma
- Olay odaklı işlemeyi işleme
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.
Güvenilirlik, uygulamanızın müşterilerinize sağladığınız taahhütleri karşılayabilmesini sağlar. Daha fazla bilgi için bkz. Güvenilirlikiçin tasarım gözden geçirme denetim listesi
Container Apps uygulamaları daha kolay dağıtmanıza, yönetmenize, korumanıza ve izlemenize olanak tanır. Kullanılabilirliği sağlamak için aşağıdaki temel özellikleri kullanabilirsiniz:
- Düzeltmeler, uygulama güncelleştirmelerini sıfır kapalı kalma süresiyle dağıtmanıza yardımcı olur. Düzeltmeleri kullanarak uygulama güncelleştirmelerinin dağıtımını yönetebilir ve mavi/yeşil dağıtımları ve A/B testini desteklemek için düzeltmeler arasında trafiği bölebilirsiniz (şu anda bu örnek iş yükünde kullanılmaz).
- Container Apps uçtan uca gözlemlenebilirlik özellikleriyle çalışan uygulamalarınızın bütünsel bir görünümüne sahip olursunuz. Container Apps Azure İzleyici ve Log Analytics ile tümleştirilmiştir. Bu sayede kapsayıcı uygulaması yürütmesini izleyebilir, ölçümlere ve olaylara göre uyarılar ayarlayabilirsiniz.
- Bir uygulama beklenmedik bir şekilde sonlandırıldığında, Container Apps hizmeti uygulamayı otomatik olarak yeniden başlatır.
- Trafik ve iş yükleri arttıkça talebi karşılamak için otomatik ölçeklendirme kurallarını etkinleştirebilirsiniz.
- Container Apps'in dinamik yük dengeleme özellikleri performansı iyileştirir (ancak bu örnek iş yükünde kullanılmaz).
Container Apps başarısız kapsayıcıları yeniden başlatmayı dener ve donanımları kullanıcılardan soyutlar. Microsoft geçici hataları işler ve işlem kaynaklarının yüksek oranda kullanılabilir olmasını sağlar.
Log Analytics ve Azure İzleyici aracılığıyla performans izleme, uygulamayı yük altında değerlendirmenize olanak tanır. Ölçümler ve günlük bilgileri, hataları önlemek ve oluşan hataların kök neden analizini gerçekleştirmek için eğilimleri tanımak için gereken verileri sağlar.
Güvenlik, kasıtlı saldırılara ve değerli verilerinizin ve sistemlerinizin kötüye kullanılmasına karşı güvence sağlar. Daha fazla bilgi için bkz. Güvenlikiçin tasarım gözden geçirme denetim listesi
- Kapsayıcı uygulamanız gizli değerleri gizli dizi olarak depolayabilir ve alabilir. Kapsayıcı uygulaması için bir gizli dizi tanımlandıktan sonra uygulama ve ilişkili ölçek kuralları tarafından kullanılabilir. Çoklu düzeltme modunda çalışıyorsanız, tüm düzeltmeler aynı gizli dizileri paylaşır. Gizli diziler uygulama kapsamı değişikliği olarak kabul edildiğinden, gizli dizi değerini değiştirirseniz yeni bir düzeltme oluşturulmaz. Ancak, çalışan düzeltmelerin yeni gizli dizi değerini yükleyebilmek için bunları yeniden başlatmanız gerekir. Bu senaryoda, uygulama ve ortam değişkeni değerleri kullanılır.
- Ortam değişkenleri: Hassas değerler uygulama düzeyinde güvenli bir şekilde depolanabilir. Ortam değişkenleri değiştirildiğinde kapsayıcı uygulaması yeni bir düzeltme oluşturur.
- Giriş: Dış erişimi sınırlamak için yalnızca alma hizmeti dış giriş için yapılandırılır. Arka uç hizmetlerine yalnızca Container Apps ortamındaki iç sanal ağ üzerinden erişilebilir. Hizmetleri yalnızca gerektiğinde İnternet'te kullanıma sunar. Bu mimari yerleşik dış giriş özelliğini kullandığından, bu çözüm giriş noktanızı bir web uygulaması güvenlik duvarının (WAF) arkasına tamamen yerleştirme veya DDoS Koruması planlarına ekleme olanağı sunmaz. Web'e yönelik tüm iş yüklerinin önünde bir web uygulaması güvenlik duvarı bulunmalıdır.
- Sanal ağ: Ortam oluşturduğunuzda özel bir sanal ağ sağlayabilirsiniz; aksi takdirde, bir sanal ağ otomatik olarak oluşturulur ve Microsoft tarafından yönetilir. Microsoft tarafından yönetilen bu sanal ağı, örneğin ağ güvenlik grupları (NSG) ekleyerek veya trafiği çıkış güvenlik duvarına zorlama yoluyla değiştiremezsiniz. Bu örnekte otomatik olarak oluşturulan bir sanal ağ kullanılır.
Daha fazla ağ topolojisi seçeneği için bkz . Azure Container Apps'te ağ mimarisi.
- Container Apps, uygulamanızın kapsayıcı uygulamanızda kimlik bilgilerini yönetmeden Azure Key Vault gibi Microsoft Entra Id ile korunan diğer kaynaklarda kimliğini doğrulamasını sağlayan Microsoft Entra yönetilen kimliklerini destekler. Kapsayıcı uygulaması sistem tarafından atanan, kullanıcı tarafından atanan veya her iki yönetilen kimlik türünü de kullanabilir. AD kimlik doğrulamasını desteklemeyen hizmetler için gizli dizileri Azure Key Vault'ta depolamanız ve gizli dizilere erişmek için yönetilen kimlik kullanmanız gerekir.
- Azure Container Registry erişimi için yönetilen kimlikleri kullanın. Azure Container Apps, iş yükünüz için kapsayıcı kayıt defteri erişiminden farklı bir yönetilen kimlik kullanmanıza olanak tanır. Yönetilen kimlikleriniz üzerinde ayrıntılı erişim denetimi elde etmek için bu yaklaşım önerilir.
Maliyet İyileştirme, gereksiz giderleri azaltmanın ve operasyonel verimlilikleri iyileştirmenin yollarını gözden geçmektir. Daha fazla bilgi için bkz. Maliyet İyileştirmeiçin tasarım gözden geçirme denetim listesi.
- Microsoft Azure İyi Tasarlanmış Çerçeve'deki Maliyet bölümünde maliyetle ilgili önemli noktalar açıklanmaktadır. Belirli bir senaryonuzun maliyetlerini tahmin etmek için Azure fiyatlandırma hesaplayıcısını kullanın.
- Azure Container Apps tüketim tabanlı fiyatlandırma modeline sahiptir.
- Azure Container Apps, sıfıra ölçeklendirmeyi destekler. Kapsayıcı uygulaması sıfıra ölçeklendirildiğinde ücret alınmaz.
- Bu senaryoda, Azure Cosmos DB ve Redis için Azure Cache başlıca maliyet etmenleridir.
Operasyonel Mükemmellik, bir uygulamayı dağıtan ve üretimde çalışır durumda tutan operasyon süreçlerini kapsar. Daha fazla bilgi için bkz. operasyonel mükemmellikiçin tasarım gözden geçirme denetim listesi
Operasyonel mükemmelliği elde etmek için Container Apps hizmeti şu özellikleri sunar:
- Otomatik CI/CD dağıtımlarını ayarlamak için GitHub Actions tümleştirmesi.
- Uygulama kodunuzda ve ölçek kurallarınızda yapılan değişiklikleri test etmek için trafiğin bölünmesiyle çoklu düzeltme modu.
- Kapsayıcılı uygulamanızla ilgili içgörü sağlamak için Azure İzleyici ve Log Analytics ile tümleştirme.
- Log Analytics, her Container Apps ortamında bilgi toplamak için günlük toplama sağlar.
Performans Verimliliği, iş yükünüzün kullanıcılar tarafından talep edilen talepleri verimli bir şekilde karşılayacak şekilde ölçeklendirilebilmesidir. Daha fazla bilgi için bkz. Performans Verimliliğiiçin Tasarım gözden geçirme denetim listesi.
Bu çözümde performansla ilgili dikkat edilmesi gerekenler:
- İş yükü birden çok mikro hizmet uygulaması arasında dağıtılır.
- Her mikro hizmet bağımsızdır ve bağımsız olarak ölçeklendirilebilmeleri için diğer mikro hizmetlerle hiçbir şey paylaşmaz.
- İş yükü arttıkça otomatik ölçeklendirme etkinleştirilebilir.
- İstekler dinamik olarak yük dengelenir.
- CPU ve bellek kullanımı, bant genişliği bilgileri ve depolama kullanımı gibi ölçümler Azure İzleyici aracılığıyla sağlanır.
Azure Container Apps örnek senaryo deposundaki README.md adımları izleyin.
Microsoft bu makaleyi korur. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.
Asıl yazar:
- Catherine Bundy | Teknik Yazar