Přehled Azure Functions v rámci Azure Container Apps

Azure Functions na Azure Container Apps nabízí plně spravované hostitelské prostředí bez serveru, které spojuje funkce založené na událostech Azure Functions s robustními funkcemi Container Apps. Tato integrace zahrnuje pokročilé funkce, jako je orchestrace založená na Kubernetes, integrované automatické škálování využívající KEDA (automatické škálování založené na událostech založené na Kubernetes), integrace Dapr (Distributed Application Runtime), podpora úloh GPU, podpora sajdkára, připojení k virtuální síti a správa revizí.

Tento přístup je užitečný, když chcete, aby vaše funkce běžely společně s dalšími kontejnerizovanými aplikacemi, jako jsou mikroslužby, rozhraní API nebo weby. Kontejnerizace aplikací funkcí vám navíc může pomoct, když potřebujete vlastní závislosti nebo chcete využít výhod škálování na nulu a ušetřit tak náklady. Pokud spouštíte úlohy náročné na výpočetní výkon, jako je odvozování umělé inteligence, služba Container Apps také podporuje hostování založené na GPU prostřednictvím nabídky bezserverového GPU a profilů vyhrazených úloh.

Jako integrovaná funkce na Azure Container Apps můžete nasadit Azure Functions image přímo do Azure Container Apps pomocí poskytovatele prostředků Microsoft.App nastavením kind=functionapp při volání az containerapp create. Aplikace vytvořené tímto způsobem mají přístup ke všem funkcím Azure Container Apps. Pokud se nasazuje prostřednictvím portálu Azure, můžete během instalace povolit možnost Optimize pro aplikaci Functions. Další informace najdete v části nasazení a nastavení , kde najdete další podrobnosti.

Klíčové výhody

Model hostování Container Apps vychází z flexibility kontejnerizovaných úloh a povahy Azure Functions řízené událostmi. Nabízí následující klíčové výhody:

Následující tabulka vám pomůže porovnat funkce v aplikacích na kontejnerech s plánem Flex Consumption.

Vlastnost Container Apps Plán Flex Consumption
Škálování na nulu ✅ Ano (přes KEDA) ✅ Ano
Maximální horizontální škálování 1 000 (výchozí 10, konfigurovatelné) 1 000
Vždy zapnuté instance ✅ Ano (prostřednictvím minReplicas) ✅ Ano (prostřednictvím trvale dostupných instancí)
Integrace virtuální sítě ✅ Ano ✅ Ano
Podpora vlastních kontejnerů ✅ Ano (přineste si vlastní obrázek) ❌ Omezené (bez používání vlastního kontejneru)
Podpora GPU ✅ Ano (přes profil vyhrazené úlohy GPU bez serveru) ❌ Ne
Integrované funkce Podpora funkcí Container Apps Například KEDA, Dapr, více verzí, mTLS, sidecars, řízení přístupu a další Funkce jen pro funkce
Model fakturace Ceny služby Container Apps: Plán Consumption (vCPU, paměť, požadavky) a Dedikovaný Plán (založený na profilu zátěže) Doba provádění a vždy připravené instance

Úplné porovnání funkcí v kontejnerových aplikacích s plánem Flex Consumption a všemi ostatními typy plánů a hostování najdete v tématu Možnosti škálování a hostování funkcí.

Scénáře

Azure Functions v Container Apps jsou ideální pro širokou škálu případů použití, zejména v případě, že potřebujete spouštění řízené událostmi, flexibilitu kontejneru nebo zabezpečenou integraci s jinými službami:

  • Podniková rozhraní API: Sestavte vlastní knihovny, balíčky a rozhraní API pomocí Azure Functions pro podnikovou aplikaci.
  • Migrace a modernizace: Migrace místních starších nebo monolitických aplikací do nativních cloudových mikroslužeb v kontejnerech
  • Udalostmi řízené zpracování: Zpracování událostí z Event Gridu, Service Bus, Event Hubs a dalších zdrojů událostí pomocí snadno použitelného programovacího modelu Functions.
  • Úlohy AI a GPU: Bezserverové zpracování úloh videí, obrázků, přepisů nebo jiných úloh náročných na zpracování, které vyžadují výpočetní prostředky GPU. Další informace najdete v tématu Použití bezserverových GPU v Azure Container Apps.
  • Mikroslužby: Integrace Azure Functions s dalšími službami hostovanými v Container Apps.
  • Vlastní kontejnery: Balení funkcí s vlastními běhovými prostředími nebo sidecary.
  • Soukromé aplikace: Zabezpečení interních funkcí pomocí virtuální sítě a interního příchozího přenosu dat
  • .NET Aspire: Integrace .NET Aspire s Azure Functions umožňuje vyvíjet, ladit a orchestrovat projekt Azure Functions .NET jako součást hostitele aplikace .NET Aspire. Přečtěte si další informace o Azure Functions s .NET Aspire
  • General Functions: Spusťte všechny podporované standardní scénáře Azure Functions (například časovače, zpracování souborů, triggery databáze).

Nasazení a nastavení

Pokud chcete nasadit Azure Functions na Azure Container Apps, zabalíte aplikaci Functions jako vlastní image kontejneru a nasadíte ji stejně jako jakoukoli jinou aplikaci typu kontejner s jedním klíčovým rozdílem. Při použití šablon Azure CLI nebo ARM/Bicep je potřeba nastavit vlastnost kind=functionapp. Podrobné kroky a příklady najdete v oficiální úvodní dokumentaci.

az containerapp create \
  --resource-group $RESOURCE_GROUP_NAME \
  --name $CONTAINER_APP_NAME \
  --environment $ENVIRONMENT_NAME \
  --image mcr.microsoft.com/k8se/quickstart-functions:latest \
  --ingress external \
  --target-port 80 \
  --kind functionapp \
  --query properties.outputs.fqdn

Tento příkaz vrátí adresu URL aplikace Functions. Zkopírujte tuto adresu URL a vložte ji do webového prohlížeče.

Na portálu Azure vyberte během vytváření aplikace kontejneru možnost Optimize pro Azure Functions a zjednodušte tak nastavení.

Screenshot portálu Azure při vytváření předem nakonfigurované aplikace kontejneru pro Azure Functions.

Podporují se všechny standardní metody nasazení, včetně:

  • Azure CLI
  • portál Azure
  • Šablony ARM / Bicep
  • Kanály CI/CD (například GitHub Actions, Azure Pipelines)

Podrobné kroky a příklady najdete v oficiální úvodní dokumentaci.

Ceny a fakturace

Azure Functions na Azure Container Apps mají stejný cenový model jako Azure Container Apps. Fakturace je založená na typu plánu , který vyberete pro vaše prostředí, což může být Consumption nebo Dedicated.

  • Plán využití: Tato bezserverová výpočetní možnost vám účtuje pouze za prostředky, které vaše aplikace používají během jejich spuštění.
  • Vyhrazený plán: Tato volba poskytuje přizpůsobené výpočetní prostředky a účtuje vám instance přidělené každému profilu úlohy.

Volba plánu určuje způsob provádění výpočtů fakturace. Různé aplikace v rámci prostředí můžou používat různé plány.

Klíčové body na poznámku:

  • Za použití programovacího modelu Azure Functions v container Apps se neúčtují žádné další poplatky.
  • Trvalé funkce a další pokročilé vzory jsou podporovány a účtovány podle stejného cenového modelu „Container Apps“. Podrobný způsob fakturace a příklady najdete v dokumentaci k Billing v Azure Container Apps.

Škálování řízené událostmi

Azure Functions v Container Apps podporují všechny hlavní moduly runtime language dostupné v Azure Functions, včetně C#, JavaScriptu / TypeScriptu (Node.js), Python, Java, PowerShellu a vlastních kontejnerů (přineste si vlastní image).

Azure Functions spuštěné na Azure Container Apps automaticky konfigurují pravidla škálování na základě zdroje událostí a eliminují potřebu ručních definic pravidel škálování KEDA. To je důvod, proč je tlačítko Přidat pravidla škálování na portálu Azure zakázané pro funkce ve službě Container Apps. Stále ale můžete definovat minimální a maximální počet replik, abyste vytvořili hranice škálování a zachovali kontrolu nad přidělováním prostředků.

Platforma automaticky přeloží parametry triggeru služby Functions (z host.json konfigurace nebo atributů triggeru) do příslušných parametrů škálovače KEDA. Podrobné informace o mapování konfigurací triggerů služby Functions na parametry škálování KEDA najdete v tématu Azure Functions mapování škálování KEDA.

Všechny standardní spouště a vazby Azure Functions jsou podporovány v Container Apps s následujícími výjimkami:

  • Blob Storage Aktivovat automatické škálování: Funguje pouze při použití Event Gridu jako zdroje. Přečtěte si další informace o spouštění funkcí Azure u kontejnerů Blob pomocí odběru událostí
  • Durable Functions automatické škálování: Podporuje pouze poskytovatele úložiště MSSQL (Microsoft SQL Server) a DTS (Durable Task Scheduler). Další pokyny k nasazení Durable Functions s MSSQL
  • Automatické škálování se nepodporuje pro:
    • Azure Cache for Redis
    • Azure SQL

Spravované identity jsou podporované pro triggery a vazby, které to umožňují. Jsou také k dispozici pro:

U nepodporovaných triggerů použijte počet pevných replik (tj. nastavte minReplicas > 0) v Azure Functions na Azure Container Apps. Další informace najdete v příručce pro vývojáře functions.

Škálování a výkon

Azure Functions v kontejnerových aplikacích se automaticky škáluje na základě událostí využívajících KEDA, aniž by bylo nutné konfigurovat pravidla škálování ručně. Stále můžete nastavit minimální nebo maximální počet replik pro řízení chování škálování.

  • Škálování řízené událostmi: Automaticky se škáluje na základě spouštěčů, jako je Event Grid, Service Bus nebo HTTP.
  • Škálování na nulu: Nečinné aplikace se škáluje na nulu, aby se ušetřily náklady.
  • Řízení studeného startu: Přečtěte si o zkrácení doby studeného startu na Azure Container Apps.
  • Souběžnost: Každá instance může zpracovávat více událostí paralelně.
  • Vysoké škálování: Horizontální navýšení kapacity na 1 000 instancí na aplikaci (výchozí hodnota je 10).
  • Podpora GPU: Spouštění úloh náročných na výpočetní výkon, jako je odvození umělé inteligence, s využitím uzlů založených na GPU.

Díky tomu jsou kontejnerové aplikace ideální pro práci s proměnlivým i stabilním zatížením. Další informace najdete v tématu Set pravidel škálování v Azure Container Apps

Sítě a zabezpečení

Azure Functions v kontejnerových aplikacích přináší výhody robustních funkcí networking a security pro zabezpečená a škálovatelná nasazení:

  • Integrace virtuální sítě: Zabezpečený přístup k privátním prostředkům prostřednictvím interních koncových bodů a privátních databází.
  • Managed identity: Ověřování pomocí služeb Azure pomocí systémových nebo uživatelem přiřazených identit – nejsou potřeba žádné tajné kódy ani připojovací řetězce.
  • Podpora Dapr: Umožnit pub/sub, správu stavu a zabezpečené vyvolání služby prostřednictvím bočních procesů Dapr. Další informace najdete v tématu Rozhraní API mikroslužeb využívající Dapr.
  • Ingress a TLS: Zpřístupněte zabezpečené koncové body HTTP pomocí protokolu TLS/mTLS, vlastních domén nebo je ponechejte interní.
  • Izolace prostředí: Funkce sdílejí hranice prostředí Container Apps pro zabezpečenou a vymezenou komunikaci.

Díky těmto funkcím jsou funkce hostované v Container Apps ideální pro podnikové a zabezpečené bezserverové aplikace.

Monitorování a protokolování

Azure Functions v Container Apps se bezproblémově integrují s nástroji pozorovatelnosti Azure pro sledování výkonu a diagnostiku problémů:

  • Application Insights: Poskytuje telemetrii pro požadavky, závislosti, výjimky a vlastní trasování. Další informace najdete v tématu Monitor Azure Functions.
  • Log Analytics: Zaznamenává životní cyklus kontejneru a události škálování (například položky FunctionsScalerInfo). Další informace najdete v tématu Protokolování aplikace v Azure Container Apps.
  • Vlastní protokolování: Podporuje standardní architektury, jako je ILogger a protokolování konzoly pro strukturovaný výstup.
  • Centralizované monitorování: Prostředí Container Apps nabízí jednotné řídicí panely a výstrahy napříč všemi aplikacemi.

Proměnné prostředí

Azure Functions spuštěné v Container Apps mají přístup k systémovým proměnným prostředí. Proměnná CONTAINER_NAME prostředí se automaticky nastaví na název repliky vaší aplikace funkcí. Tuto proměnnou použijte pro protokolování, korelaci a ladění ve scénářích s více replikami.

Úplný seznam systémových proměnných prostředí viz Proměnné prostředí v Azure Container Apps.

Úvahy

Při používání Azure Functions na Azure Container Apps mějte na paměti tyto další aspekty:

  • Požadavek na příchozí přenos dat pro automatické škálování: Pokud chcete povolit automatické škálování na základě událostí, musí být příchozí přenos dat povolený – veřejně nebo v rámci interního prostředí Container Apps.
  • Povinný účet úložiště: Každá aplikace Functions nasazená v kontejnerových aplikacích musí být propojená s účtem úložiště. To se vyžaduje pro správu triggerů, protokolů a stavu. Projděte si pokyny k účtu úložiště , kde najdete osvědčené postupy.
  • Úložiště s více revizemi: Při nasazování s více aktivními revizemi přiřaďte každému revizi vyhrazený účet úložiště. Použití vyhrazeného účtu úložiště pomáhá zabránit konfliktům a zajistit správnou izolaci. Případně pokud nevyžadujete souběžné revize, zvažte použití výchozího režimu jedné revize pro zjednodušenou správu.
  • Spouštěče s více revizemi: Pokud používáte režim více revizí s triggerem na základě vyžádání, použijte pro každou revizi jiný zdroj událostí, abyste se vyhnuli konfliktům souvisejícím s konkurenčními příjemci. Příkladem triggerů založených na vyžádání jsou funkce, které používají Azure Queue Storage, Azure Event Hubs, Azure Service Bus nebo Durable Functions triggery.
  • Latence studeného spuštění: Když se vaše aplikace kontejneru během nečinných období škáluje na nulu, první požadavek po nečinnosti se spustí za studena. Přečtěte si další informace o snížení doby studeného startu.
  • Integrace Application Insights: Pro robustní monitorování a diagnostiku propojte aplikaci Functions s Application Insights. Další informace najdete v tématu Integrace Služby App Insights se službou Functions.
  • Proxy služby Functions: Nepodporuje se. V případě scénářů brány rozhraní API se místo toho integrujte s Azure API Management.
  • Sloty nasazení: Přípravné a produkční sloty nejsou k dispozici. Používejte strategie deploymentu typu blue-green pro vydání bez výpadků.
  • Přístupové klíče funkcí: Použití portálu ke generování přístupových klíčů Functions se nepodporuje. Zvažte použití Azure Key Vault k ukládání klíčů. K zabezpečení koncových bodů HTTP v produkčním prostředí můžete použít také následující možnosti:
  • Kvóty a limity prostředků: Prostředí Container Apps mají výchozí omezení paměti, procesoru a počtu instancí v jednotlivých oblastech. Další informace najdete v omezeních prostředí a výchozích kvótách. Pokud vaše úloha vyžaduje více prostředků, můžete požádat o navýšení kvóty.
  • Ruční konfigurace pravidel škálování: Tlačítko "Přidat pravidla škálování" na portálu Azure je deaktivováno pro Azure Functions hostované v Container Apps, protože pravidla škálování se automaticky konfigurují podle zdroje události. Ruční definice pravidel KEDA se v tomto nastavení nevyžadují.

Odeslat názor

Odešlete problém nebo žádost o funkci do úložiště Azure Container Apps GitHub.

Další kroky / další zdroje informací

Pokud chcete pokračovat ve studiu a sestavování s Azure Functions v Container Apps, projděte si následující zdroje informací:

  • Začátění: Podrobný průvodce nasazením a konfigurací Azure Functions v Azure Container Apps.
  • Azure Container Apps dokumentace: Úplné referenční informace o funkcích Container Apps, včetně škálování, sítí, Dapr a profilů úloh.
  • Ceník Azure Container Apps: Podrobnosti o nákladech na fakturaci na základě spotřeby a plánu Dedicated.
  • Azure Functions možnosti hostování: Porovnání plánů hostování, včetně Container Apps, Flex Consumption, Premium a Dedicated.
  • Azure Functions příručka pro vývojáře: Podrobné informace o triggerech, vazbách, chování modulu runtime a konfiguraci.