Hostování Azure Container Apps ve službě Azure Functions
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. Získáte také další funkce nativní pro cloud pro Container Apps, včetně KEDA, Dapr, 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
Existují dva primární plány hostování pro Container Apps, bezserverový plán Consumption a vyhrazený plán, který používá profily úloh k lepšímu řízení prostředků nasazení. 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 úlohy Consumption je výchozím profilem přidaný do každého 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í image pro Azure Functions jsou specifické pro jazyk a nacházejí se v základních imagích 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 podverze a opravy zabezpečení pro modul runtime i jazyky Functions. Kontejner byste měli pravidelně aktualizovat z nejnovější základní image a znovu nasadit aktualizovanou verzi kontejneru.
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:
- Apache Maven
- Šablony ARM
- Azure CLI
- Azure Developer CLI (azd)
- Azure Functions Core Tools
- Úlohy azure Pipeline
- Azure Portal
- Soubory Bicep
- GitHub Actions
- Visual Studio Code
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.
Konfigurace pravidel škálování
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 v Container Apps spouští prostředky 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ří při prvním vytvoření prostředků aplikace funkcí v prostředí Container Apps. 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 odebere automaticky po odebrání všech prostředků kontejneru aplikace funkcí 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 aplikace funkcí a odebere se za vás.
Pokud narazíte na problémy s těmito spravovanými skupinami prostředků, měli byste kontaktovat podporu.
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:
- I když je možné použít všechny triggery, při spuštění v prostředí Container Apps se můžou dynamicky škálovat (z nuly instancí):
- Azure Event Grid
- Azure Event Hubs
- Azure Blob Storage (založené na událostech)
- Azure Queue Storage
- Azure Service Bus
- Durable Functions (poskytovatel úložiště MSSQL)
- HTTP
- Kafka
- Časovač
- 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,
username
musí se vlastnost přeložit na nastavení aplikace, které obsahuje skutečnou hodnotu uživatelského jména. Když se použije výchozí$ConnectionString
hodnota, trigger Kafka nebude moct aplikaci dynamicky škálovat.
- Hodnota
- U předdefinovaných definic zásad Container Apps se aktuálně na kontejnery Azure Functions vztahují pouze zásady na úrovni prostředí.
- Spravované identity můžete použít pro tato připojení:
- 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ímappservice-kube
v Azure CLI. Pokud jste dříve publikovali aplikace do služby Azure Arc, spusťteaz extension list
a ujistěte se, žeappservice-kube
není nainstalované. Pokud ano, můžete ho odebrat spuštěnímaz extension remove -n appservice-kube
příkazu .