Oktatóanyag: Eseményvezérelt feladat üzembe helyezése az Azure Container Apps használatával
Az Azure Container Apps-feladatok lehetővé teszik olyan tárolóalapú feladatok futtatását, amelyek véges időtartamra és kilépésre hajthatók végre. A feladatok végrehajtását manuálisan, ütemezés szerint vagy események alapján is elindíthatja. A feladatok olyan feladatokhoz ideálisak, mint az adatfeldolgozás, a gépi tanulás, az erőforrás-törlés vagy bármely olyan forgatókönyv, amely kiszolgáló nélküli számítási erőforrásokat igényel.
Ebben az oktatóanyagban megtudhatja, hogyan dolgozhat eseményvezérelt feladatokkal.
- Container Apps-környezet létrehozása a tárolóalkalmazások üzembe helyezéséhez
- Azure Storage-üzenetsor létrehozása üzenetek küldéséhez a tárolóalkalmazásba
- Feladatokat futtató tárolórendszerkép létrehozása
- A feladat üzembe helyezése a Container Apps-környezetben
- Ellenőrizze, hogy a tárolóalkalmazás feldolgozta-e az üzenetsor-üzeneteket
A létrehozott feladat végrehajtást indít el az Azure Storage-üzenetsorba küldött minden egyes üzenethez. Minden feladat végrehajtása egy tárolót futtat, amely a következő lépéseket hajtja végre:
- Egy üzenetet kap az üzenetsorból.
- Naplózza az üzenetet a feladat végrehajtási naplóiba.
- Törli az üzenetet az üzenetsorból.
- Kilép.
Fontos
A skálázó figyeli az üzenetsor hosszát annak meghatározásához, hogy hány feladatot kell kezdeni. A pontos skálázás érdekében ne töröljön üzenetet az üzenetsorból, amíg a feladat végrehajtása nem fejeződött be.
Az oktatóanyagban futtatott feladat forráskódja egy Azure Samples GitHub-adattárban érhető el.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel.
- Ha még nem rendelkezik fiókkal, ingyen létrehozhat egyet.
- Telepítse az Azure CLI-t.
- A korlátozások listájához tekintse meg a feladatokra vonatkozó korlátozásokat .
Beállítás
Ha a parancssori felületről szeretne bejelentkezni az Azure-ba, futtassa a következő parancsot, és kövesse az utasításokat a hitelesítési folyamat befejezéséhez.
az login
Győződjön meg arról, hogy a parancssori felület legújabb verzióját futtatja a frissítési paranccsal.
az upgrade
Telepítse az Azure Container Apps CLI-bővítmény legújabb verzióját.
az extension add --name containerapp --upgrade
Regisztrálja a névtereket és
Microsoft.OperationalInsights
aMicrosoft.App
névtereket, ha még nem regisztrálta őket az Azure-előfizetésében.az provider register --namespace Microsoft.App az provider register --namespace Microsoft.OperationalInsights
Most, hogy az Azure CLI beállítása befejeződött, meghatározhatja a jelen cikkben használt környezeti változókat.
RESOURCE_GROUP="jobs-quickstart" LOCATION="northcentralus" ENVIRONMENT="env-jobs-quickstart" JOB_NAME="my-job"
Container Apps-környezet létrehozása
Az Azure Container Apps-környezet biztonságos határként működik a tárolóalkalmazások és -feladatok körül, így megoszthatják ugyanazt a hálózatot, és kommunikálhatnak egymással.
Az erőforráscsoport létrehozásához használja az alábbi parancsot.
az group create \ --name "$RESOURCE_GROUP" \ --location "$LOCATION"
Hozza létre a Container Apps-környezetet az alábbi paranccsal.
az containerapp env create \ --name "$ENVIRONMENT" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION"
Tárolási üzenetsor beállítása
A feladat egy Azure Storage-üzenetsort használ az üzenetek fogadásához. Ebben a szakaszban létrehoz egy tárfiókot és egy üzenetsort.
Adjon nevet a tárfióknak.
STORAGE_ACCOUNT_NAME="<STORAGE_ACCOUNT_NAME>" QUEUE_NAME="myqueue"
Cserélje le
<STORAGE_ACCOUNT_NAME>
a tárfiók egyedi nevére. A tárfiókok nevének egyedinek kell lennie az Azure-ban , és csak számokból és kisbetűkből álló 3–24 karakter hosszúságúnak kell lennie.Azure Storage-fiók létrehozása.
az storage account create \ --name "$STORAGE_ACCOUNT_NAME" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION" \ --sku Standard_LRS \ --kind StorageV2
Mentse az üzenetsor kapcsolati sztring egy változóba.
QUEUE_CONNECTION_STRING=`az storage account show-connection-string -g $RESOURCE_GROUP --name $STORAGE_ACCOUNT_NAME --query connectionString --output tsv`
Hozza létre az üzenetsort.
az storage queue create \ --name "$QUEUE_NAME" \ --account-name "$STORAGE_ACCOUNT_NAME" \ --connection-string "$QUEUE_CONNECTION_STRING"
A feladat létrehozása és üzembe helyezése
A feladat üzembe helyezéséhez először létre kell készítenie egy tárolórendszerképet a feladathoz, majd le kell küldenie egy beállításjegyzékbe. Ezután üzembe helyezheti a feladatot a Container Apps-környezetben.
Adjon nevet a tárolórendszerképnek és a beállításjegyzéknek.
CONTAINER_IMAGE_NAME="queue-reader-job:1.0" CONTAINER_REGISTRY_NAME="<CONTAINER_REGISTRY_NAME>"
Cserélje le
<CONTAINER_REGISTRY_NAME>
a tárolóregisztrációs adatbázis egyedi nevére. A tárolóregisztrációs adatbázis nevének egyedinek kell lennie az Azure-ban , és csak számokból és kisbetűkből álló 5–50 karakter hosszúságúnak kell lennie.Hozzon létre egy tárolóregisztrációs adatbázist.
az acr create \ --name "$CONTAINER_REGISTRY_NAME" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION" \ --sku Basic \ --admin-enabled true
A feladat forráskódja elérhető a GitHubon. Futtassa a következő parancsot az adattár klónozásához és a tárolólemezkép felhőben való létrehozásához a
az acr build
parancs használatával.az acr build \ --registry "$CONTAINER_REGISTRY_NAME" \ --image "$CONTAINER_IMAGE_NAME" \ "https://github.com/Azure-Samples/container-apps-event-driven-jobs-tutorial.git"
A rendszerkép már elérhető a tárolóregisztrációs adatbázisban.
Hozzon létre egy feladatot a Container Apps-környezetben.
az containerapp job create \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP" \ --environment "$ENVIRONMENT" \ --trigger-type "Event" \ --replica-timeout "1800" \ --min-executions "0" \ --max-executions "10" \ --polling-interval "60" \ --scale-rule-name "queue" \ --scale-rule-type "azure-queue" \ --scale-rule-metadata "accountName=$STORAGE_ACCOUNT_NAME" "queueName=$QUEUE_NAME" "queueLength=1" \ --scale-rule-auth "connection=connection-string-secret" \ --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \ --cpu "0.5" \ --memory "1Gi" \ --secrets "connection-string-secret=$QUEUE_CONNECTION_STRING" \ --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io" \ --env-vars "AZURE_STORAGE_QUEUE_NAME=$QUEUE_NAME" "AZURE_STORAGE_CONNECTION_STRING=secretref:connection-string-secret"
Az alábbi táblázat a parancsban használt kulcsparamétereket ismerteti.
Paraméter Leírás --replica-timeout
A replika végrehajtásának maximális időtartama. --min-executions
A lekérdezési időközönként futtatandó feladatvégrehajtások minimális száma. --max-executions
A lekérdezési időközönként futtatandó feladatvégrehajtások maximális száma. --polling-interval
A skálázási szabály kiértékelésének időköze. --scale-rule-name
A méretezési szabály neve. --scale-rule-type
A használni kívánt méretezési szabály típusa. --scale-rule-metadata
A méretezési szabály metaadatai. --scale-rule-auth
A méretezési szabály hitelesítése. --secrets
A feladathoz használandó titkos kódok. --registry-server
A feladathoz használni kívánt tárolóregisztrációs adatbázis-kiszolgáló. Azure Container Registry esetén a parancs automatikusan konfigurálja a hitelesítést. --env-vars
A feladathoz használandó környezeti változók. A méretezési szabály konfigurációja határozza meg a figyelendő eseményforrást. Az egyes lekérdezési időközök kiértékelése és annak meghatározása, hogy hány feladatvégrehajtást kell aktiválni. További információ: Méretezési szabályok beállítása.
Az eseményvezérelt feladat most a Container Apps környezetben jön létre.
Az üzemelő példány ellenőrzése
A feladat úgy van konfigurálva, hogy 60 másodpercenként kiértékelje a méretezési szabályt, amely ellenőrzi az üzenetsorban lévő üzenetek számát. Minden egyes értékelési időszakban egy új feladatvégrehajtást indít el az üzenetsor minden üzenetéhez, legfeljebb 10 végrehajtásig.
Ha ellenőrizni szeretné, hogy a feladat megfelelően lett-e konfigurálva, elküldhet néhány üzenetet az üzenetsorba, ellenőrizheti, hogy a feladatvégrehajtások elindultak-e, és az üzeneteket a rendszer naplózza a feladatvégrehajtási naplókba.
Üzenet küldése az üzenetsorba.
az storage message put \ --content "Hello Queue Reader Job" \ --queue-name "$QUEUE_NAME" \ --connection-string "$QUEUE_CONNECTION_STRING"
Feladat végrehajtásának listázása.
az containerapp job execution list \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP" \ --output json
Mivel a feladat úgy van konfigurálva, hogy 60 másodpercenként kiértékelje a méretezési szabályt, akár egy teljes percet is igénybe vehet a feladat végrehajtása. Ismételje meg a parancsot, amíg meg nem jelenik a feladat végrehajtása, és az állapota .
Succeeded
A naplózott üzenetek megtekintéséhez futtassa az alábbi parancsokat. Ezekhez a parancsokhoz szükség van a Log Analytics-bővítményre, ezért fogadja el a bővítmény telepítésére vonatkozó kérést, ha szükséges.
LOG_ANALYTICS_WORKSPACE_ID=`az containerapp env show --name $ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv` az monitor log-analytics query \ --workspace "$LOG_ANALYTICS_WORKSPACE_ID" \ --analytics-query "ContainerAppConsoleLogs_CL | where ContainerJobName_s == '$JOB_NAME' | order by _timestamp_d asc"
Amíg a
ContainerAppConsoleLogs_CL
tábla nem áll készen, a parancs egy hibát ad vissza:BadArgumentError: The request had some invalid properties
. Várjon néhány percet, majd próbálkozzon újra.
Tipp.
Problémákat tapasztal? Tudassa velünk a GitHubon, ha megnyit egy hibát az Azure Container Apps adattárában.
Az erőforrások eltávolítása
Ha végzett, futtassa a következő parancsot a Container Apps-erőforrásokat tartalmazó erőforráscsoport törléséhez.
Figyelemfelhívás
Az alábbi parancs törli a megadott erőforráscsoportot és a benne lévő összes erőforrást. Ha az oktatóanyag hatókörén kívül eső erőforrások a megadott erőforráscsoportban találhatók, akkor azok is törlődnek.
az group delete \
--resource-group $RESOURCE_GROUP