Azure Functions és Azure Container Apps áttekintése

Az Azure Functions az Azure Container Apps-en teljesen menedzselt szerver nélküli hhosting környezetet biztosít, amely ötvözi az Azure Functions eseményvezérelt képességeit a Container Apps funkcióival. Ezek a képességek közé tartozik a Kubernetes-alapú orkestráció, beépített automatikus skálázás, amelyet Kubernetes eseményvezérelt automata skálázás (KEDA) működtet, Dapr integráció, GPU munkaterhelés támogatása, sidecar támogatás, virtuális hálózati (VNet) kapcsolat és a verziókezelés.

Ez a megközelítés akkor hasznos, ha azt szeretnéd, hogy a funkcióid más konténeres alkalmazásokkal, például mikroszolgáltatásokkal, API-kkal vagy weboldalakkal együtt működjenek. A funkcióalkalmazások konténerizálása segíthet akkor is, ha egyedi függőségekre van szükséged, vagy nullára akarsz skálázni a költségek csökkentése érdekében. Számítási nehézségekkel foglalkozó feladatoknál, mint az AI következtetés, a Container Apps támogatja a GPU-alapú hosztolást szerver nélküli GPU-kon és dedikált munkaterhelés profilokon keresztül.

Az Azure Container Apps beépített funkciójaként az Azure Functions konténerképeit közvetlenül telepítheti az Azure Container Appsbe a(z) Microsoft.App erőforrás-szolgáltató használatával és a(z) kind=functionapp beállításával a(z) az containerapp create meghívásakor. Az így létrehozott alkalmazások minden Azure Container Apps funkcióhoz hozzáférhetnek. Az Azure portálban a beállítás során válassza az Optimize for Azure Functions opciót. További információért lásd: Telepítés és beállítás.

Fő előnyök

A Tárolóalkalmazások üzemeltetési modellje a tárolóalapú számítási feladatok rugalmasságára és a Azure Functions eseményvezérelt jellegére épül. A következő fő előnyöket kínálja:

Az alábbi táblázat segít összehasonlítani a Container alkalmazásokon működő funkciók funkcióit a Flex Consumption tervvel.

Tulajdonság Container Apps Rugalmas fogyasztási terv
Skálázás nullára ✅ Igen (KEDA-n keresztül) ✅ Igen
Maximális vertikális felskálázás 1000 (alapértelmezett 10, konfigurálható) 1,000
Folyamatosan bekapcsolt példányok ✅ Igen (által minReplicas) ✅ Igen (mindig kész példányokon keresztül)
VNET-integráció ✅ Igen ✅ Igen
Saját tároló támogatása ✅ Igen (saját kép létrehozása) ❌ Korlátozott (nincs saját tárolója)
GPU-támogatás ✅ Igen (serverless GPU dedikált munkaterhelés-profilon keresztül) ❌ Nem
Beépített funkciók A Container Apps szolgáltatás támogatása. Például: KEDA, Dapr, több verzió, mTLS, segédprogramok, belépési vezérlés stb. Csak függvényekhez tartozó funkciók
Számlázási modell Container Apps díjszabása: Használati csomag (vCPU, memória, kérések) > Dedikált csomag (számítási feladatprofil-alapú) Végrehajtási idő + mindig kész példányok

A Container Apps rendszeren futó függvények és a Rugalmas Fogyasztási terv, valamint minden más tervezési és üzemeltetési típus teljes összehasonlításához tekintse meg a Függvények méretezési és üzemeltetési lehetőségeit.

Lehetséges helyzetek

Azure Functions a Container Appsben számos használati esethez ideálisak, különösen akkor, ha eseményvezérelt végrehajtásra, tárolórugalmasságra vagy más szolgáltatásokkal való biztonságos integrációra van szüksége:

  • Üzletági API-k: Egyéni könyvtárak, csomagok és API-k előkészítése és kezelése Azure Functions segítségével az üzletági alkalmazások számára.
  • Migráció és modernizáció: On-premises, örökös és/vagy monolit alkalmazások migrációja felhőalapú mikroszolgáltatásokra konténerekben.
  • Eseményvezérelt feldolgozás: Az Event Grid, Service Bus, Event Hubs és más eseményforrások eseményeit az Azure Functions programozási modell használatával kezelheti.
  • AI és GPU munkaterhelések: Dolgozza fel videókat, képeket, átiratokat és más, számításigényes munkaterhelést, amelyek GPU erőforrást igényelnek. További információért tekintse meg: Az Azure Container Apps kiszolgáló nélküli GPU-jainak használata.
  • Microservices: Integrálja a Azure Functions más Container Apps által üzemeltetett szolgáltatásokkal.
  • Egyéni tárolók: Csomagfüggvények egyéni futtatókörnyezetekkel vagy oldalkocsikkal.
  • Privát alkalmazások: Csak belső használatra szánt Funkciók védelme virtuális hálózattal és belső belépési ponttal.
  • Aspire: Az Aspire integrációja az Azure Functions-szal lehetővé teszi, hogy egy Azure Functions projektet fejlesszen, debugáljon és rendezzen az Aspire AppHost részeként. További információért lásd: Azure Functions with Aspire és Setup up Azure Functions az AppHostban.
  • General Functions: Futtassa a támogatott standard Azure Functions forgatókönyveket (például időzítők, fájlfeldolgozás, adatbázis-eseményindítók).

Üzembe helyezés és beállítás

Az Azure Functions telepítéséhez Azure Container Apps-en csomagold be a funkciós alkalmazásodat egyedi konténer képként, és telepítsd úgy, mint bármely más konténer alkalmazást, egy kulcsfontosságú különbséggel. Állítsd be a kind=functionapp tulajdonságot, amikor használod az Azure CLI-t, az Azure Resource Manager sablonokat vagy a Bicep-et. Részletes lépésekért és példákért lásd: Funkcióalkalmazás létrehozása.

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

Ez a parancs visszaadja a funkcióalkalmazás URL-jét. Másolja ki ezt az URL-címet, és illessze be egy webböngészőbe.

Az Azure portálban válaszd ki az Optimize for Azure Functions opciót a konténer alkalmazás készítése során, hogy használd az Azure Functions konfigurációt.

Az Azure portál képernyőképe egy Azure Functions számára előre konfigurált tárolóalkalmazás létrehozásakor.

Minden szabványos üzembehelyezési módszer támogatott, beleértve a következőket:

Részletes lépésekért és példákért tekintse meg a hivatalos első lépések dokumentációját.

Árképzés és számlázás

Azure Functions on Azure Container Apps ugyanazt az árazási modellt követik, amelyet az Azure Container Apps. A számlázás az Ön környezetéhez választott csomagtípuson alapul, amely lehet fogyasztási vagy dedikált csomag.

  • Használati csomag: Ez a kiszolgáló nélküli számítási lehetőség csak az alkalmazások futás közben használt erőforrásaiért számláz.
  • Dedikált csomag: Ez a beállítás testre szabott számítási erőforrásokat biztosít, amelyek az egyes számításiprofilokhoz lefoglalt példányok számlázását biztosítják.

A választott terv határozza meg a számlázási számítások elvégzését. A környezet különböző alkalmazásai különböző terveket használhatnak.

Számlázási részletek:

  • A Azure Functions programozási modell Container Appsen belüli használatához nem kell külön díjat fizetni.
  • Durable Functions és egyéb speciális mintákat ugyanazzal a Container Apps díjszabási modellel támogatjuk és számlázunk. Részletes számlázási mechanikát és példákat a Billing Azure Container Apps dokumentációjában talál.

Eseményvezérelt skálázás

A Azure Functions a Container Apps-en támogatja az összes fő nyelvi futásidőt, amely Azure Functions-ben elérhető, beleértve a C#-ot, JavaScript / TypeScriptet (Node.js), Python-ot, Java-t, PowerShell-t és az egyedi konténereket (saját képet hozz magaddal).

Azure Container Appsben futó Azure Functions automatikusan konfigurálja a skálázási szabályokat az eseményforrás alapján, így az alapértelmezett működés során nincs szükség a KEDA skálázási szabályainak kézi meghatározására. Ezért az Azure portál "Méretezési szabályok hozzáadása" gombja le van tiltva a Container Apps-függvények esetében. A minimális és maximális replikaszám azonban továbbra is meghatározható a skálázási határok létrehozásához és az erőforrás-kiosztás feletti irányítás fenntartásához.

Ha saját skálázási szabályokat kell megadnia, letilthatja a platform által létrehozott szabályokat a használatával allowScalingRuleOverride. További információkért lásd: A Container Apps szolgáltatásban futó Azure Functions automatikusan generált KEDA-méretezési szabályainak felülbírálása.

A platform automatikusan lefordítja a Functions eseményindító paramétereit ( host.json konfigurációs vagy triggerattribútumokból) a megfelelő KEDA-méretezési paraméterekre. A Functions trigger konfigurációinak KEDA skálázási paraméterekre való leképezésének részletes ismertetése megtekinthető a Azure Functions KEDA skálázási leképezések oldalon.

Az összes standard Azure Functions eseményindító és kötés támogatott a Container Appsben az alábbi kivételekkel:

  • Blob Storage Trigger automatikus skálázása: Csak akkor működik, ha az Event Gridet használja forrásként. További információ az Azure Functions esemény-előfizetésen keresztüli aktiválásáról blobtárolók esetén
  • Durable Functions automatikus skálázás: Csak a Microsoft SQL Server és a Durable Task Scheduler tárolószolgáltatókat támogatja. További információért lásd: Deploy Durable Functions with SQL Server.
  • Az automatikus skálázás nem támogatott az alábbi esetekben
    • Azure Cache for Redis
    • Azure SQL

A felügyelt identitások támogatottak az azt engedélyező triggerekhez és kötésekhez. A következő célokra is elérhetők:

Nem támogatott eseményindítók esetében az Azure Functions az Azure Container Apps szolgáltatásban használjon rögzített replikaszámokat (azaz állítsa be a minReplicas > 0 értékre). További információkért tekintse meg a Functions fejlesztői útmutatóját.

Skálázás és teljesítmény

Azure Functions a Container Appsben alapértelmezés szerint a KEDA-t használó események alapján automatikusan méretezhető. Továbbra is beállíthatja a minimális/maximális replikákat a skálázási viselkedés szabályozásához. Egyéni méretezési szabályokat is allowScalingRuleOverride megadhat.

  • Event-alapú skálázás: Automatikus skálázás olyan eseményindítók alapján, mint az Event Grid, a Service Bus vagy a HTTP.
  • Skálázás nullára: A tétlen alkalmazások nullára skálázhatók a költségek csökkentése érdekében.
  • Cold start control: További információ a az Azure Container Apps hidegindítási idejének szabályozásáról.
  • Egyidejűség: Minden példány egyszerre több eseményt is feldolgozhat.
  • Nagy léptékű: Skálázás alkalmazásonként 1000 példányra (alapértelmezés szerint 10).
  • GPU-támogatás: Nagy számítási feladatok, például AI-következtetés futtatása GPU-alapú csomópontok használatával.

Ez ideálissá teszi a Container Appst a kipukkasztott és állandó állapotú számítási feladatokhoz is. További információ: Skálázási szabályok beállítása az Azure Container Apps-ben

Hálózatkezelés és biztonság

Azure Functions on Container Apps használja a Container Apps hálózati és biztonsági funkcióit:

  • Virtuális hálózatok integrációja: Privát erőforrások biztonságos elérése belső végpontokon és privát adatbázisokon keresztül.
  • Menedzselt identitás: Azure szolgáltatásokkal való hitelesítés rendszer- vagy felhasználó által rendelt identitásokkal. Nem kell titkokat vagy kapcsolati láncokat kezelned.
  • Dapr-támogatás: Publikáció/Feliratkozás, állapotkezelés és biztonságos szolgáltatáshívás engedélyezése a Dapr oldalkocsikon keresztül. További információ: A Dapr által üzemeltetett Mikroszolgáltatási API-k.
  • Bejövő forgalom és TLS: Tedd elérhetővé a biztonságos HTTP-végpontokat TLS/mTLS-lel, egyedi tartományokkal, vagy tartsd őket belső hálózaton belül.
  • Környezeti izolálás: A függvények megosztják a Container Apps környezeti határait a biztonságos, keretre szabott kommunikációhoz.

Monitorozás és naplózás

Az Azure Functions on Container Apps integrálódik az Azure megfigyelhetőségi eszközökkel a teljesítménykövetéshez és problémadiagnosztizáláshoz:

  • Application Insights: Telemetriát biztosít a kérésekhez, függőségekhez, kivételekhez és egyéni nyomkövetésekhez. További információ: Monitor Azure Functions.
  • Log Analytics: Rögzíti a konténer életciklusát és skálázási eseményeket, például FunctionsScalerInfo bejegyzéseket. További információért lásd: Application logging in Azure Container Apps.
  • Egyéni naplózás: Támogatja a szabványos keretrendszereket, például az ILoggert és a konzolnaplózást strukturált kimenetekhez.
  • Központosított figyelés: A Container Apps-környezet egységes irányítópultokat és riasztásokat kínál az összes alkalmazáshoz.

Környezeti változók

Azure Functions a Container Appsen futtatva hozzáféréssel rendelkezik a rendszer által biztosított környezeti változókhoz. A CONTAINER_NAME környezeti változó automatikusan a függvényalkalmazás replikanevére van beállítva. Ezt a változót használd naplózásra, korrelációra és hibakeresésre multireplica helyzetekben.

A rendszer által biztosított környezeti változók teljes listáját a Azure Container Apps Környezet változói című témakörben találja.

Megfontolások

A Azure Container Apps Azure Functions használatakor vegye figyelembe az alábbi egyéb szempontokat:

  • Bejelentkezési követelmény az automatikus skálázáshoz: Az automatikus skálázás engedélyezéséhez az események alapján engedélyezzük a belépést, akár nyilvánosan, akár a Container Apps belső környezetében.
  • Kötelező tárolási fiók: Minden Container Apps-en telepített funkcióalkalmazás egy tárolófiókhoz kell kapcsolódnia. Ez a tárolófiók kezeli a triggereket, naplókat és állapotokat. Tekintse át a tárfiók útmutatását az ajánlott eljárásokhoz.
  • Többváltozatos tárolás: Több aktív változattal történő üzembe helyezéskor minden változathoz rendeljen hozzá egy dedikált tárfiókot. A dedikált tárfiók használata segít megelőzni az ütközéseket, és biztosítja a megfelelő elkülönítést. Másik lehetőségként, ha nem igényel egyidejű változatokat, fontolja meg az egyszerű felügyelethez az alapértelmezett egyetlen változat módot.
  • Többváltozatos eseményindítók: Ha többváltozatos módot használ lekéréses alapú eseményindítóval, minden változathoz használjon egy másik eseményforrást, hogy elkerülje a versengő felhasználókkal kapcsolatos ütközéseket. A Azure Queue Storage, Azure Event Hubs, Azure Service Bus vagy Durable Functions eseményindítókat használó függvények példaként szolgálnak a lekéréses alapú triggerekre.
  • Hidegindítási késés: Ha a tárolóalkalmazás tétlen időszakokban nullára skáláz, az inaktivitás utáni első kérés hidegindítást tapasztal. További információ a hideg kezdési idők csökkentéséről.
  • Application Insights integráció: A függvényalkalmazás monitorozásához és diagnosztizálásához kapcsolja össze az Application Insightsszal. További információért lásd: Application Insights integráció funkciókkal.
  • Függvény-proxyk: Nem támogatott. API gateway forgatókönyvek esetén integráljon inkább az Azure API Management rendszerrel.
  • Telepítési helyek: A staging és a termelési helyek nem érhetők el. Használjon kék-zöld üzembe helyezési stratégiákat a megszakítás nélküli kiadásokhoz.
  • Függvény-hozzáférési kulcsok: A függvények hozzáférési kulcsainak létrehozása a portálon nem támogatott. Fontolja meg a Azure Key Vault használatát a kulcsok tárolásához. A http-végpontok éles környezetben történő védelméhez az alábbi lehetőségeket is használhatja:
  • Kvóta- és erőforráskorlátok: A Container Apps-környezetek alapértelmezett memória-, PROCESSZOR- és példányszámkorlátokkal rendelkeznek régiónként. További információkért tekintse meg a környezeti korlátokat és az alapértelmezett kvótákat. Ha a számítási feladat több erőforrást igényel, kérheti a kvóta növelését.
  • A skálázási szabály konfigurálása: A Azure portál "Méretezési szabályok hozzáadása" gombja le van tiltva a Container Appsben üzemeltetett Azure Functions esetében, mert a méretezési szabályok automatikusan konfigurálva vannak az eseményforrás alapján. Ebben a beállításban nincs szükség manuális KEDA-szabálydefiníciókra.

Visszajelzés küldése

Probléma vagy szolgáltatáskérés elküldése a Azure Container Apps GitHub adattárba.

Következő lépések / További erőforrások

A Container Apps Azure Functions tanulásának és fejlesztésének folytatásához tekintse meg a következő erőforrásokat: