Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure Functions v Azure Container Apps nabízí plně spravované hostitelské prostředí bez serveru, které spojuje funkce Azure Functions řízené událostmi 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á vlastnost v Azure Container Apps můžete nasadit image Azure Functions 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 webu Azure Portal, můžete během instalace povolit možnost Optimalizovat pro aplikaci Functions . Další podrobnosti najdete v části nasazení a nastavení .
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:
- Spusťte Azure Functions jako kontejnery s vlastními závislostmi a zásobníky jazyků.
- Škálování na nulu a horizontální navýšení kapacity na 1 000 instancí pomocí KEDA
- Zabezpečení sítí s plnou integrací virtuální sítě
- Pokročilé funkce container Appu, jako jsou více revizí, rozdělení provozu, integrace Dapr a komponenty pozorovatelnosti
- Podpora bezserverového a vyhrazeného GPU pro úlohy náročné na výpočetní výkon
- Jednotné prostředí Container Apps pro spouštění funkcí společně s mikroslužbami, rozhraními API a úlohami na pozadí
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:
- Obchodní rozhraní API: Balení vlastních knihoven, balíčků a rozhraní API pomocí Azure Functions pro obchodní aplikace
- Migrace a modernizace: Migrace místních starších nebo monolitických aplikací do nativních cloudových mikroslužeb v kontejnerech
- Zpracování řízené událostmi: Zpracování událostí ze služby Event Grid, Service Bus, Event Hubs a dalších zdrojů událostí s jednoduchým programovacím modelem 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 hostovanými službami Container Apps
- Vlastní kontejnery: Funkce balíčků s vlastními moduly runtime nebo sajdkárnami
- 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 .NET. Další informace o Azure Functions s využitím .NET Aspire
- Obecné funkce: 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 v Azure Container Apps, zabalíte aplikaci Functions jako vlastní image kontejneru a nasadíte ji stejně jako jakoukoli jinou kontejnerovou aplikaci s jedním klíčovým rozdílem. Při použití šablon Azure CLI nebo ARM/Bicep musíte vlastnost nastavit 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 webu Azure Portal vyberte během vytváření aplikace kontejneru možnost Optimalizovat pro Azure Functions , aby se zjednodušila instalace.
Podporují se všechny standardní metody nasazení, včetně:
- Azure CLI
- Azure Portal
- Š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 v Azure Container Apps se řídí stejným cenovým modelem 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.
- Spotřební plán: Tato možnost bezserverového výpočtu vám účtuje pouze prostředky, které vaše aplikace používají při 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 rámci Container Apps se neúčtují žádné další poplatky.
- Funkce Durable a další pokročilé vzory budou podporovány a účtovány podle stejného cenového modelu Container Apps. Podrobný způsob fakturace a příklady najdete v dokumentaci k fakturaci v Azure Container Apps .
Škálování řízené událostmi
Azure Functions v Container Apps podporují všechny hlavní jazykové moduly runtime dostupné ve službě Azure Functions, včetně C#, JavaScriptu / TypeScriptu (Node.js), Pythonu, Javy, PowerShellu, vlastních kontejnerů (přineste si vlastní image).
Azure Functions běžící v Azure Container Apps automaticky konfiguruje pravidla škálování na základě zdroje událostí a eliminuje 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 webu Azure Portal 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ů.
Všechny standardní triggery a vazby Azure Functions se podporují v Container Apps s následujícími výjimkami:
- Automatické škálování triggeru služby Blob Storage: Funguje pouze při použití služby Event Grid jako zdroje. Další informace o aktivaci služby Azure Functions v kontejnerech objektů blob pomocí odběru událostí
- Automatické škálování Durable Functions: 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é ji umožňují. K dispozici jsou také pro:
- Výchozí účet úložiště (AzureWebJobsStorage)
- Azure Container Registry (ACR)
- Připojení ke zdrojům událostí triggeru
U nepodporovaných aktivačních událostí použijte počet pevných replik (tj. nastavte minReplicas > 0) ve službě Azure Functions v Azure Container Apps. Další podrobnosti najdete v příručce pro vývojáře functions.
Škálování a výkon
Azure Functions ve službě Container Apps se škáluje automaticky 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ě triggerů, 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, jak snížit dobu studeného spuštění ve službě 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 Nastavení 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 síťových a bezpečnostních funkcí služby Container Apps 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í.
- Spravovaná identita: 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ě integruje 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 naleznete 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.
Úvahy
Při používání Azure Functions v 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. Mezi příklady pull-based triggerů patří funkce, které používají Azure Queue Storage, Azure Event Hub, Azure Service Bus, nebo Durable Functions.
- 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 se službou Azure API Management.
- Sloty nasazení: Přípravné a produkční sloty nejsou k dispozici. Používejte strategie nasazení s modrou zelenou barvou 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í služby 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.
- Konfigurace pravidla ručního škálování: Tlačítko Přidat pravidla škálování na webu Azure Portal je zakázané pro Azure Functions hostované v kontejnerových aplikacích, protože pravidla škálování se automaticky konfigurují na základě zdroje událostí. 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 na GitHubu.
Další kroky / další zdroje informací
Pokud chcete pokračovat ve studiu a sestavování pomocí Azure Functions v Container Apps, projděte si následující zdroje informací:
- Začínáme – podrobný průvodce nasazením a konfigurací služby Azure Functions v Azure Container Apps
- Dokumentace ke službě Azure Container Apps – Kompletní referenční informace pro funkce Container Apps, včetně škálování, sítí, Dapr a profilů úloh.
- Ceny služby Azure Container Apps – Podrobnosti o nákladech na fakturaci na základě spotřeby a plánu Dedicated
- Možnosti hostování Azure Functions – Porovnání plánů hostování, včetně Container Apps, Flex Consumption, Premium a Dedicated
- Příručka pro vývojáře Azure Functions – Podrobně se seznámíte s triggery, vazbami, chováním modulu runtime a konfigurací.