Přehled .NET v Azure Container Apps

Pokud chcete nasadit aplikaci .NET do cloudového nativního prostředí, jako je Azure Container Apps, musíte učinit rozhodnutí, která zajistí, aby vaše aplikace běžela hladce a bezpečně. Tato příručka popisuje klíčové koncepty nasazení aplikace .NET do Azure Container Apps.

Azure Container Apps je plně spravovaná služba bezserverového kontejneru, která umožňuje spouštět kontejnerizované aplikace bez správy základní infrastruktury. Container Apps zahrnuje integrovanou podporu funkcí, jako jsou automatické škálování, kontroly stavu a certifikáty TLS (Transport Layer Security).

Tento článek podrobně popisuje koncepty a aspekty, které jsou pro vás důležité při nasazování aplikace .NET v Azure Container Apps.

Výběr typu prostředku

Container Apps podporuje dva typy prostředků: aplikace a úlohy. Aplikace jsou nepřetržitě spuštěné služby, zatímco úlohy jsou krátkodobé úkoly navržené tak, aby běžely až do dokončení.

Při přípravě na nasazení aplikace zvažte rozdíly mezi těmito dvěma typy aplikací, protože jejich chování ovlivňuje způsob správy aplikace .NET. Následující tabulka popisuje rozdíl v případech použití mezi aplikacemi a úlohami.

Případ použití Typ zdroje
Webové rozhraní API ASP.NET Core, které obsluhuje požadavky HTTP Aplikace
Konzolová aplikace .NET Core, která zpracovává některá data a pak se ukončí. Práce
Nepřetržitě spuštěná služba na pozadí, která zpracovává zprávy z fronty Aplikace
Služba optimalizace obrázků, která se spouští pouze v případech, kdy jsou velké image uloženy do účtu úložiště. Úloha
Aplikace využívající architekturu, jako je Hangfire, Quartz.NET nebo Sada Azure WebJobs SDK Aplikace

Kontejnerizace a nasazení aplikace .NET

U obou aplikací nebo úloh je potřeba vytvořit image kontejneru pro zabalení aplikace .NET. Další informace o vytváření image kontejneru najdete v tématu Image Dockeru pro ASP.NET Core.

Po nastavení můžete aplikaci nasadit do Azure Container Apps pomocí těchto příruček:

Použití HTTP ingressu

Azure Container Apps obsahuje integrovaný vstupní bod HTTP, který můžete použít k zpřístupnění vašich aplikací pro provoz pocházející zvenčí kontejneru. Ingress Container Apps se nachází mezi vaší aplikací a koncovým uživatelem. Vzhledem k tomu, že ingress funguje jako zprostředkovatel, vše, co koncový uživatel uvidí, končí na ingress, a vše, co vaše aplikace uvidí, začíná u ingress.

Ingress spravuje terminaci TLS a specifické domény, takže je nemusíte konfigurovat ručně ve vaší aplikaci. Prostřednictvím ingresu je port 443 zpřístupněn pro HTTPS dopravu a volitelně port 80 pro HTTP dopravu. Ingress předává požadavky vaší aplikaci na cílový port.

Pokud vaše aplikace potřebuje metadata o původním požadavku, může použít hlavičky přeposlané X.

Další informace najdete v tématu HTTP Ingress v Azure Container Apps.

Definování cílového portu

Pokud chcete přijímat provoz, nakonfigurujte vstupní bod na cílovém portu, kde vaše aplikace naslouchá příchozímu provozu.

Když ASP.NET Core běží v kontejneru, aplikace naslouchá portům nakonfigurovaným v imagi kontejneru. Když použijete oficiální image ASP.NET Core, vaše aplikace je nakonfigurována tak, aby naslouchala na HTTP přes defaultní port. Výchozí port závisí na verzi ASP.NET Core.

běhové prostředí Cílový port
ASP.NET Core 7 a starší 80
ASP.NET Core 8 a novější 8080

Při konfiguraci ingresse nastavte cílový port na číslo odpovídající image kontejneru, kterou používáte.

Definování hlaviček předaných X

Vzhledem k tomu, že vstup zpracovává původní požadavek HTTP, vaše aplikace vidí vstup jako klienta. V některých situacích musí vaše aplikace znát IP adresu původního klienta nebo původní protokol (HTTP nebo HTTPS). Přístup k informacím protokolu a IP adres můžete získat prostřednictvím hlavičkyX-Forwarded-* požadavku.

Z těchto hlaviček můžete číst původní hodnoty tak, že k objektu ForwardedHeaders přistupujete.

builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders =
        ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    options.KnownNetworks.Clear();
    options.KnownProxies.Clear();
});

Další informace o práci s hlavičkami požadavků najdete v tématu Konfigurace ASP.NET Core pro práci se servery proxy a nástroji pro vyrovnávání zatížení.

Vytváření aplikací .NET nativních pro cloud

Aplikace nasazené do Container Apps často fungují nejlépe, když stavíte na základech principů nativních pro cloud. Následující části vám pomůžou podrobně rozebít běžné problémy související s aplikacemi nativními pro cloud.

Konfigurace aplikací

Když nasadíte aplikaci .NET do Azure Container Apps, místo appsettings.jsonpoužijte proměnné prostředí k ukládání informací o konfiguraci. Tento postup umožňuje nakonfigurovat aplikaci různými způsoby v různých prostředích. Použití proměnných prostředí navíc usnadňuje správu konfiguračních hodnot, aniž by bylo nutné znovu sestavit a nasadit image kontejneru.

V Azure Container Apps nastavíte proměnné prostředí při definování kontejneru aplikace nebo úlohy. Uložte citlivé hodnoty do úložišť tajných údajů a odkazujte na ně pomocí proměnných prostředí. Další informace o správě tajných kódů najdete v tématu Správa tajných kódů v Azure Container Apps.

Spravovaná identita

Azure Container Apps podporuje spravovanou identitu, která vaší aplikaci umožňuje přístup k jiným službám Azure bez nutnosti výměny přihlašovacích údajů. Další informace o bezpečné komunikaci mezi službami Azure najdete v tématu Spravované identity v Azure Container Apps.

Protokolování

V prostředí nativním pro cloud je protokolování zásadní pro monitorování a řešení potíží s aplikacemi. Služba Azure Container Apps ve výchozím nastavení shromažďuje protokoly z kontejnerů pomocí Služby Azure Log Analytics. Můžete nakonfigurovat další zprostředkovatele protokolování. Další informace o protokolování aplikací najdete v tématu Možnosti úložiště protokolů a monitorování v Azure Container Apps.

Když nakonfigurujete zprostředkovatele protokolování , který zapisuje protokoly do konzoly, služba Azure Container Apps za vás shromažďuje a ukládá zprávy protokolu.

Sondy stavu

Azure Container Apps zahrnuje integrovanou podporu sond stavu, která umožňuje monitorovat stav vašich aplikací. Pokud sonda zjistí, že je vaše aplikace ve špatném stavu, kontejner se automaticky restartuje. Pro více informací o sondách se podívejte na Health probes in Azure Container Apps.

Pokud chcete mít možnost implementovat vlastní logiku pro určení stavu aplikace, můžete nakonfigurovat koncový bod kontroly stavu. Další informace o koncových bodech kontroly stavu najdete v tématu Kontroly stavu v ASP.NET Core.

Důležité informace o automatickém škálování

Služba Azure Container Apps ve výchozím nastavení automaticky škáluje vaše aplikace ASP.NET Core na základě počtu příchozích požadavků HTTP. Můžete také nakonfigurovat vlastní pravidla automatického škálování na základě jiných metrik, jako je využití procesoru nebo paměti. Další informace o škálování najdete v tématu Nastavení pravidel škálování v Azure Container Apps.

V rozhraní .NET 8.0.4 a novějších jsou aplikace ASP.NET Core, které používají ochranu dat , automaticky nakonfigurované tak, aby byly chráněná data přístupná pro všechny repliky při škálování aplikace. Když se vaše aplikace začne škálovat, správce klíčů zpracovává zápis a sdílení klíčů napříč několika revizemi. Při nasazení aplikace se proměnná autoConfigureDataProtection prostředí automaticky nastaví tak, aby true tuto funkci povolila. Další informace o této automatické konfiguraci najdete v této žádosti o přijetí změn na GitHubu.

Automatické škálování změní počet replik aplikace na základě vámi definovaných pravidel. Ve výchozím nastavení container Apps náhodně směruje příchozí provoz do replik vaší aplikace ASP.NET Core. Vzhledem k tomu, že se provoz může rozdělit mezi různé repliky, měla by být vaše aplikace bezstavová, takže vaše aplikace nemá problémy související se stavem.

Funkce jako anti-forgery, ověřování, SignalR, Blazor Server a Razor Pages závisí na ochraně dat a vyžadují správnou konfiguraci při škálování na více replik.

Konfigurace ochrany dat

ASP.NET Core má speciální funkce pro ochranu a odstranění ochrany dat, jako jsou data relací a tokeny proti padělání. Klíče ochrany dat se ve výchozím nastavení ukládají do systému souborů, který není vhodný pro prostředí nativní pro cloud.

Pokud nasazujete aplikaci Aspire, ochrana dat se automaticky nakonfiguruje za vás. Ve všech ostatních situacích je potřeba nakonfigurovat ochranu dat ručně.

Konfigurace ASP.NET Core SignalR

ASP.NET Core SignalR vyžaduje backplane pro distribuci zpráv do více replik serveru. Při nasazování aplikace ASP.NET Core se službou SignalR do Azure Container Apps musíte nakonfigurovat jednu z podporovaných backplanů, jako je služba Azure SignalR nebo Redis. Další informace o backplanech najdete v tématu ASP.NET Core SignalR hostování a škálování.

Konfigurace Blazor Serveru

ASP.NET Core Blazor Server aplikace ukládají stav na serveru, což znamená, že každý klient musí být během relace připojen ke stejné replice serveru. Při nasazování aplikace Blazor Server do Azure Container Apps musíte povolit perzistentní relace, abyste zajistili směrování klientů do stejné repliky. Další informace najdete v části Session Affinity v Azure Container Apps.