Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Úlohy Azure Container Apps umožňují spouštět kontejnerizované úlohy, které se spouštějí po omezenou dobu trvání a ukončení. Spuštění úlohy můžete aktivovat ručně, podle plánu nebo na základě událostí. Úlohy jsou nejvhodnější pro úlohy, jako je zpracování dat, strojové učení, vyčištění prostředků nebo jakýkoli scénář, který vyžaduje dočasné výpočetní prostředky bez serveru.
V tomto kurzu se naučíte pracovat s úlohami řízenými událostmi.
- Vytvoření prostředí Container Apps pro nasazení aplikací kontejnerů
- Vytvoření fronty služby Azure Storage pro odesílání zpráv do aplikace kontejneru
- Sestavení image kontejneru, která spouští úlohu
- Nasazení úlohy do prostředí Container Apps
- Ověřte, že aplikace kontejneru zpracovává zprávy fronty.
Úloha, kterou vytvoříte, spustí spuštění pro každou zprávu, která se odešle do fronty služby Azure Storage. Každé spuštění úlohy spouští kontejner, který provádí následující kroky:
- Získá jednu zprávu z fronty.
- Zaznamená zprávu do protokolů spuštění úlohy.
- Odstraní zprávu z fronty.
- Východy.
Důležité
Škálovač monitoruje délku fronty a určuje, kolik úloh se má spustit. Pokud chcete přesné škálování, neodstraňovat zprávu z fronty, dokud se zpracování úlohy nedokončí.
Zdrojový kód pro úlohu, kterou spustíte v tomto kurzu, je k dispozici v úložišti GitHub ukázek Azure.
Požadavky
- Účet Azure s aktivním předplatným. Pokud jej nemáte, můžete si jej zdarma vytvořit.
- Azure CLI.
Informace o funkcích, které úlohy Container Apps nepodporují, najdete v tématu Omezení úloh.
Příprava prostředí
Pokud se chcete přihlásit k Azure z Azure CLI, spusťte následující příkaz a podle pokynů dokončete proces ověřování.
az loginPomocí příkazu se ujistěte, že používáte nejnovější verzi Azure CLI
az upgrade.az upgradeNainstalujte nejnovější verzi rozšíření Rozhraní příkazového řádku Container Apps.
az extension add --name containerapp --upgradeZaregistrujte obory názvů
Microsoft.App,Microsoft.OperationalInsightsaMicrosoft.Storage, pokud ještě nejsou zaregistrované ve vašem předplatném Azure.az provider register --namespace Microsoft.App az provider register --namespace Microsoft.OperationalInsights az provider register --namespace Microsoft.StorageDefinujte proměnné prostředí, které se používají v tomto článku.
RESOURCE_GROUP="jobs-quickstart" LOCATION="northcentralus" ENVIRONMENT="env-jobs-quickstart" JOB_NAME="my-job"
Vytvoření prostředí Container Apps
Prostředí Container Apps funguje jako hranice izolace kolem kontejnerových aplikací a úloh, aby mohly sdílet stejnou síť a komunikovat mezi sebou.
Pomocí následujícího příkazu vytvořte skupinu prostředků.
az group create \ --name "$RESOURCE_GROUP" \ --location "$LOCATION"Pomocí následujícího příkazu vytvořte prostředí Container Apps.
az containerapp env create \ --name "$ENVIRONMENT" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION"
Nastavení fronty úložiště
Úloha přijímá zprávy pomocí fronty Azure Storage. V této části vytvoříte účet úložiště a frontu.
Definujte název účtu úložiště.
STORAGE_ACCOUNT_NAME="<STORAGE_ACCOUNT_NAME>" QUEUE_NAME="myqueue"Nahraďte
<STORAGE_ACCOUNT_NAME>jedinečným názvem vašeho účtu úložiště. Názvy účtů úložiště musí být v rámci Azure jedinečné a musí mít délku 3 až 24 znaků obsahující jenom číslice a malá písmena.Vytvořit účet služby Azure Storage
az storage account create \ --name "$STORAGE_ACCOUNT_NAME" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION" \ --sku Standard_LRS \ --kind StorageV2Pokud tento příkaz vrátí chybu:
(SubscriptionNotFound) Subscription <SUBSCRIPTION_ID> was not found. Code: SubscriptionNotFound Message: Subscription <SUBSCRIPTION_ID> was not found.Ujistěte se, že jste ve svém předplatném
Microsoft.StorageAzure zaregistrovali obor názvů.az provider register --namespace Microsoft.StorageUložte připojovací řetězec fronty do proměnné.
QUEUE_CONNECTION_STRING=$(az storage account show-connection-string -g $RESOURCE_GROUP --name $STORAGE_ACCOUNT_NAME --query connectionString --output tsv)Vytvořte frontu zpráv.
az storage queue create \ --name "$QUEUE_NAME" \ --account-name "$STORAGE_ACCOUNT_NAME" \ --connection-string "$QUEUE_CONNECTION_STRING"
Vytvoření spravované identity přiřazené uživatelem
Abyste se vyhnuli používání přihlašovacích údajů pro správu, načítejte image z privátních úložišť ve službě Microsoft Azure Container Registry pomocí spravovaných identit pro ověřování. Pokud je to možné, použijte spravovanou identitu přiřazenou uživatelem k načtení imagí.
Vytvořte spravovanou identitu přiřazenou uživatelem. Než spustíte následující příkazy, zvolte název vaší spravované identity a nahraďte ho
\<PLACEHOLDER\>názvem.IDENTITY="<YOUR_IDENTITY_NAME>"az identity create \ --name $IDENTITY \ --resource-group $RESOURCE_GROUPZískejte ID prostředku identity.
IDENTITY_ID=$(az identity show \ --name $IDENTITY \ --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Sestavení a nasazení úlohy
Pokud chcete úlohu nasadit, musíte nejprve sestavit image kontejneru pro úlohu a odeslat ji do registru. Pak můžete úlohu nasadit do prostředí Container Apps.
Definujte název image kontejneru a registru.
CONTAINER_IMAGE_NAME="queue-reader-job:1.0" CONTAINER_REGISTRY_NAME="<CONTAINER_REGISTRY_NAME>"Nahraďte
<CONTAINER_REGISTRY_NAME>jedinečným názvem vašeho registru kontejneru. Názvy registru kontejnerů musí být v Rámci Azure jedinečné a musí mít délku 5 až 50 znaků obsahující číslice a malá písmena.Vytvořte registr kontejneru.
az acr create \ --name "$CONTAINER_REGISTRY_NAME" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION" \ --sku BasicAby bylo možné použít spravovanou identitu k načtení imagí, musí váš registr kontejneru povolit tokeny cílové skupiny Azure Resource Manageru (ARM).
Pomocí následujícího příkazu zkontrolujte, jestli mají tokeny ARM povolený přístup ke službě Azure Container Registry (ACR).
az acr config authentication-as-arm show --registry "$CONTAINER_REGISTRY_NAME"Pokud jsou povoleny tokeny ARM, příkaz vypíše následující výstup.
{ "status": "enabled" }statusPokud anodisabled, povolte tokeny ARM pomocí následujícího příkazu.az acr config authentication-as-arm update --registry "$CONTAINER_REGISTRY_NAME" --status enabledZdrojový kód úlohy je k dispozici na GitHubu. Spuštěním následujícího příkazu naklonujte úložiště a pomocí příkazu sestavte image kontejneru
az acr buildv cloudu.az acr build \ --registry "$CONTAINER_REGISTRY_NAME" \ --image "$CONTAINER_IMAGE_NAME" \ "https://github.com/Azure-Samples/container-apps-event-driven-jobs-tutorial.git"Image je teď dostupná v registru kontejneru.
Vytvořte úlohu v prostředí Container Apps.
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" \ --mi-user-assigned "$IDENTITY_ID" \ --registry-identity "$IDENTITY_ID" \ --env-vars "AZURE_STORAGE_QUEUE_NAME=$QUEUE_NAME" "AZURE_STORAGE_CONNECTION_STRING=secretref:connection-string-secret"Následující tabulka popisuje klíčové parametry použité v příkazu.
Parametr Popis --replica-timeoutMaximální doba trvání, po které může replika provést. --min-executionsMinimální počet spuštění úloh pro každý interval dotazování. --max-executionsMaximální počet spuštění úloh pro každý interval dotazování. --polling-intervalInterval dotazování, ve kterém se má vyhodnotit pravidlo škálování. --scale-rule-nameNázev pravidla škálování --scale-rule-typeTyp pravidla škálování, které se má použít. --scale-rule-metadataMetadata pravidla škálování. --scale-rule-authOvěřování pravidla škálování. --secretsTajné kódy, které se mají použít pro úlohu. --registry-serverServer registru kontejneru, který se má použít pro úlohu. V případě služby Azure Container Registry příkaz automaticky nakonfiguruje ověřování. --mi-user-assignedID prostředku spravované identity přiřazené uživatelem pro přiřazení k úloze. --registry-identityID prostředku spravované identity pro ověření pomocí serveru registru místo použití uživatelského jména a hesla. Pokud je to možné, vytvoří se pro identitu automaticky přiřazení role acrpull. --env-varsProměnné prostředí, které se mají použít pro úlohu. Konfigurace pravidla škálování definuje zdroj událostí, který se má monitorovat. Vyhodnocuje se v každém intervalu dotazování a určuje, kolik spuštění úloh se má aktivovat. Další informace najdete v tématu Nastavení pravidel škálování.
Úloha řízená událostmi se teď vytvoří v prostředí Container Apps.
Ověření nasazení
Úloha je nakonfigurovaná tak, aby vyhodnocovala pravidlo škálování každých 60 sekund, což kontroluje počet zpráv ve frontě. Pro každé období vyhodnocení spustí nové spuštění úlohy pro každou zprávu ve frontě až do maximálního počtu 10 spuštění.
Pokud chcete ověřit, že je úloha správně nakonfigurovaná, můžete do fronty odeslat některé zprávy, potvrdit, že se spustí spuštění úlohy a že se zprávy zaprotokolují do protokolů spuštění úlohy.
Odešle zprávu do fronty.
az storage message put \ --content "Hello Queue Reader Job" \ --queue-name "$QUEUE_NAME" \ --connection-string "$QUEUE_CONNECTION_STRING"Zobrazí seznam spuštění úlohy.
az containerapp job execution list \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP" \ --output jsonVzhledem k tomu, že je úloha nakonfigurovaná tak, aby vyhodnocovala pravidlo škálování každých 60 sekund, může spuštění úlohy trvat až minutu. Opakujte příkaz, dokud neuvidíte spuštění úlohy a její stav je
Succeeded.Spuštěním následujících příkazů zobrazte protokolované zprávy. Tyto příkazy vyžadují rozšíření Log Analytics, proto při vyžádání přijměte výzvu k instalaci rozšíření.
LOG_ANALYTICS_WORKSPACE_ID=$(az containerapp env show --name $ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --output 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"ContainerAppConsoleLogs_CLDokud není tabulka připravená, příkaz vrátí chybu:BadArgumentError: The request had some invalid properties. Počkejte několik minut a zkuste akci zopakovat.
Vyčištění prostředků
Jakmile budete hotovi, spuštěním následujícího příkazu odstraňte skupinu prostředků, která obsahuje vaše prostředky Container Apps.
Upozornění
Následující příkaz odstraní zadanou skupinu prostředků a všechny prostředky obsažené v ní. Pokud prostředky mimo rozsah tohoto kurzu existují v zadané skupině prostředků, odstraní se také.
az group delete \
--resource-group $RESOURCE_GROUP