Sdílet prostřednictvím


Hostování Azure Functions ve službě Azure Container Apps

Důležité

Nyní je k dispozici nová metoda hostování pro spouštění Azure Functions přímo v Azure Container Apps (viz oznámení) a doporučuje se pro většinu nových úloh. Díky této integraci můžete využívat všechny funkce a možnosti Azure Container Apps a zároveň využívat programovací model funkcí a jednoduchost automatického škálování poskytované službou Azure Functions.

Další informace najdete v tématu Nativní podpora azure Functions v Azure Container Apps.

Azure Functions poskytuje integrovanou podporu vývoje, nasazování a správy kontejnerizovaných aplikací funkcí v Azure Container Apps. Azure Container Apps můžete použít k hostování kontejnerů aplikací funkcí, když potřebujete spustit funkce řízené událostmi v Azure ve stejném prostředí jako jiné mikroslužby, rozhraní API, weby, pracovní postupy nebo programy hostované kontejnerem. Hostování Container Apps umožňuje spouštět funkce v plně spravovaném prostředí založeném na Kubernetes s integrovanou podporou pro opensourcové monitorování, mTLS, Dapr a automatické škálování řízené událostmi Kubernetes (KEDA).

Kód funkce můžete napsat v libovolném zásobníku jazyka, který functions podporuje. Stejné triggery a vazby funkcí můžete použít se škálováním řízeným událostmi. Pomocí existujících klientských nástrojů Functions a webu Azure Portal můžete také vytvářet kontejnery, nasazovat kontejnery aplikací funkcí do Container Apps a konfigurovat průběžné nasazování.

Integrace Container Apps také znamená, že konfigurace sítě a pozorovatelnosti definované na úrovni prostředí Container App platí pro vaši aplikaci funkcí stejně jako u všech mikroslužeb spuštěných v prostředí Container Apps. Můžete také využít další cloudově nativní funkce služby Container Apps, jako jsou KEDA, Dapr a Envoy. Application Insights můžete dál používat k monitorování spouštění funkcí a aplikace funkcí má přístup ke stejným virtuálním síťovým prostředkům, které prostředí poskytuje.

Obecný přehled možností hostování kontejnerů pro Azure Functions najdete v tématu Podpora kontejnerů v Linuxu ve službě Azure Functions.

Hostování a profily úloh

Kontejnerové aplikace mají dva hlavní plány: plán Consumption bez serveru a plán Dedicated. Obě možnosti je možné použít v typech prostředí profilů úloh, přičemž profily úloh určují výpočetní a paměťové prostředky dostupné pro vaše aplikace. Profil úlohy určuje množství výpočetních a paměťových prostředků dostupných pro kontejnerové aplikace nasazené v prostředí. Tyto profily jsou nakonfigurované tak, aby vyhovovaly různým potřebám vašich aplikací.

Profil zátěže Consumption je výchozím profilem, který je přidán ke každému typu prostředí profilů úloh. Při vytváření prostředí nebo po jeho vytvoření můžete do svého prostředí přidat vyhrazené profily úloh. Další informace o profilech úloh najdete v tématu Profily úloh v Azure Container Apps.

Služba Container Apps hostující kontejnerizované aplikace funkcí se podporuje ve všech oblastech, které podporují container Apps.

Pokud vaše aplikace nemá specifické požadavky na hardware, můžete prostředí spustit buď v plánu Consumption, nebo ve vyhrazeném plánu pomocí výchozího profilu úlohy Consumption. Při spouštění funkcí v Container Apps se vám účtují jenom poplatky za využití Container Apps. Další informace najdete na stránce s cenami služby Azure Container Apps.

Azure Functions v Azure Container Apps podporuje hostování s podporou GPU v plánu Dedicated s profily úloh.

Informace o vytvoření a nasazení kontejneru aplikace funkcí do Container Apps ve výchozím plánu Consumption najdete v tématu Vytvoření prvních kontejnerizovaných funkcí v Azure Container Apps.

Informace o tom, jak vytvořit prostředí Container Apps s profily úloh a nasadit kontejner aplikace funkcí do konkrétní úlohy, najdete v tématu Profily úloh Container Apps.

Funkce v kontejnerech

Pokud chcete používat hostování Container Apps, musí váš kód běžet v aplikaci funkcí v kontejneru Linuxu, který vytvoříte a udržujete. Funkce udržuje sadu základních imagí specifických pro jazyk, které můžete použít ke generování kontejnerizovaných aplikací funkcí.

Když vytvoříte projekt kódu pomocí nástrojů Azure Functions Core Tools a zahrnete tuto --docker možnost, Nástroj Core Tools vygeneruje soubor Dockerfile se správnou základní imagí, kterou můžete použít jako výchozí bod při vytváření kontejneru.

Důležité

Při vytváření vlastních kontejnerů musíte zachovat základní image kontejneru aktualizovanou na nejnovější podporovanou základní image. Podporované základní obrazy pro Azure Functions jsou specifické pro jazyk a nacházejí se v úložištích základních obrazů Azure Functions.

Tým Functions se zavazuje publikovat měsíční aktualizace těchto základních imagí. Mezi běžné aktualizace patří nejnovější aktualizace podverzí a opravy zabezpečení pro běhové prostředí a jazyky Functions. Kontejner byste měli pravidelně aktualizovat z nejnovější základní image a znovu nasadit aktualizovanou verzi kontejneru. Pro více informací, viz Údržba vlastních kontejnerů.

Když provedete změny kódu funkcí, musíte znovu sestavit a znovu publikovat image kontejneru. Další informace naleznete v tématu Aktualizace image v registru.

Možnosti nasazení

Azure Functions v současné době podporuje následující metody nasazení kontejnerizované aplikace funkcí do Azure Container Apps:

Kontejnerizované aplikace můžete průběžně nasazovat ze zdrojového kódu pomocí Azure Pipelines nebo GitHub Actions. Funkce průběžného nasazování funkcí se v současné době nepodporuje při nasazování do container Apps.

Autorizace spravované identity

Pro zajištění nejlepšího zabezpečení byste se měli připojit ke vzdáleným službám pomocí ověřování Microsoft Entra a autorizace spravované identity. Spravované identity můžete použít pro tato připojení:

Při spuštění v Container Apps můžete použít ID Microsoft Entra se spravovanými identitami pro všechna rozšíření vazeb, která podporují spravované identity. V současné době podporují škálování řízené událostmi pouze tato rozšíření vazeb při použití ověřování spravované identity:

  • Azure Event Hubs
  • Azure Queue Storage
  • Azure Service Bus (služba pro zpracování a správu zpráv)

Pro jiné vazby použijte pevné repliky při ověřování pomocí spravované identity. Další informace najdete v příručce pro vývojáře functions.

Integrace virtuální sítě

Když hostujete aplikace funkcí v prostředí Container Apps, vaše funkce můžou využívat interně i externě přístupné virtuální sítě. Další informace o sítích prostředí najdete v tématu Sítě v prostředí Azure Container Apps.

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

Všechny triggery funkcí je možné použít v kontejnerizované aplikaci funkcí. V prostředí Container Apps se však mohou dynamicky škálovat (od nuly instancí) pouze tyto spouštěče na základě přijatých událostí:

  • Azure Cosmos DB (připojení KEDA)
  • Azure Event Grid
  • Azure Event Hubs
  • Azure Blob Storage (založená na Event Gridu)
  • Azure Queue Storage
  • Azure Service Bus (služba pro zpracování a správu zpráv)
  • Durable Functions (poskytovatel úložiště MSSQL)
  • Protokol HTTP
  • Kafka
  • Časovač

Služba Azure Functions v container Apps je navržená tak, aby konfiguruje parametry a pravidla škálování podle cíle události. Nemusíte se starat o konfiguraci objektů s měřítkem KEDA. Při vytváření nebo úpravě aplikace funkcí můžete nastavit minimální a maximální počet replik. Následující příkaz Azure CLI nastaví minimální a maximální počet replik při vytváření nové aplikace funkcí v prostředí Container Apps ze služby Azure Container Registry:

az functionapp create --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1 --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --image <LOGIN_SERVER>/azurefunctionsimage:v1 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD> --registry-server <LOGIN_SERVER>

Následující příkaz nastaví stejný minimální a maximální počet replik u existující aplikace funkcí:

az functionapp config container set --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1

Spravované skupiny prostředků

Azure Functions na Container Apps spouští prostředky vaší kontejnerizované aplikace funkcí ve speciálně spravovaných skupinách prostředků. Tyto spravované skupiny prostředků pomáhají chránit konzistenci vašich aplikací tím, že brání nezamýšleným nebo neoprávněným úpravám nebo odstranění prostředků ve spravované skupině, a to i instančními objekty.

Spravovaná skupina prostředků se vytvoří pro vás poprvé, když vytvoříte prostředky funkční aplikace v prostředí aplikace kontejneru. Prostředky Container Apps vyžadované vaší kontejnerizovanou aplikací funkcí běží v této spravované skupině prostředků. Všechny ostatní aplikace funkcí, které vytvoříte ve stejném prostředí, používají tuto existující skupinu.

Spravovaná skupina prostředků se automaticky odebere po odstranění všech prostředků kontejneru funkční aplikace z prostředí. Když je spravovaná skupina prostředků viditelná, všechny pokusy o změnu nebo odebrání spravované skupiny prostředků způsobí chybu. Pokud chcete odebrat spravovanou skupinu prostředků z prostředí, odeberte všechny prostředky kontejneru pro aplikační funkce a skupina se poté automaticky odstraní.

Pokud narazíte na problémy s těmito spravovanými skupinami prostředků, měli byste kontaktovat podporu.

Protokolování aplikací

Kontejnerizovanou aplikaci funkcí hostovanou v Container Apps můžete monitorovat pomocí Služby Application Insights služby Azure Monitor stejným způsobem jako s aplikacemi hostovanými ve službě Azure Functions. Další informace najdete v tématu Monitorování Azure Functions.

U vazeb, které podporují škálování řízené událostmi, se události škálování protokolují jako FunctionsScalerInfo události a FunctionsScalerError události v pracovním prostoru služby Log Analytics. Další informace najdete v tématu Protokolování aplikace v Azure Container Apps.

Důležité informace o hostování Container Apps

Při nasazování kontejnerů aplikací funkcí do Container Apps mějte na paměti následující aspekty:

  • Tato omezení platí pro triggery Kafka:
    • Hodnota ssl protokolu není podporována při hostování v Container Apps. Použijte jinou hodnotu protokolu.
    • Aby se trigger Kafka při připojení ke službě Event Hubs dynamicky škáloval, vlastnost username musí odpovídat nastavení aplikace, které obsahuje přesnou hodnotu uživatelského jména. Když se použije výchozí $ConnectionString hodnota, trigger Kafka nemůže způsobit dynamické škálování aplikace.
  • U předdefinovaných definic zásad Container Apps se aktuálně na kontejnery Azure Functions vztahují pouze zásady na úrovni prostředí.
  • Kontejnerizovaná aplikace funkcí ve výchozím nastavení monitoruje port 80 příchozích požadavků. Pokud vaše aplikace musí používat jiný port, změňte tento výchozí port pomocí WEBSITES_PORT nastavení aplikace.
  • V současné době nemůžete při hostování v Container Apps používat integrované funkce průběžného nasazování. Místo toho je nutné nasadit zdrojový kód pomocí Azure Pipelines nebo GitHub Actions.
  • Aktuálně nemůžete přesunout nasazení aplikace funkcí hostované službou Container Apps mezi skupinami prostředků nebo mezi předplatnými. Místo toho byste museli znovu vytvořit existující kontejnerizované nasazení aplikace v nové skupině prostředků, předplatném nebo oblasti.
  • Pokud používáte Container Apps, nemáte přímý přístup k rozhraním KUBERNEtes API nižší úrovně.
  • Rozšíření containerapp je v konfliktu s rozšířením appservice-kube v Azure CLI. Pokud jste dříve publikovali aplikace do služby Azure Arc, spusťte az extension list a ujistěte se, že appservice-kube není nainstalované. Pokud ano, můžete ho odebrat spuštěním az extension remove -n appservice-kube.