Sdílet prostřednictvím


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 se rozhodnout, 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 nutnosti spravovat základní infrastrukturu. Container Apps zahrnuje integrovanou podporu funkcí, včetně automatických škálování, kontrol stavu a certifikátů 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é úlohy navržené tak, aby běžely na 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íly v případech použití mezi úlohami a úlohami.

Případ použití Typ prostředku
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čí Úloha
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í příchozího přenosu dat HTTP

Azure Container Apps obsahuje integrovaný příchozí přenos dat HTTP, který umožňuje zveřejnit aplikace pro provoz přicházející mimo kontejner. Příchozí přenos dat container Apps se nachází mezi vaší aplikací a koncovým uživatelem. Vzhledem k tomu, že příchozí přenos dat funguje jako zprostředkovatel, koncový uživatel vidí konec příchozího přenosu dat a to, co vaše aplikace uvidí, začíná na příchozím přenosu dat.

Příchozí přenos dat spravuje ukončení protokolu TLS a vlastní domény a eliminuje nutnost jejich ruční konfigurace ve vaší aplikaci. Prostřednictvím příchozího přenosu dat je port 443 zpřístupněn pro provoz HTTPS a volitelně port 80 pro provoz HTTP. Příchozí přenos dat 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 Příchozí přenos dat HTTP v Azure Container Apps.

Definování cílového portu

Pro příjem provozu se příchozí přenosy konfigurují na cílovém portu, kde vaše aplikace naslouchá 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 nakonfigurovaná tak, aby naslouchala protokolu HTTP na výchozím portu. Výchozí port závisí na verzi ASP.NET Core.

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

Při konfiguraci příchozího přenosu dat nastavte cílový port na číslo odpovídající imagi kontejneru, kterou používáte.

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

Vzhledem k tomu, že příchozí přenos dat zpracovává původní požadavek HTTP, vaše aplikace uvidí příchozí přenos dat jako klient. 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čky X-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í

Při nasazování aplikace .NET do Azure Container Apps používejte proměnné prostředí k ukládání informací o konfiguraci místo appsettings.json. 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 tajných kódů a odkazujte na ně jako proměnné 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. Další informace osondch

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 .NET 8.0.4 a novějších aplikacích ASP.NET Core, které používají ochranu dat, jsou automaticky nakonfigurované tak, aby byla 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íčů zpracuje klíče pro zápis a sdílení klíčů napříč několika revizemi. Při nasazení aplikace se proměnná autoConfigureDataProtection prostředí automaticky nastaví true tak, aby 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 jsou anti-forgery, ověřování, SignalR, Blazor Server a Razor Pages, závisí na ochraně dat vyžadují, aby při škálování na více replik správně fungovala další konfigurace.

Konfigurace ochrany dat

ASP.NET Core má speciální funkce, které chrání a odblokují data, jako jsou data relací a antigery tokeny. 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 .NET 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 hostování a škálování Core SignalR.

Konfigurace Blazor Serveru

ASP.NET stav úložiště aplikací Core Blazor Server 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 rychlé relace, abyste zajistili směrování klientů do stejné repliky. Další informace najdete v tématu Spřažení relací v Azure Container Apps.