Megosztás:


Az Azure Functions az Azure Container Appsben – áttekintés

Az Azure Functions az Azure Container Appsben teljes mértékben felügyelt kiszolgáló nélküli üzemeltetési környezetet kínál, amely egyesíti az Azure Functions eseményvezérelt képességeit a Container Apps robusztus funkcióival. Ez az integráció olyan fejlett képességeket tartalmaz, mint a Kubernetes-alapú vezénylés, a KEDA által működtetett beépített automatikus skálázás (Kubernetes-alapú eseményvezérelt automatikus skálázás), a Dapr (elosztott alkalmazás futtatókörnyezet) integrációja, a GPU-számítási feladatok támogatása, a sidecar-támogatás, a virtuális hálózat (VNet) csatlakoztatása és a változatkezelés.

Ez a módszer akkor hasznos, ha azt szeretné, hogy a Functions más tárolóalapú alkalmazások, például mikroszolgáltatások, API-k vagy webhelyek mellett fusson. Emellett a függvényalkalmazások tárolóba helyezése segíthet, ha egyéni függőségekre van szüksége, vagy kihasználni szeretné a nullára skálázás előnyeit a költségmegtakarítás érdekében. Ha olyan számítási feladatokat futtat, mint az AI-következtetés, a Container Apps a GPU-alapú üzemeltetést is támogatja kiszolgáló nélküli GPU-ajánlat és dedikált számításiprofilok használatával.

Az Azure Container Apps egy integrált funkciójaként az Azure Functions-rendszerképeket közvetlenül az Azure Container Apps-re helyezheti üzembe az Microsoft.App erőforrás-szolgáltató használatával, a kind=functionapp hívásakor a az containerapp create beállításokat megadva. Az így létrehozott alkalmazások minden Azure Container Apps-funkcióhoz hozzáférhetnek. Ha az Azure Portalon keresztül telepít, a beállítás során engedélyezheti az Optimize for Functions alkalmazást . További részletekért tekintse meg az üzembe helyezési és telepítési szakaszt.

Fő előnyök

A Container Apps üzemeltetési modellje a tárolóalapú számítási feladatok rugalmasságára és az 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ítségével összehasonlíthatja a Container Apps-on futó függvények jellemzőit a Flex-használati csomaggal.

Tulajdonság Container Apps Rugalmas kihasználtságú használati 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

Az Azure Functions a Container Appsben számos használati esethez ideális, 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ódtárak, csomagok és API-k csomagolása az Azure Functions szolgáltatással üzletági alkalmazásokhoz.
  • Migrálás és modernizáció: Helyszíni örökölt és/vagy monolitikus alkalmazások migrálása a tárolók natív felhőbeli mikroszolgáltatásaiba.
  • Eseményvezérelt feldolgozás: A Functions programozási modell segítségével könnyedén kezelheti az Event Grid, a Service Bus, az Event Hubs és más eseményforrások eseményeit.
  • AI > GPU-számítási feladatok: Videók, képek, átiratok vagy bármely más feldolgozási igényű feladat kiszolgáló nélküli számítási feladatainak feldolgozása, amelyek GPU számítási erőforrásokat igényelnek. További információ: Kiszolgáló nélküli GPU-k használata az Azure Container Appsben.
  • Mikroszolgáltatások: Integrálja az Azure Functionst 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ő függvények védelme virtuális hálózattal és belső bejövő forgalommal.
  • .NET Aspire: A .NET Aspire és az Azure Functions integrációja lehetővé teszi egy Azure Functions .NET-projekt fejlesztését, hibakeresését és vezénylását a .NET Aspire alkalmazásgazda részeként. További információ az Azure Functionsről a .NET Aspire használatával
  • Általános függvények: Futtasson minden támogatott szabványos Azure Functions-forgatókönyvet (például időzítőket, fájlfeldolgozást, adatbázis-eseményindítókat).

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

Az Azure Functions Azure Container Appsen való üzembe helyezéséhez a Functions-alkalmazást egyéni tárolórendszerképként kell csomagolnia, és úgy kell üzembe helyeznie, mint bármely más tárolóalkalmazást, egyetlen kulcs különbséggel. Az Azure CLI- vagy ARM/Bicep-sablonok használatakor be kell állítania kind=functionapp a tulajdonságot. Részletes lépésekért és példákért tekintse meg a hivatalos első lépések dokumentációját.

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 a Functions-alkalmazás URL-címét adja vissza. Másolja ki ezt az URL-címet, és illessze be egy webböngészőbe.

Az Azure Portalon válassza az Azure Functions optimalizálása lehetőséget a tárolóalkalmazás létrehozása során a beállítás egyszerűsítése érdekében.

Képernyőkép az Azure Portalról az Azure Functionshez 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

Az Azure Functions az Azure Container Appsben ugyanazt a díjszabási modellt követi, mint 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 terv: 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.

Fontos szempontok:

  • Az Azure Functions-programozási modell Container Appsen belüli használatához nem kell külön díjat fizetni.
  • A Durable Functions és más speciális minták támogatása és számlázása ugyanazzal a Container Apps-díjszabási modellel történik. A részletes számlázási mechanikát és példákat az Azure Container Apps számlázásával kapcsolatos dokumentációjában találja.

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

Az Azure Functions a Container Appsben támogatja az Azure Functionsben elérhető összes fő nyelvi futtatókörnyezetet, beleértve a következőket: C#, JavaScript/ TypeScript (Node.js), Python, Java, PowerShell, egyéni tárolók (saját rendszerkép készítése).

Az Azure Container Appsben futó Azure Functions automatikusan konfigurálja a skálázási szabályokat az eseményforrás alapján, így nincs szükség manuális KEDA skálázási szabálydefiníciókra. Ezért az Azure Portalon a "Méretezési szabályok hozzáadása" gomb 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.

A Container Apps az alábbi kivételekkeltámogatja az összes szabványos Azure Functions-eseményindítót és kötést:

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

Nem támogatott eseményindítók esetén használja a rögzített replikaszámokat (azaz a minReplicas > 0 beállítását) az Azure Functionsben az Azure Container Appsben. További részletekért tekintse meg a Functions fejlesztői útmutatóját.

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

Az Azure Functions on Container Apps automatikusan skálázható a KEDA-t használó események alapján, és nincs szükség a méretezési szabályok manuális konfigurálására. Továbbra is beállíthatja a minimális/maximális replikákat a skálázási viselkedés szabályozásához.

  • Eseményvezérelt 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.
  • Hidegindítás szabályozása: Tudnivalók az Azure Container Apps hidegindítási idejének csökkenté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ó: Méretezési szabályok beállítása az Azure Container Appsben

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

Az Azure Functions a Container Apps robusztus hálózatkezelési és biztonsági funkcióinak előnyeit nyújtja a biztonságos, méretezhető üzembe helyezéshez:

  • 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.
  • Felügyelt identitás: Hitelesítés Azure-szolgáltatásokkal rendszer-/felhasználó által hozzárendelt identitásokkal – nincs szükség titkos kódokra vagy kapcsolati sztringekre.
  • 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örnyezetelkülönítés: A függvények megosztják a Container Apps környezethatárait a biztonságos, hatókörön belüli kommunikáció érdekében.

Ezek a képességek ideálissá teszik a Container Apps által üzemeltetett függvényeket nagyvállalati szintű, biztonságos kiszolgáló nélküli alkalmazásokhoz.

Monitorozás és naplózás

Az Azure Functions on Container Apps zökkenőmentesen integrálható az Azure megfigyelhetőségi eszközeivel a teljesítmény nyomon követéséhez és a problémák diagnosztizálása érdekében:

  • 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ó: Az Azure Functions monitorozása.
  • Log analytics: Rögzíti a tároló életciklusát és skálázási eseményeit (például FunctionsScalerInfo-bejegyzéseket). További információ: Alkalmazásnaplózás az Azure Container Appsben.
  • 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.

Megfontolások

Tartsa szem előtt ezeket a további szempontokat az Azure Functions Azure Container Appsben való használatakor:

  • Az automatikus skálázás bejövő forgalmának követelménye: Az eseményeken alapuló automatikus skálázás engedélyezéséhez engedélyezni kell a bejövő forgalmat – nyilvánosan vagy a Container Apps belső környezetében.
  • Kötelező tárfiók: A Container Appsben üzembe helyezett összes függvényalkalmazást egy tárfiókhoz kell kapcsolni. Ez az eseményindítók, naplók és állapotok kezeléséhez szükséges. 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. Az Azure Queue Storage, az Azure Event Hub, az Azure Service Bus vagy a Durable Functions eseményindítóit használó függvények példaként szolgálnak a lekéréses alapú eseményindítókra.
  • 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 robusztus monitorozás és diagnosztika érdekében kapcsolja össze a Functions-alkalmazást az Application Insightsszal. További információ: App Insights-integráció a Functions szolgáltatással.
  • Függvény-proxyk: Nem támogatott. Api Gateway-forgatókönyvek esetén integrálható inkább az Azure API Managementtel.
  • Üzembehelyezési pontok: Az előkészítés és az éles tárolóhelyek nem érhetők el. Használjon kék-zöld üzembe helyezési stratégiákat a nulla állásidős kiadásokhoz.
  • Függvény-hozzáférési kulcsok: A portál használata a Functions hozzáférési kulcsainak létrehozásához nem támogatott. Fontolja meg az 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.
  • Manuális méretezési szabálykonfiguráció: Az Azure Portal "Méretezési szabályok hozzáadása" gombja le van tiltva a Container Appsben üzemeltetett Azure Functions esetében, mert a skálázási szabályok automatikusan konfigurálódnak 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

Küldjön el egy problémát vagy egy funkciókérést az Azure Container Apps GitHub-adattárba.

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

Az Azure Functions a Container Appsen való tanulásának és fejlesztésének folytatásához tekintse meg a következő erőforrásokat: