Démarrage rapide : Déployer une application Dapr sur Azure Container Apps à l’aide d’un modèle Azure Resource Manager ou Bicep
Dapr (Distributed Application Runtime) permet aux développeurs de créer des microservices résilients et fiables. Dans ce guide de démarrage rapide, vous autorisez les sidecars Dapr à s’exécuter en même temps que deux applications conteneur qui produisent et consomment des messages, stockés dans un magasin d’états Stockage Blob Azure. À l’aide de modèles Azure Resource Manager ou Bicep, vous allez :
- Passer les commandes Azure CLI pour déployer un modèle qui lance tout ce dont vous avez besoin pour exécuter des microservices.
- Vérifier l’interaction entre les deux microservices dans le portail Azure.
Ce guide de démarrage rapide reflète les applications que vous déployez dans le guide de démarrage rapide Hello World Dapr open source.
Prérequis
- Installer l’interface de ligne de commande Azure
- Installer Git
- Un compte Azure avec un abonnement actif est requis. Si vous n’en avez pas déjà un, vous pouvez créer un compte gratuit.
- Un compte GitHub. Si vous n’en avez pas, inscrivez-vous gratuitement.
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.
Si vous recevez des erreurs concernant des paramètres manquants lorsque vous exécutez des commandes az containerapp
dans Azure CLI ou les cmdlets du module Az.App
dans Azure PowerShell, assurez-vous que la dernière version de l’extension Azure Container Apps est installée.
az extension add --name containerapp --upgrade
Remarque
À compter de mai 2024, les extensions Azure CLI n’activent plus les fonctionnalités en préversion par défaut. Pour accéder aux fonctionnalités en préversion de Container Apps, installez l’extension Container Apps avec --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Maintenant que la version actuelle de l’extension ou du module est installée, inscrivez les espaces de noms Microsoft.App
et Microsoft.OperationalInsights
.
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 <PLACEHOLDERS>
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"
Préparer le référentiel GitHub
Accédez au référentiel contenant les modèles ARM et Bicep utilisés pour déployer la solution.
Sélectionnez le bouton Dupliquer (fork) en haut du référentiel pour dupliquer le référentiel dans votre compte.
Vous pouvez maintenant cloner votre duplication (fork) pour l’utiliser localement.
Utilisez la commande git suivante pour cloner votre référentiel dupliqué dans le répertoire acadapr-templates.
git clone https://github.com/$GITHUB_USERNAME/Tutorial-Deploy-Dapr-Microservices-ACA.git acadapr-templates
Déployer
Accédez au répertoire acadapr-templates et exécutez la commande suivante :
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.json \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
Un avertissement (BCP081) peut s’afficher. Cet avertissement n’a aucun effet sur le déploiement réussi de l’application.
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.bicep \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
Cette commande déploie :
- L’environnement Container Apps et l’espace de travail Log Analytics associé pour l’hébergement de la solution Dapr « Hello World ».
- Une instance Application Insights pour le suivi distribué Dapr.
- Le serveur d’applications
nodeapp
exécuté surtargetPort: 3000
avec Dapr activé et configuré en utilisant :"appId": "nodeapp"
"appPort": 3000
- Une identité affectée par l’utilisateur avec accès au stockage Blob Azure via une attribution de rôle Contributeur aux données de stockage
- Un composant Dapr
"type": "state.azure.blobstorage"
configuré spécialement pour être utilisé parnodeapp
afin de stocker l’état. - L’application
pythonapp
activée par Dapr et sans interface qui appelle le servicenodeapp
à l’aide d’un appel de service Dapr. - Une attribution de rôle Microsoft Entra ID pour l’application Node.js utilisée par le composant Dapr pour établir une connexion au stockage Blob.
Vérifier le résultat
Confirmer la réussite de la persistance de l’état
Vous pouvez vérifier que les services fonctionnent correctement en affichant les données de votre compte de stockage Azure.
Dans votre navigateur, ouvrez le portail Azure.
Accédez au compte de stockage nouvellement créé dans votre groupe de ressources.
Sélectionnez Stockage de données>Conteneurs dans le menu situé à gauche.
Sélectionnez le conteneur créé.
Vérifiez que vous pouvez voir le fichier nommé
order
dans le conteneur.Sélectionnez le fichier .
Sélectionnez l’onglet Modifier.
Sélectionnez le bouton Actualiser pour observer les mises à jour.
Afficher les journaux
Les journaux d’une application conteneur sont stockés dans la table personnalisée ContainerAppConsoleLogs_CL
de l’espace de travail Log Analytics. Vous pouvez voir les journaux dans le portail Azure ou via l’interface CLI. Il peut y avoir un petit délai initialement pour que la table apparaisse dans l’espace de travail.
Utilisez la commande suivante pour afficher les journaux dans Bash ou PowerShell.
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 == 'nodeapp' and (Log_s contains 'persisted' or Log_s contains 'order') | project ContainerAppName_s, Log_s, TimeGenerated | take 5" \
--out table
La sortie suivante montre le type de réponse de la commande.
ContainerAppName_s Log_s TableName TimeGenerated
-------------------- ------------------------------- ------------- ------------------------
nodeapp Got a new order! Order ID: 61 PrimaryResult 2021-10-22T21:31:46.184Z
nodeapp Successfully persisted state. PrimaryResult 2021-10-22T21:31:46.184Z
nodeapp Got a new order! Order ID: 62 PrimaryResult 2021-10-22T22:01:57.174Z
nodeapp Successfully persisted state. PrimaryResult 2021-10-22T22:01:57.174Z
nodeapp Got a new order! Order ID: 63 PrimaryResult 2021-10-22T22:45:44.618Z
Nettoyer les ressources
Étant donné que pythonapp
passe des appels sans discontinuer à nodeapp
avec des messages qui sont conservés dans votre magasin d’états configuré, il est important d’effectuer ces étapes de nettoyage pour éviter que des opérations ne vous soient facturées.
Si vous souhaitez supprimer les ressources créées dans le cadre de cette procédure pas à pas, exécutez la commande suivante.
az group delete \
--resource-group $RESOURCE_GROUP
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.