Düzenle

Aracılığıyla paylaş


Azure Container Apps ile mikro hizmetleri dağıtma

Azure Container Apps
Azure Cosmos DB
Azure Service Bus

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

GitHub logosu Mimari, bu makalede açıklanan tasarım seçimlerinden bazılarını gösteren örnek bir uygulama tarafından desteklenmektedir.

Mimari

Azure Container Apps ile dağıtılan mikro hizmetleri gösteren diyagram.

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 olur. Ç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.

Çözüm için çalışma zamanı mimarisini gösteren diyagram.

Bu diyagramda çözümün çalışma zamanı mimarisi gösterilmektedir.

Bu mimarinin bir Visio dosyasını indirin.

Veri akışı

  1. Alma hizmeti: İstemci isteklerini alır, arabelleğe alır ve Azure Service Bus aracılığıyla iş akışı hizmetine gönderir.
  2. İş akışı hizmeti: Azure Service Bus'tan gelen iletileri kullanır ve temel hizmetlere iletir.
  3. Paket hizmeti: Paketleri yönetir.
  4. İ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.
  5. Teslim hizmeti: Zamanlanmış veya aktarımda olan teslimatları yönetir.

Bileşenler

İnsansız hava aracı teslim hizmeti, birbiriyle uyumlu bir dizi Azure hizmetini kullanır.

Azure Container Apps

Birincil bileşen Azure Container Apps'tir .

Önceki AKS mimarisinin karmaşıklıklarının çoğu şu özelliklerle değiştirilir:

  • 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
  • HTTP trafiğine veya KEDA tarafından desteklenen olaylara göre otomatik ölçeklendirme
  • Uygulama yükseltmeleri ve sürüm oluşturma

Dış depolama ve diğer bileşenler

API anahtarları, parolalar ve sertifikalar gibi gizli dizileri güvenli bir şekilde depolamak ve bunlara erişmek için Azure Key Vault hizmeti.

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ı .

Alternatifler

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.

Senaryo ayrıntıları

İş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 edebildiği bir insansız hava aracı teslimat uygulaması uyguladı. 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 Apps belirli bir temel görüntü veya kayıt defteri gerektirmez.
  • 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.

Olası kullanım örnekleri

  • Kapsayıcı düzenleyici yönetiminin operasyonel karmaşıklığını önlemek için brownfield mikro hizmet tabanlı bir uygulamayı hizmet olarak platform (PaaS) teklifine 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

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.

Kullanılabilirlik

Container Apps, uygulamaları daha kolay dağıtmanıza, yönetmenize, korumanıza ve izlemenize olanak tanır. Kullanılabilirlik şu temel özelliklerle sağlanabilir:

  • 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.
  • Performans, Container Apps'in dinamik yük dengeleme özellikleri tarafından iyileştirilmiştir (şu anda bu örnek iş yükünde kullanılmaz).

Operasyonel mükemmellik

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ükemmellik sütununa genel bakış.

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.

Performans verimliliği

Performans verimliliği, kullanıcılar tarafından anlamlı bir şekilde yerleştirilen talepleri karşılamak amacıyla iş yükünüzü ölçeklendirme becerisidir. Daha fazla bilgi için bkz . Performans verimliliği sütununa genel bakış.

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.
  • Log Analytics, her Container Apps ortamında bilgi toplamak için günlük toplama sağlar.

Güvenilirlik

Güvenilirlik, uygulamanızın müşterilerinize sağladığınız taahhütleri karşılayabilmesini sağlar. Daha fazla bilgi için bkz . Güvenilirlik sütununa genel bakış.

Container Apps başarısız kapsayıcıları yeniden başlatmayı dener ve donanımları kullanıcılardan soyutlar. Geçici hatalar ve yedekleme işlem kaynaklarının yüksek kullanılabilirliği Microsoft tarafından işlenir.

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

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üvenlik sütununa genel bakış.

Gizli Diziler

  • 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.

Ağ güvenliği

  • 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. Bu Microsoft tarafından yönetilen 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.

İş yükü kimlikleri

  • 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ü için kapsayıcı kayıt defteri erişiminden farklı bir yönetilen kimlik kullanmayı destekler. Bu, yönetilen kimliklerinizde ayrıntılı erişim denetimleri elde etmek istediğinizde önerilir.

Maliyet iyileştirme

  • 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.

Bu senaryoyu dağıtın

Bu senaryoyu dağıtmak için Azure Container Apps örnek senaryo deposundaki README.md adımlarını izleyin.

Katkıda Bulunanlar

Bu makale Microsoft tarafından yönetilir. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.

Asıl yazar:

Sonraki adımlar