Självstudie: Distribuera ett program för bakgrundsbearbetning med Azure Container Apps
Med Azure Container Apps kan du distribuera program utan att behöva exponera offentliga slutpunkter. Genom att använda skalningsregler för Container Apps kan programmet skala ut och in baserat på Azure Storage-kölängden. När det inte finns några meddelanden i kön skalar containerappen in till noll.
Du lär dig att:
- Skapa en Container Apps-miljö för att distribuera dina containerappar
- Skapa en Azure Storage-kö för att skicka meddelanden till containerappen
- Distribuera ditt bakgrundsbearbetningsprogram som en containerapp
- Kontrollera att kömeddelandena bearbetas av containerappen
Ställ in
Om du vill logga in på Azure från CLI kör du följande kommando och följer anvisningarna för att slutföra autentiseringsprocessen.
az login
Kör uppgraderingskommandot för att säkerställa att du kör den senaste versionen av CLI.
az upgrade
Installera eller uppdatera sedan Azure Container Apps-tillägget för CLI.
Om du får fel om saknade parametrar när du kör az containerapp
kommandon i Azure CLI eller cmdletar från modulen Az.App
i Azure PowerShell kontrollerar du att den senaste versionen av Azure Container Apps-tillägget är installerad.
az extension add --name containerapp --upgrade
Kommentar
Från och med maj 2024 aktiverar Azure CLI-tillägg inte längre förhandsversionsfunktioner som standard. Om du vill komma åt förhandsversionsfunktioner för Container Apps installerar du containerapptillägget med --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Nu när det aktuella tillägget eller modulen har installerats registrerar du Microsoft.App
namnrymderna och Microsoft.OperationalInsights
.
Kommentar
Azure Container Apps-resurser har migrerats från Microsoft.Web
namnområdet till Microsoft.App
namnområdet. Mer information finns i Namnområdesmigrering från Microsoft.Web till Microsoft.App i mars 2022.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Ange miljövariabler
Ange följande miljövariabler. Ersätt <PLACEHOLDERS> med dina värden:
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
Skapa en Azure-resursgrupp
Skapa en resursgrupp för att organisera de tjänster som är relaterade till distributionen av containerappen.
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
Skapa en miljö
En miljö i Azure Container Apps skapar en säker gräns runt en grupp med containerappar. Container Apps som distribueras till samma miljö distribueras i samma virtuella nätverk och skriver loggar till samma Log Analytics-arbetsyta.
Kör följande kommando för att skapa miljön:
az containerapp env create \
--name $CONTAINERAPPS_ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION"
Konfigurera en lagringskö
Börja med att definiera ett namn för lagringskontot. Lagringskontonamn måste vara unika i Azure och vara mellan 3 och 24 tecken långa och innehåller endast siffror och gemener.
STORAGE_ACCOUNT_NAME="<STORAGE_ACCOUNT_NAME>"
skapa ett Azure Storage-konto
az storage account create \
--name $STORAGE_ACCOUNT_NAME \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION" \
--sku Standard_RAGRS \
--kind StorageV2
Hämta sedan niska veze för kön.
QUEUE_CONNECTION_STRING=`az storage account show-connection-string -g $RESOURCE_GROUP --name $STORAGE_ACCOUNT_NAME --query connectionString --out json | tr -d '"'`
Nu kan du skapa meddelandekön.
az storage queue create \
--name "myqueue" \
--account-name $STORAGE_ACCOUNT_NAME \
--connection-string $QUEUE_CONNECTION_STRING
Slutligen kan du skicka ett meddelande till kön.
az storage message put \
--content "Hello Queue Reader App" \
--queue-name "myqueue" \
--connection-string $QUEUE_CONNECTION_STRING
Distribuera bakgrundsprogrammet
Skapa en fil med namnet queue.json och klistra in följande konfigurationskod i filen.
{
"$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"
}
]
}
}
]
}
}
}
}]
}
Nu kan du skapa och distribuera din containerapp.
az deployment group create --resource-group "$RESOURCE_GROUP" \
--template-file ./queue.json \
--parameters \
environment_name="$CONTAINERAPPS_ENVIRONMENT" \
queueconnection="$QUEUE_CONNECTION_STRING" \
location="$LOCATION"
Det här kommandot distribuerar demoprogrammet från den offentliga containeravbildningen med namnet mcr.microsoft.com/azuredocs/containerapps-queuereader
och anger variabler för hemligheter och miljöer som används av programmet.
Programmet skalar ut till 10 repliker baserat på kölängden scale
enligt definitionen i avsnittet i ARM-mallen.
Verifiera resultatet
Containerappen körs som en bakgrundsprocess. När meddelanden kommer från Azure Storage-kön skapar programmet loggposter i Log Analytics. Du måste vänta några minuter tills analysen kommer för första gången innan du kan köra frågor mot loggade data.
Kör följande kommando för att se loggade meddelanden. Det här kommandot kräver Log Analytics-tillägget, så acceptera uppmaningen att installera tillägget när det begärs.
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
Dricks
Har du problem? Meddela oss på GitHub genom att öppna ett problem i Azure Container Apps-lagringsplatsen.
Rensa resurser
När du är klar kör du följande kommando för att ta bort resursgruppen som innehåller dina Container Apps-resurser.
Varning
Följande kommando tar bort den angivna resursgruppen och alla resurser som ingår i den. Om det finns resurser utanför omfånget för den här självstudien i den angivna resursgruppen tas de också bort.
az group delete \
--resource-group $RESOURCE_GROUP
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för