Az első tárolóalapú Azure Functions létrehozása az Azure Arcon (előzetes verzió)

Ebben a cikkben egy Linux-tárolóban futó függvényalkalmazást hoz létre, és üzembe helyezi azt egy Azure Arc-kompatibilis Kubernetes-fürtön egy tárolóregisztrációs adatbázisból. Saját tároló létrehozásakor testre szabhatja a függvényalkalmazás végrehajtási környezetét. További információ: App Service, Functions és Logic Apps az Azure Arcon.

Feljegyzés

Az egyéni tárolók Azure Arc-kompatibilis Kubernetes-fürtön való üzembe helyezésének támogatása jelenleg előzetes verzióban érhető el.

A függvényeket egy Azure Arc-kompatibilis Kubernetes-fürtben is közzéteheti anélkül, hogy először létrehoz egy tárolót. További információ: Az első függvény létrehozása az Azure Arcon (előzetes verzió)

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.

App Service Kubernetes-környezet létrehozása

A kezdés előtt létre kell hoznia egy App Service Kubernetes-környezetet egy Azure Arc-kompatibilis Kubernetes-fürthöz.

Feljegyzés

A környezet létrehozásakor jegyezze fel az egyéni hely nevét és az egyéni helyet tartalmazó erőforráscsoport nevét is. Ezekkel megkeresheti az egyéni helyazonosítót, amelyre szüksége lesz a függvényalkalmazás környezetbeli létrehozásakor.

Ha nem hozta létre a környezetet, forduljon a fürt rendszergazdájához.

Azure CLI-bővítmények hozzáadása

Indítsa el a Bash-környezetet az Azure Cloud Shellben.

Mivel ezek a parancssori felületi parancsok még nem részei az alapvető PARANCSSOR-készletnek, adja hozzá őket a következő parancsokkal:

az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube

Azure-erőforrások létrehozása

Mielőtt üzembe helyezheti a tárolót az új App Service Kubernetes-környezetben, két további erőforrást kell létrehoznia:

  • Tárfiók. Bár ez a cikk létrehoz egy tárfiókot, bizonyos esetekben előfordulhat, hogy nincs szükség tárfiókra. További információ: Azure Arc-kompatibilis fürtök a tárolási szempontokat ismertető cikkben.
  • Egy függvényalkalmazás, amely a tároló futtatásának kontextusát biztosítja. A függvényalkalmazás az App Service Kubernetes környezetben fut, és leképezi a helyi függvényprojektet. A függvényalkalmazás lehetővé teszi, hogy logikai egységbe csoportosítsa a függvényeket az erőforrások egyszerűbb felügyelete, telepítése és megosztása érdekében.

Feljegyzés

A függvényalkalmazások dedikált (App Service-) csomagon futó App Service Kubernetes-környezetben futnak. Ha meglévő csomag nélkül hozza létre a függvényalkalmazást, létrejön egy csomag az Ön számára.

Tárfiók létrehozása

Az az storage account create paranccsal 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 westeurope --resource-group myResourceGroup --sku Standard_LRS

Feljegyzés

Bizonyos esetekben előfordulhat, hogy nincs szükség tárfiókra. További információ: Azure Arc-kompatibilis fürtök a tárolási szempontokat ismertető cikkben.

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 neveknek csak három-24 karakterből álló számokat és kisbetűket kell tartalmazniuk. Standard_LRS egy általános célú fiókot határoz meg, amelyet a Functions támogat. Az --location érték egy standard Azure-régió.

A függvényalkalmazás létrehozása

Futtassa az az functionapp create parancsot egy új függvényalkalmazás létrehozásához a környezetben.

az functionapp create --name <APP_NAME> --custom-location <CUSTOM_LOCATION_ID> --storage-account <STORAGE_NAME> --resource-group AzureFunctionsContainers-rg --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD> 

Ebben a példában cserélje le <CUSTOM_LOCATION_ID> az App Service Kubernetes-környezethez meghatározott egyéni hely azonosítóját. Cserélje le <STORAGE_NAME> az előző lépésben <APP_NAME> használt fiók nevét egy globálisan egyedi névre, <DOCKER_ID> illetve <LOGIN_SERVER> a Docker Hub-fiókazonosítóra vagy a Container Registry-kiszolgálóra. Egyéni tárolóregisztrációs adatbázisból történő üzembe helyezéskor a rendszerkép neve a beállításjegyzék URL-címét jelzi.

A függvényalkalmazás első létrehozásakor a rendszer lekéri a kezdeti képet a Docker Hubról.

A szükséges alkalmazásbeállítások megadása

Futtassa az alábbi parancsokat egy alkalmazásbeállítás létrehozásához a tárfiók kapcsolati sztring:

storageConnectionString=$(az storage account show-connection-string --resource-group AzureFunctionsContainers-rg --name <STORAGE_NAME> --query connectionString --output tsv)
az functionapp config appsettings set --name <app_name> --resource-group AzureFunctionsContainers-rg --settings AzureWebJobsStorage=$storageConnectionString

Ezt a kódot a Cloud Shellben vagy a Bashben kell futtatni a helyi számítógépen. Cserélje le <STORAGE_NAME> a tárfiók nevére és <APP_NAME> a függvényalkalmazás nevére.

A függvény meghívása az Azure-ban

Mivel a függvény HTTP-eseményindítót használ, http-kérést küld az URL-címére a böngészőben, vagy egy olyan eszközzel, mint a curl.

Másolja a közzétételi parancs kimenetében látható teljes meghívási URL-címet egy böngészőcímsávra a lekérdezési paraméter ?name=Functionshozzáfűzésével. A böngészőnek hasonló kimenetet kell megjelenítenie, mint amikor helyileg futtatta a függvényt.

The output of the function run on Azure in a browser

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 erőforráscsoportot a AzureFunctionsContainers-rg csoport összes erőforrásának törléséhez:

az group delete --name AzureFunctionsContainers-rg

Ez csak a cikkben létrehozott erőforrásokat távolítja el. A mögöttes Azure Arc-környezet továbbra is érvényben marad.

Következő lépések