Nasazení mikroslužeb pomocí Azure Container Apps

Azure Container Apps
Azure Cosmos DB
Azure Service Bus

Tento ukázkový scénář ukazuje příklad existující úlohy, která byla původně navržena tak, aby běžela v Kubernetes, může místo toho běžet v Azure Container Apps. Azure Container Apps je vhodná pro úlohy brownfieldu, ve kterých týmy hledají zjednodušení komplexní infrastruktury a orchestrace kontejnerů. Ukázková úloha spouští kontejnerizovanou aplikaci mikroslužeb.

Příklad přebírá úlohy používané v architektuře mikroslužeb ve službě Azure Kubernetes Service a jako aplikační platformu ji přehostuje ve službě Azure Container Apps.

Tip

Logo GitHubu Architektura je podporována ukázkovou implementací , která ilustruje některé možnosti návrhu popsané v tomto článku.

Architektura

Diagram znázorňující mikroslužby nasazené pomocí Azure Container Apps

Stáhněte si soubor aplikace Visio s touto architekturou.

V tomto scénáři jsou image kontejnerů zdrojové ze služby Azure Container Registry a nasazené do prostředí Container Apps.

Služby, které sdílejí stejné prostředí, využívají:

  • Interní příchozí přenos dat a zjišťování služeb
  • Jeden pracovní prostor služby Log Analytics pro protokolování za běhu
  • Zabezpečená správa tajných kódů a certifikátů

Aplikace kontejneru služby pracovního postupu je spuštěná v režimu jedné revize. Aplikace typu kontejner spuštěná v režimu jedné revize bude mít jednu revizi, která je zajištěna nulou-N replik. Replika se skládá z kontejneru aplikace a všech požadovaných kontejnerů sajdkáře. Tento příklad nevyužívá kontejnery sajdkáře, proto každá replika aplikace kontejneru představuje jeden kontejner. Vzhledem k tomu, že tento příklad nepoužívá škálování, bude pro každou aplikaci kontejneru spuštěna pouze jedna replika.

Pracovní postup používá hybridní přístup ke správě tajných kódů. Spravované identity se používají ve službách, kde taková implementace nevyžaduje žádné změny kódu. Služba Drone Scheduler a Delivery services používají spravované identity přiřazené uživatelem k ověření ve službě Azure Key Vault pro přístup k tajným kódům uloženým v této službě. Zbývající služby ukládají tajné kódy prostřednictvím služby Container Apps na úrovni aplikace.

Diagram znázorňující architekturu modulu runtime pro řešení

Tento diagram znázorňuje architekturu modulu runtime pro řešení.

Stáhněte si soubor aplikace Visio s touto architekturou.

Tok dat

  1. Služba příjmu dat: Přijímá požadavky klientů, ukládá je do vyrovnávací paměti a odesílá je přes Azure Service Bus do služby pracovního postupu.
  2. Služba pracovního postupu: Využívá zprávy ze služby Azure Service Bus a odesílá je do podkladových služeb.
  3. Služba balíčků: Spravuje balíčky.
  4. Služba plánovače dronů: Naplánuje drony a monitoruje letové drony.
  5. Služba doručování: Spravuje dodávky, které jsou naplánované nebo přenášené.

Komponenty

Služba doručování pomocí dronů používá řadu služeb Azure společně s ostatními.

Azure Container Apps

Azure Container Apps je primární komponenta.

Mnohé složitosti předchozí architektury AKS jsou nahrazeny těmito funkcemi:

  • Integrované zjišťování služeb
  • Plně spravované koncové body HTTP a HTTP/2
  • Integrované vyrovnávání zatížení
  • Protokolování a monitorování
  • Automatické škálování na základě provozu HTTP nebo událostí využívajících KEDA
  • Upgrady aplikací a správa verzí

Externí úložiště a další komponenty

Služba Azure Key Vault pro bezpečné ukládání tajných kódů a přístup k nim, jako jsou klíče rozhraní API, hesla a certifikáty.

Azure Container Registry ukládá privátní image kontejnerů. Můžete také použít další registry kontejnerů, jako je Docker Hub.

Azure Cosmos DB ukládá data pomocí opensourcové služby Azure Cosmos DB pro MongoDB. Mikroslužby jsou obvykle bezstavové a zapisují jejich stav do externích úložišť dat. Azure Cosmos DB je databáze NoSQL s opensourcovými rozhraními API pro MongoDB a Cassandra.

Azure Service Bus nabízí spolehlivé cloudové zasílání zpráv jako službu a jednoduchou hybridní integraci. Service Bus podporuje vzory asynchronního zasílání zpráv, které jsou společné s aplikacemi mikroslužeb.

Azure Cache for Redis přidává vrstvu ukládání do mezipaměti do architektury aplikace, aby se zlepšila rychlost a výkon pro vysoké zatížení provozu.

Azure Monitor shromažďuje a ukládá metriky a protokoly z aplikace. Pomocí těchto dat můžete monitorovat aplikaci, nastavit výstrahy a řídicí panely a provádět analýzu hlavních příčin selhání. Tento scénář používá pracovní prostor služby Log Analytics k komplexnímu monitorování infrastruktury a aplikace.

Application Insights poskytuje rozšiřitelnou správu výkonu aplikací (APM) a monitorování služeb. Každá služba je instrumentovaná pomocí sady Application Insights SDK pro monitorování aplikace a směrování dat do služby Azure Monitor.

Šablony Bicep pro konfiguraci a nasazení aplikací

Alternativy

Alternativním scénářem tohoto příkladu je aplikace pro doručování dronů Fabrikam pomocí Kubernetes, která je k dispozici na GitHubu v úložišti doručování pomocí dronů Fabrikam (AKS) Azure Kubernetes Service (AKS).

Podrobnosti scénáře

Vaše firma může zjednodušit nasazení a správu kontejnerů mikroslužeb pomocí Azure Container Apps. Container Apps poskytuje plně spravované bezserverové prostředí pro sestavování a nasazování moderních aplikací.

Společnost Fabrikam, Inc. (fiktivní společnost) implementovala aplikaci pro doručování pomocí dronů, kde si uživatelé mohou vyžádat dron, aby si mohli vyzvednout zboží k dodání. Když si zákazník naplánuje vyzvednutí, back-endový systém přiřadí dron a informuje uživatele o předpokládaném času doručení.

Aplikace mikroslužeb byla nasazena do clusteru Azure Kubernetes Service (AKS). Tým Fabrikam ale nevyužil pokročilé funkce AKS ani funkce AKS specifické pro danou platformu. Nakonec migrovali aplikaci do Azure Container Apps bez velké režie. Přenesením řešení do Azure Container Apps dokázala společnost Fabrikam:

  • Migrujte aplikaci téměř tak, jak je: Při přesunu aplikace z AKS do Azure Container Apps se vyžadovaly velmi minimální změny kódu.
  • Nasazení infrastruktury i úlohy pomocí šablon Bicep: K nasazení kontejnerů aplikací nebyly potřeba žádné manifesty YAML Kubernetes.
  • Zveřejnění aplikace prostřednictvím spravovaných příchozích dat: Integrovaná podpora externích příchozích dat založených na https, aby služba příjmu dat zpřístupnila potřebu konfigurace vlastního příchozího přenosu dat.
  • Vyžádání imagí kontejneru z ACR: Azure Container Apps nevyžaduje konkrétní základní image nebo registr.
  • Správa životního cyklu aplikace: Funkce revize podporuje spouštění více revizí konkrétní aplikace kontejneru a rozdělení provozu mezi ně pro scénáře testování A/B nebo modré/zelené nasazení.
  • Použití spravované identity: Tým Fabrikam mohl použít spravovanou identitu k ověření ve službě Azure Key Vault a ve službě Azure Container Registry.

Potenciální případy použití

  • Nasaďte aplikaci založenou na mikroslužbách brownfield do nabídky PaaS (platforma jako služba), abyste se vyhnuli provozní složitosti správy orchestrátoru kontejnerů.
  • Optimalizujte operace a správu migrací kontejnerizovaných služeb na platformu, která podporuje nativní škálování na nulu.
  • Spusťte dlouhotrvající proces na pozadí, například službu pracovního postupu v režimu jedné revize.

Mezi běžná použití Container Apps patří:

  • Spouštění kontejnerizovaných úloh na bezserverové platformě založené na spotřebě
  • Automatické škálování aplikací na základě provozu HTTP/HTTPS nebo triggerů řízených událostmi, které podporuje KEDA
  • Minimalizace režijních nákladů na údržbu pro kontejnerizované aplikace
  • Nasazování koncových bodů rozhraní API
  • Hostování aplikací určených ke zpracování na pozadí
  • Zajištění zpracování řízeného událostmi

Důležité informace

Tyto aspekty implementují pilíře dobře architektuře Azure, což je sada hlavních principů, které je možné použít ke zlepšení kvality úlohy. Další informace naleznete v tématu Microsoft Azure Well-Architected Framework.

Dostupnost

Container Apps umožňuje snadněji nasazovat, spravovat, spravovat a monitorovat aplikace. Dostupnost je možné zajistit těmito klíčovými funkcemi:

  • Revize vám pomůžou nasadit aktualizace aplikací s nulovým výpadkem. Revize můžete použít ke správě nasazení aktualizací aplikací a rozdělení provozu mezi revizemi, které podporují modrá/zelená nasazení a testování A/B (aktuálně se v této ukázkové úloze nepoužívá).
  • Díky komplexním funkcím pozorovatelnosti Container Apps máte ucelený přehled o spuštěných aplikacích. Služba Container Apps je integrovaná se službou Azure Monitor a Log Analytics, která umožňuje sledovat spouštění aplikací kontejnerů a nastavovat upozornění na základě metrik a událostí.
  • Když se aplikace neočekávaně ukončí, služba Container Apps ji automaticky restartuje.
  • Pravidla automatického škálování můžete povolit tak, aby splňovala poptávku při nárůstu provozu a úloh.
  • Výkon je optimalizovaný funkcemi dynamického vyrovnávání zatížení služby Container Apps (aktuálně se v této ukázkové úloze nepoužívají).

Provozní dokonalost

Efektivita provozu zahrnuje provozní procesy, které nasazují aplikaci a udržují ji spuštěnou v produkčním prostředí. Další informace najdete v tématu Přehled pilíře efektivity provozu.

Pro dosažení efektivity provozu nabízí služba Container Apps tyto funkce:

  • Integrace GitHub Actions pro nastavení automatizovaných nasazení CI/CD
  • Režim více revizí s rozdělením provozu pro testování změn kódu aplikace a pravidel škálování
  • Integrace se službou Azure Monitor a Log Analytics za účelem získání přehledu o kontejnerizované aplikaci

Efektivita výkonu

Efektivita výkonu je schopnost úlohy škálovat se tak, aby efektivním způsobem splňovala požadavky, které na ni kladou uživatelé. Další informace najdete v tématu Přehled pilíře efektivity výkonu.

Aspekty výkonu v tomto řešení:

  • Úloha se distribuuje mezi několik aplikací mikroslužeb.
  • Každá mikroslužba je nezávislá a nesdílí nic s ostatními mikroslužbami, aby se mohly nezávisle škálovat.
  • Automatické škálování je možné povolit při nárůstu úloh.
  • Požadavky se dynamicky vyrovnávají zatížení.
  • Metriky, včetně využití procesoru a paměti, informací o šířce pásma a využití úložiště, jsou dostupné prostřednictvím služby Azure Monitor.
  • Log Analytics poskytuje agregaci protokolů pro shromažďování informací v jednotlivých prostředích Container Apps.

Spolehlivost

Spolehlivost zajišťuje, že vaše aplikace může splňovat závazky, které uděláte pro vaše zákazníky. Další informace najdete v tématu Přehled pilíře spolehlivosti.

Container Apps se pokusí restartovat kontejnery, které selhávají, a od uživatelů se zbaví hardwaru. Microsoft zpracovává přechodné selhání a vysokou dostupnost backingových výpočetních prostředků.

Monitorování výkonu prostřednictvím Log Analytics a Azure Monitoru umožňuje vyhodnotit aplikaci při zatížení. Metriky a informace o protokolování poskytují data potřebná k rozpoznání trendů, aby se zabránilo selháním a provedení analýzy původní příčiny selhání, když k nim dojde.

Zabezpečení

Zabezpečení poskytuje záruky proti záměrným útokům a zneužití cenných dat a systémů. Další informace najdete v tématu Přehled pilíře zabezpečení.

Tajné kódy

  • Vaše aplikace kontejneru může ukládat a načítat citlivé hodnoty jako tajné kódy. Jakmile je tajný klíč definovaný pro aplikaci kontejneru, je k dispozici pro použití aplikací a všechna přidružená pravidla škálování. Pokud používáte režim více revizí, všechny revize budou sdílet stejné tajné kódy. Protože se tajné kódy považují za změnu oboru aplikace, pokud změníte hodnotu tajného kódu, není vytvořena nová revize. Pokud ale všechny spuštěné revize načtou novou hodnotu tajného kódu, budete je muset restartovat. V tomto scénáři se používají hodnoty proměnných aplikací a prostředí.
  • Proměnné prostředí: Citlivé hodnoty je možné bezpečně uložit na úrovni aplikace. Při změně proměnných prostředí vytvoří aplikace kontejneru novou revizi.

Zabezpečení sítě

  • Příchozí přenos dat: Pokud chcete omezit externí přístup, je pro externí příchozí přenos dat nakonfigurovaná pouze služba příjmu dat. Back-endové služby jsou přístupné jenom prostřednictvím interní virtuální sítě v prostředí Container Apps. V případě potřeby zpřístupňujte pouze služby na internetu. Vzhledem k tomu, že tato architektura používá integrovanou funkci externího příchozího přenosu dat, toto řešení nenabízí možnost zcela umístit váš bod příchozího přenosu dat za firewallem webových aplikací (WAF) nebo ho zahrnout do plánů ochrany před útoky DDoS Protection. Všechny webové úlohy by se měly předcházet bránou firewall webových aplikací.
  • Virtuální síť: Při vytváření prostředí můžete poskytnout vlastní virtuální síť; jinak se virtuální síť automaticky vygeneruje a spravuje Microsoft. S touto virtuální sítí spravovanou Microsoftem nemůžete manipulovat, například přidáním skupin zabezpečení sítě (NSG) nebo vynucením tunelového propojení do výchozí brány firewall. Tento příklad používá automaticky vygenerovanou virtuální síť.

Další možnosti síťové topologie najdete v tématu Síťová architektura v Azure Container Apps.

Identity úloh

  • Container Apps podporuje spravované identity Microsoft Entra, které vaší aplikaci umožňují ověřit se v jiných prostředcích chráněných ID Microsoft Entra, jako je Azure Key Vault, bez správy přihlašovacích údajů v aplikaci kontejneru. Aplikace kontejneru může používat systémově přiřazené, přiřazené uživatelem nebo oba typy spravovaných identit. U služeb, které nepodporují ověřování AD, byste měli ukládat tajné kódy ve službě Azure Key Vault a používat spravovanou identitu pro přístup k tajným kódům.
  • Použití spravovaných identit pro přístup ke službě Azure Container Registry Azure Container Apps podporuje použití jiné spravované identity pro úlohu než přístup k registru kontejnerů, což se doporučuje při hledání podrobných řízení přístupu u spravovaných identit.

Optimalizace nákladů

  • Azure Container Apps má cenový model založený na spotřebě.
  • Azure Container Apps podporuje škálování na nulu. Když se aplikace kontejneru škáluje na nulu, neúčtují se žádné poplatky.
  • V tomto scénáři jsou hlavními ovladači nákladů Azure Cosmos DB a Azure Cache for Redis.

Nasazení tohoto scénáře

Pokud chcete tento scénář nasadit, postupujte podle kroků v README.md v ukázkovém úložišti scénáře Azure Container Apps.

Přispěvatelé

Tento článek spravuje Microsoft. Původně byla napsána následujícími přispěvateli.

Hlavní autor:

Další kroky