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


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:

  1. Egy üzenetet kap az üzenetsorból.
  2. Naplózza az üzenetet a feladat végrehajtási naplóiba.
  3. Törli az üzenetet az üzenetsorból.
  4. 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

Beállítás

  1. 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
    
  2. 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
    
  3. Telepítse az Azure Container Apps CLI-bővítmény legújabb verzióját.

    az extension add --name containerapp --upgrade
    
  4. Regisztrálja a névtereket és Microsoft.OperationalInsights a Microsoft.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
    
  5. 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.

  1. Az erőforráscsoport létrehozásához használja az alábbi parancsot.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. 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.

  1. 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.

  2. 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
    
  3. 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`
    
  4. 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.

  1. 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.

  2. 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
    
  3. 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.

  4. 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.

  1. Üzenet küldése az üzenetsorba.

    az storage message put \
        --content "Hello Queue Reader Job" \
        --queue-name "$QUEUE_NAME" \
        --connection-string "$QUEUE_CONNECTION_STRING"
    
  2. 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

  3. 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

Következő lépések