Tutoriel : Déployer une application de traitement en arrière-plan avec Azure Container Apps
L’utilisation d’Azure Container Apps vous permet de déployer des applications sans avoir à exposer des points de terminaison publics. En utilisant des règles de mise à l’échelle Container Apps, l’application peut effectuer un scale-out ou un scale-in en fonction de la longueur de la file d’attente de stockage Azure. Lorsqu’il n’y a aucun message dans la file d’attente, l’application conteneur effectue un scale-in à zéro.
Vous allez apprendre à effectuer les actions suivantes :
- Créer un environnement Container Apps pour déployer vos applications de conteneur
- Créer une file d’attente stockage Azure pour envoyer des messages à l’application conteneur
- Déployer votre application de traitement en arrière-plan en tant qu’application conteneur
- Vérifier que les messages de la file d’attente sont traités par l’application conteneur
Programme d’installation
Pour vous connecter à Azure à partir de l’interface CLI, exécutez la commande suivante et suivez les invites pour procéder à l’authentification.
az login
Pour être sûr d’utiliser la dernière version de l’interface CLI, exécutez la commande de mise à niveau.
az upgrade
Ensuite, installez ou mettez à jour l’extension Azure Container Apps pour l’interface CLI.
az extension add --name containerapp --upgrade
Maintenant que la version actuelle de l’extension ou du module est installée, inscrivez les espace de noms Microsoft.App
et Microsoft.OperationalInsights
.
Remarque
Les ressources Azure Container Apps ont migré de l’espace de noms Microsoft.Web
vers l’espace de noms Microsoft.App
. Pour plus d’informations, reportez-vous à Migration de l’espace de noms de Microsoft.Web vers Microsoft.App en mars 2022.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Définir des variables d’environnement
Définissez les variables d’environnement suivantes. Remplacez les <ESPACES RÉSERVÉS> par vos valeurs :
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
Création d’un groupe de ressources Azure
Créez un groupe de ressources pour organiser les services liés au déploiement de votre application de conteneur.
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
Créer un environnement
Un environnement dans Azure Container Apps crée une limite sécurisée autour d’un groupe d’applications de conteneur. Les applications de conteneur déployées dans le même environnement sont déployées dans le même réseau virtuel et écrivent les journaux dans le même espace de travail Log Analytics.
Pour créer l’environnement, exécutez la commande suivante :
az containerapp env create \
--name $CONTAINERAPPS_ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION"
Configurer une file d’attente de stockage
Commencez par définir un nom pour le compte de stockage. Les noms des comptes de stockage doivent être uniques dans Azure et comporter entre 3 et 24 caractères, uniquement des lettres minuscules et des chiffres.
STORAGE_ACCOUNT_NAME="<STORAGE_ACCOUNT_NAME>"
Création d’un compte Azure Storage.
az storage account create \
--name $STORAGE_ACCOUNT_NAME \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION" \
--sku Standard_RAGRS \
--kind StorageV2
Ensuite, obtenez la chaîne de connexion pour la file d’attente.
QUEUE_CONNECTION_STRING=`az storage account show-connection-string -g $RESOURCE_GROUP --name $STORAGE_ACCOUNT_NAME --query connectionString --out json | tr -d '"'`
Vous pouvez maintenant créer la file d’attente de messages.
az storage queue create \
--name "myqueue" \
--account-name $STORAGE_ACCOUNT_NAME \
--connection-string $QUEUE_CONNECTION_STRING
Enfin, vous pouvez envoyer un message à la file d’attente.
az storage message put \
--content "Hello Queue Reader App" \
--queue-name "myqueue" \
--connection-string $QUEUE_CONNECTION_STRING
Déployer l’application en arrière-plan
Créez un fichier nommé queue.json et collez le code de configuration suivant dans le fichier.
{
"$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"
}
]
}
}
]
}
}
}
}]
}
Vous pouvez désormais créer et déployer votre application conteneur.
az deployment group create --resource-group "$RESOURCE_GROUP" \
--template-file ./queue.json \
--parameters \
environment_name="$CONTAINERAPPS_ENVIRONMENT" \
queueconnection="$QUEUE_CONNECTION_STRING" \
location="$LOCATION"
Cette commande déploie l’application de démonstration à partir de l’image de conteneur publique appelée mcr.microsoft.com/azuredocs/containerapps-queuereader
et définit les variables de secrets et d’environnements utilisées par l’application.
L’application effectue un scale-out jusqu’à 10 réplicas en fonction de la longueur de la file d’attente définie dans la section scale
du modèle ARM.
Vérifier le résultat
L’application conteneur s’exécute en tant que processus en arrière-plan. À mesure que les messages arrivent de la file d’attente de stockage Azure, l’application crée des entrées de journal dans Log Analytics. Avant de pouvoir interroger les données journalisées, attendez quelques minutes le temps que l’analytique soit générée pour la première fois.
Exécutez la commande suivante pour afficher les messages journalisés. Cette commande requiert l’extension log Analytics. vous devez donc accepter l’invite d’installation de l’extension lorsque vous y êtes invité.
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
Conseil
Vous rencontrez des problèmes ? Faites-le nous savoir sur GitHub en ouvrant un problème dans le dépôt Azure Container Apps.
Nettoyer les ressources
Une fois que vous avez terminé, exécutez la commande suivante pour supprimer le groupe de ressources qui contient vos ressources Container Apps.
Attention
La commande suivante supprime le groupe de ressources spécifié et toutes les ressources qu’il contient. Si des ressources en dehors du cadre de ce tutoriel existent dans le groupe de ressources spécifié, elles seront également supprimées.
az group delete \
--resource-group $RESOURCE_GROUP