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
Architektura je podporována ukázkovou implementací , která ilustruje některé možnosti návrhu popsané v tomto článku.
Architektura
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 kontejneru spuštěná v režimu jedné revize má 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í, spustí se pro každou aplikaci kontejneru jenom 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.
Tento diagram znázorňuje architekturu modulu runtime pro řešení.
Stáhněte si soubor aplikace Visio s touto architekturou.
Tok dat
- 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.
- Služba pracovního postupu: Využívá zprávy ze služby Azure Service Bus a odesílá je do podkladových služeb.
- Služba balíčků: Spravuje balíčky.
- Služba plánovače dronů: Naplánuje drony a monitoruje letové drony.
- 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.
Tyto funkce nahrazují mnoho složitostí předchozí architektury AKS:
- 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í založené na provozu http nebo událostech využívajících KEDA (automatické škálování řízené událostmi založené na Kubernetes)
- 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) implementuje aplikaci pro doručování pomocí dronů, ve které uživatelé požadují, 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 Registry): 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 platformy jako služby (PaaS), abyste zjednodušili správu a vyhnuli se složitosti spouštění 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 můžete zajistit pomocí následujících klíčových funkcí:
- 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.
- Funkce dynamického vyrovnávání zatížení služby Container Apps optimalizují výkon (i když se v této ukázkové úloze nevyuží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 zajišťuje 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 sdílejí 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 chcete načíst novou hodnotu tajného kódu, musíte je restartovat pro všechny spuštěné revize. 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 úplně umístit váš příchozí bod 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ýstupní 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 umožňuje pro vaši úlohu použít jinou spravovanou identitu než pro přístup k registru kontejnerů. Tento přístup se doporučuje pro dosažení podrobné kontroly přístupu u spravovaných identit.
Optimalizace nákladů
- Část Náklady v architektuře Microsoft Azure popisuje aspekty nákladů. K odhadu nákladů pro konkrétní scénář použijte cenovou kalkulačku Azure.
- 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
Postupujte podle kroků v README.md v ukázkovém úložišti scénářů služby Azure Container Apps.
Přispěvatelé
Microsoft udržuje tento článek. Původně byla napsána následujícími přispěvateli.
Hlavní autor:
- Catherine Bundy | Technický spisovatel
Další kroky
- Dokumentace ke službě Azure Container Apps
- Úložiště GitHubu pro doručování dronů ve službě Azure Kubernetes Service (AKS) Fabrikam