Samouczek: wdrażanie aplikacji przetwarzania w tle za pomocą usługi Azure Container Apps
Korzystanie z usługi Azure Container Apps umożliwia wdrażanie aplikacji bez konieczności ujawniania publicznych punktów końcowych. Za pomocą reguł skalowania usługi Container Apps aplikacja może skalować w poziomie i w oparciu o długość kolejki usługi Azure Storage. Jeśli w kolejce nie ma żadnych komunikatów, aplikacja kontenera jest skalowana do zera.
Dowiedz się, jak odbywa się:
- Tworzenie środowiska usługi Container Apps w celu wdrożenia aplikacji kontenera
- Tworzenie kolejki usługi Azure Storage w celu wysyłania komunikatów do aplikacji kontenera
- Wdrażanie aplikacji przetwarzania w tle jako aplikacji kontenera
- Sprawdź, czy komunikaty kolejki są przetwarzane przez aplikację kontenera
Ustawienia
Aby zalogować się do platformy Azure z poziomu interfejsu wiersza polecenia, uruchom następujące polecenie i postępuj zgodnie z monitami, aby ukończyć proces uwierzytelniania.
az login
Aby upewnić się, że używasz najnowszej wersji interfejsu wiersza polecenia, uruchom polecenie uaktualniania.
az upgrade
Następnie zainstaluj lub zaktualizuj rozszerzenie usługi Azure Container Apps dla interfejsu wiersza polecenia.
az extension add --name containerapp --upgrade
Teraz, po zainstalowaniu bieżącego rozszerzenia lub modułu Microsoft.App
, zarejestruj przestrzenie nazw i Microsoft.OperationalInsights
.
Uwaga
Zasoby usługi Azure Container Apps zostały zmigrowane z Microsoft.Web
przestrzeni nazw do Microsoft.App
przestrzeni nazw. Aby uzyskać więcej informacji, zobacz Migracja przestrzeni nazw z witryny Microsoft.Web do Microsoft.App w marcu 2022 r.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Ustawianie zmiennych środowiskowych
Ustaw następujące zmienne środowiskowe. Zastąp <symbole> ZASTĘPCZE wartościami:
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
Tworzenie grupy zasobów platformy Azure
Utwórz grupę zasobów, aby zorganizować usługi związane z wdrożeniem aplikacji kontenera.
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
Utwórz środowisko
Środowisko w usłudze Azure Container Apps tworzy bezpieczną granicę wokół grupy aplikacji kontenera. Aplikacje kontenera wdrożone w tym samym środowisku są wdrażane w tej samej sieci wirtualnej i zapisują dzienniki w tym samym obszarze roboczym usługi Log Analytics.
Aby utworzyć środowisko, uruchom następujące polecenie:
az containerapp env create \
--name $CONTAINERAPPS_ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION"
Konfigurowanie kolejki magazynu
Zacznij od zdefiniowania nazwy konta magazynu. Nazwy kont magazynu muszą być unikatowe na platformie Azure i mieć długość od 3 do 24 znaków zawierających tylko cyfry i małe litery.
STORAGE_ACCOUNT_NAME="<STORAGE_ACCOUNT_NAME>"
Tworzenie konta usługi Azure Storage.
az storage account create \
--name $STORAGE_ACCOUNT_NAME \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION" \
--sku Standard_RAGRS \
--kind StorageV2
Następnie pobierz parametry połączenia dla kolejki.
QUEUE_CONNECTION_STRING=`az storage account show-connection-string -g $RESOURCE_GROUP --name $STORAGE_ACCOUNT_NAME --query connectionString --out json | tr -d '"'`
Teraz możesz utworzyć kolejkę komunikatów.
az storage queue create \
--name "myqueue" \
--account-name $STORAGE_ACCOUNT_NAME \
--connection-string $QUEUE_CONNECTION_STRING
Na koniec możesz wysłać komunikat do kolejki.
az storage message put \
--content "Hello Queue Reader App" \
--queue-name "myqueue" \
--connection-string $QUEUE_CONNECTION_STRING
Wdrażanie aplikacji w tle
Utwórz plik o nazwie queue.json i wklej następujący kod konfiguracji do pliku.
{
"$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"
}
]
}
}
]
}
}
}
}]
}
Teraz możesz utworzyć i wdrożyć aplikację kontenera.
az deployment group create --resource-group "$RESOURCE_GROUP" \
--template-file ./queue.json \
--parameters \
environment_name="$CONTAINERAPPS_ENVIRONMENT" \
queueconnection="$QUEUE_CONNECTION_STRING" \
location="$LOCATION"
To polecenie umożliwia wdrożenie aplikacji demonstracyjnej z obrazu kontenera publicznego o nazwie mcr.microsoft.com/azuredocs/containerapps-queuereader
i ustawia zmienne wpisów tajnych i środowisk używanych przez aplikację.
Aplikacja skaluje w poziomie do 10 replik na podstawie długości kolejki zgodnie z definicją w scale
sekcji szablonu usługi ARM.
Weryfikowanie wyniku
Aplikacja kontenera jest uruchamiana jako proces w tle. Gdy komunikaty docierają z kolejki usługi Azure Storage, aplikacja tworzy wpisy dziennika w usłudze Log Analytics. Zanim będzie można wykonać zapytanie dotyczące zarejestrowanych danych, musisz poczekać kilka minut na odebranie analizy po raz pierwszy.
Uruchom następujące polecenie, aby wyświetlić zarejestrowane komunikaty. To polecenie wymaga rozszerzenia usługi Log Analytics, dlatego po zażądaniu zaakceptuj monit o zainstalowanie rozszerzenia.
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
Napiwek
Masz problemy? Poinformuj nas o usłudze GitHub, otwierając problem w repozytorium usługi Azure Container Apps.
Czyszczenie zasobów
Po zakończeniu uruchom następujące polecenie, aby usunąć grupę zasobów zawierającą zasoby usługi Container Apps.
Uwaga
Następujące polecenie usuwa określoną grupę zasobów i wszystkie zawarte w niej zasoby. Jeśli zasoby spoza zakresu tego samouczka istnieją w określonej grupie zasobów, zostaną również usunięte.
az group delete \
--resource-group $RESOURCE_GROUP