Az első tárolóalapú függvények létrehozása az Azure Container Appsben

Ebben a cikkben egy Linux-tárolóban futó függvényalkalmazást hoz létre, és üzembe helyezi azt egy Azure Container Apps-környezetben egy tárolóregisztrációs adatbázisból. A Container Appsben való üzembe helyezéssel a függvényalkalmazásokat integrálhatja natív felhőbeli mikroszolgáltatásokba. További információ: Azure Functionst üzemeltető Azure Container Apps.

Ez a cikk bemutatja, hogyan hozhat létre linuxos tárolóban futó függvényeket, és hogyan helyezheti üzembe a tárolót egy Container Apps-környezetben.

Ennek a rövid útmutatónak a elvégzése az Azure-fiókjában néhány USD-cent vagy annál kisebb költséggel jár, amelyet az erőforrások tisztításával minimalizálhat, ha végzett.

Fontos

A függvényalkalmazások Azure Container Appsen való üzemeltetésének támogatása jelenleg előzetes verzióban érhető el.

Fejlesztési nyelv kiválasztása

Először az Azure Functions-eszközökkel hozza létre a projektkódot függvényalkalmazásként egy Docker-tárolóban egy nyelvspecifikus Linux-alaprendszerkép használatával. Ügyeljen arra, hogy a cikk tetején válassza ki a választott nyelvet.

A Core Tools automatikusan létrehoz egy Docker-fájlt a projekthez, amely a függvénynyelvhez a megfelelő alaprendszerkép legfrissebb verzióját használja. Rendszeresen frissítenie kell a tárolót a legújabb alaprendszerképről, és újból üzembe kell helyeznie a tároló frissített verziójából. További információ: Tárolóalapú függvényalkalmazások létrehozása.

Előfeltételek

A kezdés előtt a következő követelményekkel kell rendelkeznie:

Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.

A tárolóregisztrációs adatbázisban létrehozott tárolóalapú függvényalkalmazás-rendszerkép közzétételéhez a helyi számítógépen futó Docker-azonosítóra és Dockerre van szükség. Ha nem rendelkezik Docker-azonosítóval, létrehozhat egy Docker-fiókot.

A beállításjegyzék-példány létrehozásához a Tárolóregisztrációs adatbázis gyorsútmutatójának Tárolóregisztrációs adatbázis létrehozása szakaszát is be kell fejeznie. Jegyezze fel a teljes bejelentkezési kiszolgáló nevét.

Virtuális környezet létrehozása és aktiválása

Egy megfelelő mappában futtassa az alábbi parancsokat egy virtuális környezet .venvlétrehozásához és aktiválásához. Mindenképpen használja az Azure Functions által támogatott Python-verziókat .

python -m venv .venv
source .venv/bin/activate

Ha a Python nem telepítette a venv-csomagot a Linux-disztribúcióra, futtassa a következő parancsot:

sudo apt-get install python3-venv

Ebben az aktivált virtuális környezetben minden további parancsot futtat.

A helyi függvényprojekt létrehozása és tesztelése

Egy terminálban vagy parancssorban futtassa a következő parancsot a választott nyelvhez egy függvényalkalmazás-projekt létrehozásához az aktuális mappában:

func init --worker-runtime dotnet-isolated --docker
func init --worker-runtime node --language javascript --docker
func init --worker-runtime powershell --docker
func init --worker-runtime python --docker
func init --worker-runtime node --language typescript --docker

Egy üres mappában futtassa a következő parancsot a Functions-projekt Maven-archetípusból való létrehozásához:

mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=8 -Ddocker

A -DjavaVersion paraméter közli a Functions futtatókörnyezetével, hogy melyik Java-verziót használja. Használja a -DjavaVersion=11 kapcsolót, ha a függvényeket Java 11-en szeretné futtatni. Ha nem adja meg -DjavaVersion, a Maven alapértelmezés szerint Java 8 lesz. További információ: Java-verziók.

Fontos

A JAVA_HOME cikk elvégzéséhez a környezeti változót a JDK megfelelő verziójának telepítési helyére kell állítani.

A Maven a projekt üzembe helyezéshez szükséges értékeit kéri. Kövesse az utasításokat, és adja meg a következő információkat:

Adatkérés Érték Leírás
groupId com.fabrikam Olyan érték, amely egyedileg azonosítja a projektet az összes projektben, a Java csomagelnevezési szabályait követve.
artifactId fabrikam-functions Olyan érték, amely a jar neve, verziószám nélkül.
Változat 1.0-SNAPSHOT Válassza ki az alapértelmezett értéket.
Csomag com.fabrikam.functions Egy érték, amely a létrehozott függvénykód Java-csomagja. Használja az alapértelmezettet.

Írja be Y vagy nyomja le az Enter billentyűt a megerősítéshez.

A Maven egy artifactId nevű új mappában hozza létre a projektfájlokat, amely ebben a példában az fabrikam-functions.

A --docker beállítás létrehoz egy Docker-fájlt a projekthez, amely egy megfelelő tárolót határoz meg az Azure Functionsben és a kiválasztott futtatókörnyezetben való használatra.

Navigáljon a projektmappába:

cd fabrikam-functions

Az alábbi paranccsal hozzáadhat egy függvényt a projekthez, ahol az --name argumentum a függvény egyedi neve, az --template argumentum pedig a függvény eseményindítóját határozza meg. func new C#-kódfájlt hoz létre a projektben.

func new --name HttpExample --template "HTTP trigger" --authlevel anonymous

Az alábbi paranccsal hozzáadhat egy függvényt a projekthez, ahol az --name argumentum a függvény egyedi neve, az --template argumentum pedig a függvény eseményindítóját határozza meg. func newlétrehoz egy function.json nevű konfigurációs fájlt tartalmazó függvénynévnek megfelelő almappát.

func new --name HttpExample --template "HTTP trigger" --authlevel anonymous

A függvény helyi teszteléséhez indítsa el a helyi Azure Functions futtatókörnyezet-gazdagépet a projektmappa gyökerében.

func start  
func start  
npm install
npm start
mvn clean package  
mvn azure-functions:run

Miután látta a HttpExample kimenetre írt végpontot, lépjen erre a végpontra. A válasz kimenetében egy üdvözlő üzenetnek kell megjelennie.

Miután látta a HttpExample kimenetre írt végpontot, lépjen a következőre http://localhost:7071/api/HttpExample?name=Functions: . A böngészőnek meg kell jelennie egy "hello" üzenetnek, amely visszaköszön Functionsa lekérdezési paraméterhez megadott értékre name .

A gazdagép leállításához nyomja le a Ctrl C billentyűkombinációt+(macOS rendszeren a C parancsot).+

A tárolólemezkép létrehozása és helyi ellenőrzése

(Nem kötelező) Vizsgálja meg a Dockerfile-t a projektmappa gyökerében. A Dockerfile leírja a függvényalkalmazás Linuxon való futtatásához szükséges környezetet. Az Azure Functions támogatott alaprendszerképeinek teljes listája az Azure Functions alaprendszerkép oldalán található.

A gyökérprojekt mappában futtassa a docker buildelési parancsot, adjon meg egy nevet azurefunctionsimage, és címkézze a következőt v1.0.0: . A <DOCKER_ID> helyére a Docker Hub-fiók azonosítóját írja. Ez a parancs létrehozza a tároló Docker-rendszerképét.

docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .

A parancs befejeződésekor helyileg futtathatja az új tárolót.

A build ellenőrzéséhez futtassa a lemezképet egy helyi tárolóban a Docker-futtatási paranccsal, cserélje le <DOCKER_ID> ismét a Docker Hub-fiók azonosítójára, és adja hozzá a portok argumentumát a következőként -p 8080:80:

docker run -p 8080:80 -it <DOCKER_ID>/azurefunctionsimage:v1.0.0

Miután a rendszerkép a helyi tárolóban kezdődött, keresse meg http://localhost:8080/api/HttpExamplea következőt, amelynek ugyanazt az üdvözlő üzenetet kell megjelenítenie, mint korábban. Mivel a létrehozott HTTP-aktivált függvény névtelen hitelesítést használ, meghívhatja a tárolóban futó függvényt anélkül, hogy hozzáférési kulcsot kellene beszereznie. További információ: engedélyezési kulcsok.

Miután a rendszerkép a helyi tárolóban kezdődött, keresse meg http://localhost:8080/api/HttpExample?name=Functionsa következőt, amelynek ugyanazt a "hello" üzenetet kell megjelenítenie, mint korábban. Mivel a létrehozott HTTP-aktivált függvény névtelen hitelesítést használ, meghívhatja a tárolóban futó függvényt anélkül, hogy hozzáférési kulcsot kellene beszereznie. További információ: engedélyezési kulcsok.

Miután ellenőrizte a függvényalkalmazást a tárolóban, a végrehajtás leállításához nyomja le a Ctrl C billentyűkombinációt+(macOS-en a C parancsot).+

A tárolólemezkép közzététele egy beállításjegyzékben

Ha elérhetővé szeretné tenni a tárolólemezképet egy üzemeltetési környezetben való üzembe helyezéshez, le kell küldenie egy tárolóregisztrációs adatbázisba.

Az Azure Container Registry egy privát beállításjegyzék-szolgáltatás a tárolólemezképek és a kapcsolódó összetevők létrehozásához, tárolásához és kezeléséhez. A tárolók Azure-szolgáltatásokban való közzétételéhez magánregisztrációs szolgáltatást kell használnia.

  1. A következő paranccsal jelentkezzen be a beállításjegyzék-példányba:

    az acr login --name <REGISTRY_NAME>
    

    Az előző parancsban cserélje le <REGISTRY_NAME> a Container Registry-példány nevét.

  2. A következő paranccsal címkézheti meg a rendszerképet a regisztrációs adatbázis bejelentkezési kiszolgálójának teljes nevével:

    docker tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 
    

    Cserélje le <LOGIN_SERVER> a regisztrációs adatbázis bejelentkezési kiszolgálójának teljes nevét és <DOCKER_ID> a Docker-azonosítóját.

  3. A következő paranccsal küldje le a tárolót a beállításjegyzék-példányra:

    docker push <LOGIN_SERVER>/azurefunctionsimage:v1.0.0
    
  4. A következő paranccsal engedélyezze a beépített rendszergazdai fiókot, hogy a Functions felhasználónévvel és jelszóval tudjon csatlakozni a beállításjegyzékhez:

    az acr update -n <REGISTRY_NAME> --admin-enabled true
    
  1. A következő paranccsal kérje le a rendszergazdai felhasználónevet és jelszót, amelyhez a Functionsnek csatlakoznia kell a beállításjegyzékhez:

    az acr credential show -n <REGISTRY_NAME> --query "[username, passwords[0].value]" -o tsv
    

    Fontos

    A rendszergazdai fiók felhasználóneve és jelszava fontos hitelesítő adatok. Ügyeljen arra, hogy biztonságosan tárolja őket, és soha ne legyen akadálymentes helyen, például nyilvános adattárban.

Támogató Azure-erőforrások létrehozása a függvényhez

Mielőtt üzembe helyezheti a tárolót az Azure-ban, három erőforrást kell létrehoznia:

  • Egy erőforráscsoport, amely a kapcsolódó erőforrások logikai tárolója.
  • Storage-fiók, amely az állapot és a függvényekkel kapcsolatos egyéb információk fenntartására szolgál.
  • Egy Log Analytics-munkaterülettel rendelkező Azure Container Apps-környezet.

Ezeket az elemeket az alábbi parancsokkal hozhatja létre.

  1. Ha még nem tette meg, jelentkezzen be az Azure-ba.

    A az login parancs bejelentkezik az Azure-fiókjába. Akkor használja az account set , ha több előfizetése van a fiókjához társítva.

  2. Futtassa a következő parancsot az Azure CLI legújabb verziójára való frissítéséhez:

    az upgrade
    

    Ha az Azure CLI nem a legújabb verzió, elindul a telepítés. A frissítési mód az operációs rendszertől függ. A frissítés befejezése után folytathatja a műveletet.

  3. Futtassa a következő parancsokat, amelyek frissítik az Azure Container Apps bővítményt, és regisztrálják a Container Apps által igényelt névtereket:

    az extension add --name containerapp --upgrade -y
    az provider register --namespace Microsoft.Web 
    az provider register --namespace Microsoft.App 
    az provider register --namespace Microsoft.OperationalInsights 
    
  4. Hozzon létre egy erőforráscsoportot .AzureFunctionsContainers-rg

    az group create --name AzureFunctionsContainers-rg --location eastus
    

    Ez a az group create parancs létrehoz egy erőforráscsoportot az USA keleti régiójában. Ha ehelyett egy Önhöz közeli régiót szeretne használni, használja az az account list-locations parancsból visszaadott elérhető régiókódot. A következő parancsokat módosítania kell az egyéni régió eastushelyett. Csak az előzetes verzióban jelenleg támogatott régiókat használhatja.

  5. Azure Container App-környezet létrehozása engedélyezett számítási feladatprofilokkal.

    az containerapp env create --name MyContainerappEnvironment --enable-workload-profiles --resource-group AzureFunctionsContainers-rg --location eastus
    

    A parancs végrehajtása akár 10 percet is igénybe vehet.

  6. Hozzon létre egy általános célú tárfiókot az erőforráscsoportban és a régióban.

    az storage account create --name <STORAGE_NAME> --location eastus --resource-group AzureFunctionsContainers-rg --sku Standard_LRS
    

    A az storage account create parancs létrehozza a tárfiókot.

    Az előző példában cserélje le <STORAGE_NAME> az Ön számára megfelelő és az Azure Storage-ban egyedi nevet. A tárneveknek csak 3–24 karakterből álló számokat és kisbetűket kell tartalmazniuk. Standard_LRSa Functions által támogatott általános célú fiókot határoz meg.

  7. A folytatás előtt ezzel a paranccsal ellenőrizze, hogy a környezet készen áll-e.

    az containerapp env show -n MyContainerappEnvironment -g AzureFunctionsContainers-rg
    

Függvényalkalmazás létrehozása és konfigurálása az Azure-ban a rendszerképpel

Az Azure-beli függvényalkalmazások felügyelik a függvények végrehajtását az Azure Container Apps-környezetben. Ebben a szakaszban az előző szakaszban szereplő Azure-erőforrások használatával hozhat létre függvényalkalmazást egy tárolóregisztrációs adatbázis lemezképéből egy Container Apps-környezetben. Emellett konfigurálja az új környezetet egy kapcsolati sztring a szükséges Azure Storage-fiókhoz.

az functionapp create A parancs használatával függvényalkalmazást hozhat létre az Azure Container Apps által támogatott új felügyelt környezetben:

az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime dotnet-isolated --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-server <LOGIN_SERVER> --registry-username <REGISTRY_NAME> --registry-password <ADMIN_PASSWORD> 
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime node --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-server <LOGIN_SERVER> --registry-username <REGISTRY_NAME> --registry-password <ADMIN_PASSWORD> 
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime java --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-server <LOGIN_SERVER> --registry-username <REGISTRY_NAME> --registry-password <ADMIN_PASSWORD> 
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime powershell --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-server <LOGIN_SERVER> --registry-username <REGISTRY_NAME> --registry-password <ADMIN_PASSWORD> 
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime python --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-server <LOGIN_SERVER> --registry-username <REGISTRY_NAME> --registry-password <ADMIN_PASSWORD> 
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime node --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-server <LOGIN_SERVER> --registry-username <REGISTRY_NAME> --registry-password <ADMIN_PASSWORD> 

A parancsban a az functionapp create--environment paraméter a Container Apps környezetet adja meg, a --image paraméter pedig a függvényalkalmazáshoz használni kívánt rendszerképet. Ebben a példában cserélje le <STORAGE_NAME> a tárfiók előző szakaszában használt nevet. Cserélje le <APP_NAME> az Ön számára megfelelő globálisan egyedi nevet, <LOGIN_SERVER> a teljes mértékben minősített Tárolóregisztrációs adatbázis-kiszolgálót, <REGISTRY_NAME> a fiók beállításjegyzékének nevét és <ADMIN_PASSWORD> a rendszergazdai fiók jelszavát.

Fontos

A rendszergazdai fiók felhasználóneve és jelszava fontos hitelesítő adatok. Ügyeljen arra, hogy biztonságosan tárolja őket, és soha ne legyen akadálymentes helyen, például nyilvános adattárban.

--workload-profile-name "Consumption" A beállítás az alapértelmezett Consumption számítási feladatprofil használatával hozza létre az alkalmazást egy környezetben, amely ugyanúgy kerül, mint egy Container Apps Consumption-csomagban való futtatás. A függvényalkalmazás első létrehozásakor a rendszer lekéri a kezdeti lemezképet a beállításjegyzékből.

Ezen a ponton a függvények egy Container Apps-környezetben futnak, és már hozzáadták a szükséges alkalmazásbeállításokat. Szükség esetén más beállításokat is hozzáadhat a függvényalkalmazáshoz a Függvények szokásos módján. További információ: Alkalmazásbeállítások használata.

Tipp.

A függvénykód későbbi módosításakor újra kell építenie a tárolót, újra közzé kell tennie a lemezképet a beállításjegyzékben, és frissítenie kell a függvényalkalmazást az új rendszerképverzióval. További információ: Lemezkép frissítése a beállításjegyzékben

A függvények ellenőrzése az Azure-ban

Az Azure-ban a függvényalkalmazásban üzembe helyezett rendszerkép használatával mostantól HTTP-kérésekkel hívhatja meg a függvényt.

  1. Futtassa a következő az functionapp function show parancsot az új függvény URL-címének lekéréséhez:

    az functionapp function show --resource-group AzureFunctionsContainers-rg --name <APP_NAME> --function-name HttpExample --query invokeUrlTemplate 
    

    Cserélje le <APP_NAME> a függvényalkalmazás nevére.

  1. Használja az imént beszerzett URL-címet a HttpExample függvényvégpont meghívásához a lekérdezési sztring ?name=Functionshozzáfűzésével.
  1. Használja az imént beszerzett URL-címet a függvényvégpont meghívásához HttpExample .

Ha erre az URL-címre lép, a böngészőnek hasonló kimenetet kell megjelenítenie, mint a függvény helyi futtatásakor.

A kérelem URL-címének így kell kinéznie:

https://myacafunctionapp.kindtree-796af82b.eastus.azurecontainerapps.io/api/httpexample?name=functions

https://myacafunctionapp.kindtree-796af82b.eastus.azurecontainerapps.io/api/httpexample

Az erőforrások eltávolítása

Ha továbbra is használni szeretné az Azure-függvényt a cikkben létrehozott erőforrások használatával, ezeket az erőforrásokat a helyén hagyhatja.

Ha végzett ezzel a függvényalkalmazás-telepítéssel, törölje az AzureFunctionsContainers-rg erőforráscsoportot a csoport összes erőforrásának törléséhez:

az group delete --name AzureFunctionsContainers-rg

Következő lépések