Megosztás a következőn keresztül:


Azure Functions és Azure Container Apps áttekintése

Azure Functions a Azure Container Apps teljes mértékben felügyelt kiszolgáló nélküli üzemeltetési környezetet kínál, amely egyesíti a 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.

Mint az Azure Container Apps integrált funkciója, közvetlenül üzembe helyezhet Azure Functions képeket az Azure Container Apps környezetében a Microsoft.App erőforrás-szolgáltató használatával, ha a kind=functionapp hívásakor beállítja a az containerapp create-t. Az így létrehozott alkalmazások minden Azure Container Apps funkcióhoz hozzáférhetnek. Ha Azure portálon keresztül telepít, a beállítás során engedélyezheti a Optimize for Functions alkalmazás beállítást. További információkért tekintse meg az üzembe helyezés és a beállítás szakaszt.

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í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 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á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.
  • Event-alapú feldolgozás: Az Event Grid, a Service Bus, az Event Hubs és más eseményforrások eseményeinek kezelése a Functions programozási modell egyszerű használatával.
  • 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óé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.
  • .NET Aspire: A .NET Aspire és a Azure Functions integrálása lehetővé teszi egy Azure Functions .NET projekt fejlesztését, hibakeresését és vezénylását az .NET Aspire alkalmazásgazda részeként. További információkat olvashat az Azure Functions és .NET Aspire témában.
  • 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

A Azure Container Apps Azure Functions üzembe helyezéséhez a Functions-alkalmazást egyéni tárolólemezképként kell csomagolnia, és úgy kell üzembe helyeznie, mint bármely más tárolóalkalmazást, egyetlen kulcs különbséggel. A Azure CLI vagy ARM/Bicep sablonok használatakor be kell állítania a kind=functionapp 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.

A Azure portálon válassza a Optimize for Azure Functions lehetőséget a tárolóalkalmazás létrehozása során a beállítás egyszerűsítése érdekében.

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.

Fontos szempontok:

  • 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 Container Apps Azure Functions támogatja az Azure Functions-ben elérhető összes fő language futtatókörnyezetet, beleértve a C#, a JavaScript/TypeScript (Node.js), a Python, a Java, a PowerShell és az Egyéni tárolók használatát (saját rendszerkép hozása).

Az Azure Container Apps-en futó Azure Functions automatikusan konfigurálja a skálázási szabályokat az eseményforrás alapján, így manuális KEDA skálázási szabályok meghatározására nincs szükség. 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.

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 az MSSQL (Microsoft SQL Server) és a DTS (Durable Task Scheduler) tárolószolgáltatókat támogatja. További útmutatás a Durable Functions MSSQL-sel való üzembe helyezéséhez
  • Az automatikus skálázás nem támogatott:
    • 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 a KEDA-t használó események alapján automatikusan méretezhető, é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.

  • 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

A Container Apps Azure Functions kihasználja a Container Apps robusztus hálózati és biztonsági funkcióit a biztonságos és méretezhető üzembe helyezés érdekében.

  • 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.
  • A felügyelt identitás: Hitelesítés Azure szolgáltatásokkal rendszer-/felhasználó által hozzárendelt identitások használatával – 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

Azure Functions a Container Appsben zökkenőmentesen integrálható a Azure megfigyelhetőségi eszközeivel a teljesítmény nyomon követéséhez és a probléma diagnosztizá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 tároló életciklusát és skálázási eseményeit (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 többreplika-forgatókönyvekben történő naplózáshoz, korrelációhoz és hibakereséshez használhatja.

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:

  • 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. 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 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á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: