Kurz: Nasazení aplikace pro zpracování na pozadí pomocí Azure Container Apps
Použití Azure Container Apps umožňuje nasazovat aplikace bez nutnosti vystavení veřejných koncových bodů. Pomocí pravidel škálování služby Container Apps může aplikace škálovat kapacitu na více instancí a na základě délky fronty služby Azure Storage. Pokud ve frontě nejsou žádné zprávy, aplikace kontejneru se škáluje na nulu.
Získáte informace pro:
- 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
- Nasazení aplikace pro zpracování na pozadí jako kontejnerové aplikace
- Ověřte, že aplikace kontejneru zpracovává zprávy fronty.
Instalační program
Začněte tím, že se přihlásíte k Azure. Spusťte následující příkaz a podle pokynů dokončete proces ověřování.
az login
Dále nainstalujte rozšíření Azure Container Apps pro rozhraní příkazového řádku.
az extension add --name containerapp --upgrade
Teď, když je nainstalované aktuální rozšíření nebo modul, zaregistrujte Microsoft.App
obor názvů.
Poznámka:
Prostředky Azure Container Apps se migrovaly z Microsoft.Web
oboru názvů do Microsoft.App
oboru názvů. Další podrobnosti najdete v tématu Migrace oboru názvů z webu Microsoft.Web na Microsoft.App v březnu 2022 .
az provider register --namespace Microsoft.App
Pokud jste ho ještě nepoužili Microsoft.OperationalInsights
, zaregistrujte poskytovatele pro pracovní prostor služby Azure Monitor Log Analytics.
az provider register --namespace Microsoft.OperationalInsights
Dále nastavte následující proměnné prostředí:
RESOURCE_GROUP="my-container-apps"
LOCATION="canadacentral"
CONTAINERAPPS_ENVIRONMENT="my-environment"
Pomocí těchto proměnných můžete vytvořit skupinu prostředků pro uspořádání služeb souvisejících s novou aplikací kontejneru.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
S upgradovaným rozhraním příkazového řádku a dostupnou novou skupinou prostředků můžete vytvořit prostředí Container Apps a nasadit aplikaci kontejneru.
Vytvořit prostředí
Prostředí v Azure Container Apps vytvoří zabezpečenou hranici kolem skupiny kontejnerových aplikací. KontejnerOvé aplikace nasazené do stejného prostředí se nasazují ve stejné virtuální síti a zapisují protokoly do stejného pracovního prostoru služby Log Analytics.
Jednotlivé kontejnerové aplikace se nasazují do prostředí Azure Container Apps. Pokud chcete vytvořit prostředí, spusťte následující příkaz:
az containerapp env create \
--name $CONTAINERAPPS_ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION"
Nastavení fronty úložiště
Začněte definováním názvu úč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.
STORAGE_ACCOUNT_NAME="<STORAGE_ACCOUNT_NAME>"
Vytvořit účet služby Azure Storage
az storage account create \
--name $STORAGE_ACCOUNT_NAME \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION" \
--sku Standard_RAGRS \
--kind StorageV2
Dále získejte připojovací řetězec pro frontu.
QUEUE_CONNECTION_STRING=`az storage account show-connection-string -g $RESOURCE_GROUP --name $STORAGE_ACCOUNT_NAME --query connectionString --out json | tr -d '"'`
Teď můžete vytvořit frontu zpráv.
az storage queue create \
--name "myqueue" \
--account-name $STORAGE_ACCOUNT_NAME \
--connection-string $QUEUE_CONNECTION_STRING
Nakonec můžete do fronty odeslat zprávu.
az storage message put \
--content "Hello Queue Reader App" \
--queue-name "myqueue" \
--connection-string $QUEUE_CONNECTION_STRING
Nasazení aplikace na pozadí
Vytvořte soubor s názvem queue.json a vložte do souboru následující konfigurační kód.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"defaultValue": "canadacentral",
"type": "String"
},
"environment_name": {
"type": "String"
},
"queueconnection": {
"type": "secureString"
}
},
"variables": {},
"resources": [
{
"name": "queuereader",
"type": "Microsoft.App/containerApps",
"apiVersion": "2022-03-01",
"kind": "containerapp",
"location": "[parameters('location')]",
"properties": {
"managedEnvironmentId": "[resourceId('Microsoft.App/managedEnvironments', parameters('environment_name'))]",
"configuration": {
"activeRevisionsMode": "single",
"secrets": [
{
"name": "queueconnection",
"value": "[parameters('queueconnection')]"
}]
},
"template": {
"containers": [
{
"image": "mcr.microsoft.com/azuredocs/containerapps-queuereader",
"name": "queuereader",
"env": [
{
"name": "QueueName",
"value": "myqueue"
},
{
"name": "QueueConnectionString",
"secretRef": "queueconnection"
}
]
}
],
"scale": {
"minReplicas": 1,
"maxReplicas": 10,
"rules": [
{
"name": "myqueuerule",
"azureQueue": {
"queueName": "myqueue",
"queueLength": 100,
"auth": [
{
"secretRef": "queueconnection",
"triggerParameter": "connection"
}
]
}
}
]
}
}
}
}]
}
Teď můžete vytvořit a nasadit aplikaci kontejneru.
az deployment group create --resource-group "$RESOURCE_GROUP" \
--template-file ./queue.json \
--parameters \
environment_name="$CONTAINERAPPS_ENVIRONMENT" \
queueconnection="$QUEUE_CONNECTION_STRING" \
location="$LOCATION"
Tento příkaz nasadí ukázkovou aplikaci z image veřejného kontejneru s názvem mcr.microsoft.com/azuredocs/containerapps-queuereader
a nastaví tajné kódy a proměnné prostředí používané aplikací.
Aplikace škáluje kapacitu na 10 replik na základě délky fronty definované v scale
části šablony ARM.
Ověření výsledku
Aplikace kontejneru běží jako proces na pozadí. Když zprávy přicházejí z fronty služby Azure Storage, aplikace vytvoří položky protokolu v Log Analytics. Než budete moct dotazovat protokolovaná data, musíte několik minut počkat, než se analýza poprvé dorazí.
Spuštěním následujícího příkazu zobrazte protokolované zprávy. Tento příkaz vyžaduje rozšíření Log Analytics, proto po vyžádání přijměte výzvu k instalaci rozšíření.
LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az containerapp env show --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv`
az monitor log-analytics query \
--workspace $LOG_ANALYTICS_WORKSPACE_CLIENT_ID \
--analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'queuereader' and Log_s contains 'Message ID' | project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s | take 5" \
--out table
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