Zelfstudie: Een toepassing voor achtergrondverwerking implementeren met Azure Container Apps Preview
Met Azure Container Apps kunt u toepassingen implementeren zonder dat openbare eindpunten moeten worden blootgesteld. In deze zelfstudie implementeert u een voorbeeldtoepassing die berichten leest uit een Azure Storage Queue en de berichten registreert in de Azure Log Analytics-werkruimte. Met behulp van schaalregels voor Container Apps kan de toepassing omhoog en omlaag worden geschaald op basis van Azure Storage wachtrijlengte. Wanneer er geen berichten in de wachtrij staan, wordt de container-app omlaag geschaald naar nul.
In deze zelfstudie leert u procedures om het volgende te doen:
- Een Container Apps-omgeving maken om uw container-apps te implementeren
- Een wachtrij Azure Storage maken om berichten naar de container-app te verzenden
- Uw toepassing voor achtergrondverwerking implementeren als een container-app
- Controleer of de wachtrijberichten worden verwerkt door de container-app
Vereisten
De volgende items zijn vereist om deze zelfstudie te voltooien:
- Azure CLI: Azure CLI versie 2.29.0 of hoger moet op uw lokale computer zijn geïnstalleerd.
- Voer
az --versionuit om de versie te bekijken. Als u uw CLI wilt installeren of upgraden, raadpleegt u De Azure CLI installeren.
- Voer
Instellen
In deze zelfstudie wordt gebruik gemaakt van de volgende omgevingsvariabelen:
RESOURCE_GROUP="my-containerapps"
LOCATION="canadacentral"
CONTAINERAPPS_ENVIRONMENT="containerapps-env"
LOG_ANALYTICS_WORKSPACE="containerapps-logs"
Maak een variabele voor de naam van uw opslagaccount.
STORAGE_ACCOUNT="<MY_STORAGE_ACCOUNT_NAME>"
Vervang de <storage account name> tijdelijke aanduiding door uw eigen waarde voordat u dit fragment gaat uitvoeren. Storage-accountnamen moeten uniek zijn binnen Azure, tussen de 3 en 24 tekens lang zijn en mogen alleen cijfers of kleine letters bevatten. Het opslagaccount wordt in een volgende stap gemaakt.
Meld u vervolgens aan bij Azure vanuit de CLI.
Voer de volgende opdracht uit en volg de aanwijzingen om het verificatieproces te voltooien.
az login
Gebruik de opdracht om ervoor te zorgen dat u de nieuwste versie van de CLI upgrade gebruikt.
az upgrade
Installeer vervolgens de Azure Container Apps-extensie naar de CLI.
az extension add \
--source https://workerappscliextension.blob.core.windows.net/azure-cli-extension/containerapp-0.2.0-py2.py3-none-any.whl
Nu de extensie is geïnstalleerd, registreert u Microsoft.Web de naamruimte.
az provider register --namespace Microsoft.Web
U gebruikt een resourcegroep om de services te organiseren die betrekking hebben op uw nieuwe container-app. Maak de groep met de volgende opdracht:
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
Nu de CLI is bijgewerkt en er een nieuwe resourcegroep beschikbaar is, kunt u een Container Apps-omgeving maken en uw container-app implementeren.
Een omgeving maken
Azure Container Apps-omgevingen fungeren als beveiligde grens rond een groep container-apps. Verschillende container-apps in dezelfde omgeving worden geïmplementeerd in hetzelfde virtuele netwerk en schrijven logboeken naar dezelfde Log Analytics-werkruimte.
Azure Log Analytics wordt gebruikt om uw container-app te bewaken die vereist is bij het maken van een Container Apps-omgeving.
Maak een nieuwe Log Analytics-werkruimte met de volgende opdracht:
az monitor log-analytics workspace create \
--resource-group $RESOURCE_GROUP \
--workspace-name $LOG_ANALYTICS_WORKSPACE
Haal vervolgens de Log Analytics-client-id en het clientgeheim op. Zorg ervoor dat u elke query afzonderlijk uitvoert om voldoende tijd te geven om de aanvraag te voltooien.
LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az monitor log-analytics workspace show --query customerId -g $RESOURCE_GROUP -n $LOG_ANALYTICS_WORKSPACE --out json | tr -d '"'`
LOG_ANALYTICS_WORKSPACE_CLIENT_SECRET=`az monitor log-analytics workspace get-shared-keys --query primarySharedKey -g $RESOURCE_GROUP -n $LOG_ANALYTICS_WORKSPACE --out json | tr -d '"'`
Afzonderlijke container-apps worden geïmplementeerd in een Azure Container Apps-omgeving. Voer de volgende opdracht uit om de omgeving te maken:
az containerapp env create \
--name $CONTAINERAPPS_ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--logs-workspace-id $LOG_ANALYTICS_WORKSPACE_CLIENT_ID \
--logs-workspace-key $LOG_ANALYTICS_WORKSPACE_CLIENT_SECRET \
--location "$LOCATION"
Een opslagwachtrij instellen
Een Azure Storage-account maken.
az storage account create \
--name $STORAGE_ACCOUNT \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION" \
--sku Standard_RAGRS \
--kind StorageV2
Haal vervolgens de connection string.
QUEUE_CONNECTION_STRING=`az storage account show-connection-string -g $RESOURCE_GROUP --name $STORAGE_ACCOUNT --query connectionString --out json | tr -d '"'`
U kunt nu de berichtenwachtrij maken.
az storage queue create \
--name "myqueue" \
--account-name $STORAGE_ACCOUNT \
--connection-string $QUEUE_CONNECTION_STRING
Ten slotte kunt u een bericht naar de wachtrij verzenden.
az storage message put \
--content "Hello Queue Reader App" \
--queue-name "myqueue" \
--connection-string $QUEUE_CONNECTION_STRING
De achtergrondtoepassing implementeren
Maak een bestand met de naam queue.json en plak de volgende configuratiecode in het bestand.
{
"$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": {
"defaultValue": "",
"type": "String"
},
"queueconnection": {
"defaultValue": "",
"type": "String"
}
},
"variables": {},
"resources": [
{
"name": "queuereader",
"type": "Microsoft.Web/containerApps",
"apiVersion": "2021-03-01",
"kind": "containerapp",
"location": "[parameters('location')]",
"properties": {
"kubeEnvironmentId": "[resourceId('Microsoft.Web/kubeEnvironments', 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"
}
]
}
}
]
}
}
}
}]
}
U kunt nu uw container-app maken en implementeren.
az deployment group create --resource-group "$RESOURCE_GROUP" \
--template-file ./queue.json \
--parameters \
environment_name="$CONTAINERAPPS_ENVIRONMENT" \
queueconnection="$QUEUE_CONNECTION_STRING" \
location="$LOCATION"
Met deze opdracht wordt de demotoepassing geïmplementeerd vanuit de openbare containerafbeelding met de naam en worden geheimen en mcr.microsoft.com/azuredocs/containerapps-queuereader omgevingsvariabelen die door de toepassing worden gebruikt,sets.
De toepassing schaalt maximaal 10 replica's op basis van de lengte van de wachtrij, zoals gedefinieerd in de scale sectie van de ARM-sjabloon.
Het resultaat controleren
De container-app die als achtergrondproces wordt uitgevoerd, maakt logboeken in Log Analytics wanneer berichten binnenkomen Azure Storage wachtrij. Mogelijk moet u een paar minuten wachten totdat de analyse voor de eerste keer aankomt voordat u een query kunt uitvoeren op de vastgelegde gegevens.
Voer de volgende opdracht uit om vastgelegde berichten weer te geven. Voor deze opdracht is de Log Analytics-extensie vereist. Accepteer daarom de prompt om de extensie te installeren wanneer daarom wordt gevraagd.
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'" \
--out table
Tip
Ondervindt u problemen? Laat het ons weten GitHub door een probleem te openen in de Azure Container Apps-repo.
Resources opschonen
Als u klaar bent, schoont u uw Container Apps-resources op door de volgende opdracht uit te voeren om de resourcegroep te verwijderen.
az group delete \
--resource-group $RESOURCE_GROUP
Met deze opdracht wordt de hele resourcegroep verwijderd, inclusief het Container Apps-exemplaar, het opslagaccount, de Log Analytics-werkruimte en alle andere resources in de resourcegroep.