Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez déployer une application multiconteneur sur Azure Container Apps à l’aide de Visual Studio. En règle générale, vous déployez chaque conteneur sur une instance d’application conteneur distincte, mais vous incluez tous les conteneurs de votre application dans le même environnement d’application conteneur pour leur permettre de communiquer facilement et en toute sécurité entre eux. Vous pouvez configurer chaque application conteneur pour accepter des demandes à partir de l’environnement de conteneur ou pour autoriser le trafic extérieur. Azure Container Apps est hautement flexible et configurable, ce qui permet de nombreux scénarios de microservices possibles et un ensemble complet d’outils de supervision avancés. Si vous utilisez Docker Compose pour gérer des applications conteneur locales, vous pouvez envisager de le porter vers un environnement d’application conteneur dans Azure.
Le processus implique quelques étapes à l’aide de Visual Studio et du portail Azure. Vous pouvez également utiliser Azure CLI pour effectuer ces actions, mais cela dépasse le cadre de ce didacticiel. Tout d’abord, nous utilisons l’application que vous avez créée à l’aide de la création d’une application multiconteneur et la déployons à l’aide du processus de publication . Visual Studio vous guide tout au long des étapes de création de la première application conteneur, d’un environnement d’application conteneur, ainsi que de la création d’un registre de conteneurs pour stocker les images conteneur. Vous réexécutez ensuite le processus de publication avec l’autre application conteneur. Vous devez spécifiquement choisir le même environnement d’application conteneur dans le processus de publication. Enfin, vous devez configurer le cache Redis pour qu’il fonctionne avec le service de cache Redis Azure. Vous modifiez le code de configuration du cache et republiez l’API web. Ensuite, vous configurez les autorisations pour accorder l’accès d’identité managée affectée par le système à l’application au cache.
Conditions préalables
- Un abonnement Azure. Inscrivez-vous à un essai gratuit.
- Visual Studio 2022 ou version ultérieure avec les charges de travail de développement et de développement web Azure installées.
- Projet MulticontainerSample dans
https://github.com/MicrosoftDocs/vs-tutorial-samples
le dossier Docker . L’exemple de solution contient deux projets, le back-end de l’API web et le serveur frontal ASP.NET Razor, comme vous l’avez créé dans un autre didacticiel. Vous pouvez également créer les deux projets à partir de zéro, car ils sont des modifications très simples des modèles par défaut, en suivant ce tutoriel. Vous pouvez ignorer les étapes Docker Compose.
Déployer le serveur principal de l’API web
Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet API web, puis sélectionnez Publier.
Choisissez Azure cible, puis sélectionnez Azure Container Apps.
Si vous n’êtes pas déjà connecté avec un compte associé à un abonnement Azure, vous pouvez vous connecter maintenant ou modifier le locataire si nécessaire.
Dans l’écran où vous spécifiez une application conteneur, sélectionnez Créer pour créer une application conteneur.
Dans la page Créer une application conteneur Azure , entrez des détails tels que le groupe de ressources. Pour cette étape, vous créez un groupe de ressources, un nouvel environnement de conteneur et un nouveau registre de conteneurs.
La création des ressources peut prendre un peu de temps. Une fois l’opération terminée, cliquez sur Suivant pour passer à l’étape suivante.
À l’étape suivante, vous créez un registre de conteneurs. Si vous créez un registre de conteneurs, vous êtes invité à obtenir quelques détails. Vous pouvez choisir la même région et le même groupe de ressources que l’application conteneur.
L’étape suivante vous demande de choisir le type de construction du conteneur. Choisissez le Kit de développement logiciel (SDK) .NET si vous n’avez pas de fichier Dockerfile ou Docker Desktop si vous le faites.
Pour le type de déploiement, choisissez Publier (générer un fichier pubxml) pour créer un profil de publication.
Sélectionnez Terminer pour terminer le processus de publication et créer un profil de publication. Si vous voyez une invite sur la configuration supplémentaire permettant d’accéder au conteneur publié, choisissez Oui.
Vous voyez une page qui affiche l’activité dans Azure et lorsque vous la fermez, l’écran Publier contient désormais les informations de votre application conteneur, telles que l’URL d’entrée de l’API web.
Cliquez sur le bouton Publier pour publier sur l’application conteneur Azure. Visual Studio demande que les ressources Azure soient créées et démarre le processus de publication pour l’application conteneur WebAPI.
Visual Studio peut essayer de charger la page de la nouvelle application conteneur, mais cela ne devrait pas fonctionner à ce stade.
Maintenant que vous avez publié une fois, vous avez créé un profil de publication (.pubxml
fichier), de sorte que vous n’avez pas à répéter ces étapes la prochaine fois que vous publiez. Cliquez simplement sur le bouton Publier sur cet écran, sauf si vous souhaitez recommencer ou modifier l’une des ressources Azure que vous avez spécifiées.
Plus tard, vous utiliserez le portail Azure pour effectuer d'autres modifications de configuration pour le composant Ingress et pour prendre en charge le Cache Redis Azure ; mais d'abord, dans la section suivante, vous allez publier l'interface web frontend.
Déployer le serveur frontal
Modifiez le fichier de code frontal dans Index.cshtml.cs pour référencer la nouvelle URL de l’application conteneur d’API web. Il s’agit du nom affiché sous Nom de ressource dans l’écran Publication de l’API web. Pour la communication conteneur à conteneur, vous pouvez utiliser directement HTTP avec le nom de l’application conteneur, sans spécifier de nom de domaine complet (FQDN) et un numéro de port. Dans la méthode
OnGet
, remplacez la ligne existante qui définit laRequestUri
pour référencer le nom de l’application conteneur d’API web, comme dans le code suivant.request.RequestUri = new Uri("http://<mywebapi-container-app-name>/Counter");
Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet Webfrontend, puis sélectionnez Publier. Dans l’écran suivant, sélectionnez Créer nouveau pour créer une application conteneur.
Dans l’écran Créer une application conteneur Azure , choisissez le même groupe de ressources et le même environnement de conteneur que celui que vous avez créé lors de la publication du projet d’API web.
Important ! Sélectionnez le registre de conteneurs que vous avez créé précédemment.
Choisissez les mêmes options que vous l’avez fait pour l’API web pour les autres étapes. Le type de build de conteneur est Docker Desktop et le type de déploiement est Publish (génère le fichier pubxml).
Sélectionnez Terminer pour terminer le processus de publication et créer un profil de publication. Vous voyez une page qui affiche l’activité dans Azure et lorsque vous la fermez, l’écran Publier contient désormais les informations de votre application conteneur, telles que l’URL de l’entrée de l’application Webfrontend.
Afficher et configurer les applications conteneur dans le portail Azure
- Connectez-vous au portail Azure.
- Recherchez des applications conteneur et recherchez celles que vous venez de créer.
- Choisissez Entrée et configurez les options suivantes :
Dans l’écran Entrée , définissez le trafic d’entrée sur Limité à l’environnement Container Apps. Cela signifie que seul le webfrontend peut envoyer des demandes. Même Visual Studio ne pourra pas accéder à ce service, par exemple lorsque vous terminez le processus de publication et que Visual Studio tente de charger la page, vous obtenez une erreur dans le navigateur au lieu d’accéder au service. Ceci est attendu.
Vérifiez le port d’entrée (il doit s’agir de 8080). Vous utilisez HTTP pour l’appel d’API web et vous pouvez référencer directement l’application conteneur par nom dans l’URI de requête. Le nom de domaine complet (FQDN) généré par Azure Container Apps utilise une URL HTTPS (comme affiché dans Visual Studio sur l’écran Publier ), mais le trafic interne peut contourner ce problème.
Pour l'interface web Ingress, vous pouvez accepter les valeurs par défaut. Le port cible est 8080, car Ingress traite toutes les requêtes de manière sécurisée à l’aide du nom de domaine complet et du protocole HTTPS (ou via la redirection de HTTP vers HTTPS) et les transfère au web-frontend via HTTP sur le port de conteneur 8080.
Créer le cache Redis Azure
Suivez ces étapes pour créer un cache Redis Azure dans le même groupe de ressources que les applications conteneur.
Dans le portail Azure, ouvrez l’application conteneur d’API web que vous avez créée précédemment. Ouvrez l’écran Connecteur de service , puis sélectionnez Créer. La section Créer une connexion s’affiche .
Dans l’écran Créer une connexion , entrez le type de service en tant que Cache pour Redis, puis choisissez Créer pour créer un cache Redis.
Choisissez un cache ou suivez le lien Créer un nouveau lien pour créer un cache. Si vous créez un nouveau cache, vous devrez peut-être revenir à l’application conteneur et à Service Connector et répéter les étapes précédentes pour créer la connexion.
Pour la base de données, choisissez « 0 » pour créer la première base de données numérotée pour ce cache.
Accédez à l’onglet Authentification . Choisissez l’identité managée affectée par le système. Acceptez toutes les autres valeurs par défaut, puis sélectionnez Créer. Cela crée la connexion au cache.
De retour dans la section Service Connector de l’application conteneur d’API web, actualisez pour afficher le cache nouvellement connecté (si vous ne le voyez pas déjà), puis cochez la case en regard du cache. Sélectionnez Valider pour vérifier l’état de la connexion. Vous pouvez développer le nœud de cache pour afficher les valeurs des variables d’environnement pour ce cache Azure. Pour les besoins de ce didacticiel, vous n’avez besoin que de AZURE_REDIS_HOST, mais vous pouvez utiliser les autres dans du code réel ou pour une configuration plus complète. Utilisez les valeurs ici pour définir les variables d’environnement dans le fichier Dockerfile, comme décrit dans la section suivante, afin que l’API web puisse se connecter au cache.
Pour plus d’informations, consultez Démarrage rapide : Créer une connexion de service pour Azure Container Apps à partir du portail Azure.
Configurer des rôles pour l’identité managée
Dans le portail Azure, vous utilisez Access Control (IAM) sur le Cache Redis Azure pour accorder l’accès Contributeur à l’identité managée affectée par le système de l’application conteneur.
- Dans le portail Azure, ouvrez la page du Cache Redis Azure, puis sélectionnez Contrôle d’accès (IAM).
- Sélectionnez Ajouter>Ajouter une attribution de rôle. La page Ajouter une attribution de rôle s’ouvre.
- Sélectionnez l’onglet Membres , puis choisissez identité managée.
- Sélectionnez Sélectionner des membres. La page Sélectionner des membres s’ouvre et sélectionne l’identité managée affectée par le système.
- Sélectionnez Application conteneur, puis choisissez l’application conteneur d’API web.
- Sous l’onglet Rôle , choisissez Contributeur du cache Redis.
- Sélectionnez Vérifier et attribuer. Le système traite la requête.
- Ouvrez les attributions de rôles pour voir l’identité managée affectée par le système sous le rôle Contributeur du cache Redis .
L’étape suivante consiste à modifier la configuration du cache dans le client d’API web pour utiliser le DefaultAzureCredential
, qui est la méthode recommandée pour s’authentifier lorsque vous utilisez l’identité managée affectée par le système. Toute personne accédant à l’application en externe n’est pas tenue d’avoir des attributions de rôles au niveau de l’utilisateur spécifiques pour accéder aux ressources via cette forme de gestion des identités. Pour plus d’informations, consultez Intégrer le cache Redis Azure - Identité managée affectée par le système.
Modifier le projet d’API web pour référencer le service cache Redis Azure
Avant de publier le projet d’API web à exécuter dans Azure, mettez-le à jour pour référencer le cache Redis Azure et utiliser une identité managée pour y accéder en toute sécurité. Pour ce faire, vous pouvez modifier le code de configuration du cache dans Program.cs.
Pour le cache Redis Azure, vous définissez une variable AZURE_REDIS_HOST
d’environnement avec les informations de connexion, puis lisez-la dans le code de démarrage pour vous connecter au cache Redis Azure et configurez le cache.
Vous utilisez Azure.Identity
pour obtenir le DefaultAzureCredential
qui gère l'authentification sécurisée avec votre identité gérée.
Dans Visual Studio, dans le projet d’API web, ajoutez une référence aux packages
Azure Identity
NuGet etMicrosoft.Azure.StackExchange.Redis
.Ajoutez des directives using pour les packages que vous venez d’ajouter.
using Azure.Identity; using Microsoft.Azure.StackExchange.Redis;
Mettez à jour le code de configuration du Cache Redis. Supprimez l’ancien code et remplacez-le par le code suivant. Vous pouvez passer en revue les commentaires plus tard et supprimer le commentaire de tout code facultatif pour répondre à vos propres scénarios plus avancés.
// Check the environment variable for the Redis cache host name var cacheHostName = Environment.GetEnvironmentVariable("AZURE_REDIS_HOST"); if (string.IsNullOrEmpty(cacheHostName)) { throw new InvalidOperationException("The environment variable 'AZURE_REDIS_HOST' is not set."); } var configurationOptions = ConfigurationOptions.Parse($"{cacheHostName}:6380"); // For system-assigned identity. // In the Azure portal, we need to set up Redis service to grant Contributor access to the system-assigned identity // for the container app that hosts this Web API service. await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential()); var connectionMultiplexer = await ConnectionMultiplexer.ConnectAsync(configurationOptions); builder.Services.AddStackExchangeRedisCache(options => { options.ConfigurationOptions = configurationOptions; options.InstanceName = "SampleInstance"; }); // Uncomment the following line if you need to use the ConnectionMultiplexer directly // (for example, for advanced Redis operations like Pub/Sub or working with Redis data structures). // builder.Services.AddSingleton<IConnectionMultiplexer>(sp => // ConnectionMultiplexer.Connect(configurationOptions));
La méthode d’authentification que vous avez définie précédemment lorsque vous avez créé la connexion de cache est l’identité managée affectée par le système. Par conséquent, le code ici est cohérent avec ce choix. Si vous souhaitez également utiliser une autre méthode d’authentification, vous devez apporter des modifications au code ici. Consultez Intégrer le cache Redis Azure - Identité gérée par le système.
Générez le projet d’API web pour vérifier qu’il n’y a aucune erreur.
Si vous disposez d’un fichier Dockerfile, mettez à jour l’étape de base du fichier Dockerfile pour définir la variable
AZURE_REDIS_HOST
d’environnement. Vous obtenez l’hôte à partir du portail Azure, lorsque vous créez le cache Redis Azure ou à partir de la section Connecteur de service de la page d’application conteneur d’API web dans le portail (voir la section précédente).ENV AZURE_REDIS_HOST mycache.redis.cache.windows.net
(Facultatif) Vous pouvez définir d’autres options de configuration dans les variables d’environnement, par exemple,
AZURE_REDIS_PORT
qui est généralement 6380. Par souci de simplicité, cette valeur est codée en dur au lieu d’utiliser une variable d’environnement. Vous pourriez également souhaiter définirASPNETCORE_ENVIRONMENT
sur Développement.Si vous utilisez le type de build du conteneur du Kit de développement logiciel (SDK) .NET (sans dockerfile), vous pouvez définir la variable d’environnement dans launchSettings.json sous
profiles > http
."http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "http://localhost:5107", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "AZURE_REDIS_HOST": "cache11.redis.cache.windows.net" } }
Vous êtes prêt à publier et à vérifier ces modifications. Sélectionnez le bouton Publier dans l’écran Publier . Visual Studio tente de charger la page, mais cela échoue, car l’application conteneur d’API web n’est pas accessible aux requêtes en dehors de l’environnement d’application conteneur.
Avant de pouvoir exécuter l’application avec le Cache Redis Azure, vous devez configurer l’identité managée avec les autorisations appropriées pour accéder au cache.
Tester l’application
Revenez à l'écran Publier dans le projet Webfrontend, puis cliquez sur le lien de l'URL Webfrontend. L’application Webfrontend doit apparaître avec le compteur qui est mis à jour lorsque vous actualisez la page.
Conseil / Astuce
Azure Container Apps cherche à optimiser le temps de fonctionnement de vos services. Si un problème survient avec l’un des services, de sorte qu’il échoue à une sonde d’intégrité, Azure Container Apps ne le définira pas comme révision active et ne l’utilisera pas pour traiter les demandes. Par conséquent, pendant le processus de développement et de test, vous pouvez parfois constater que les dernières modifications que vous avez apportées ne sont pas reflétées dans le site en direct. Dans le portail Azure, sélectionnez Révisions et réplicas pour afficher l’état de votre dernière révision publiée. À partir de là, vous pouvez ouvrir des logs pour faciliter le dépannage du problème.
Félicitations! Vous avez publié une application multicontainer dans Azure Container Apps et vérifié la communication entre les conteneurs et l’utilisation du cache Redis Azure au sein de l’application.
Nettoyer les ressources
Pour nettoyer les ressources que vous avez créées pendant ce didacticiel, accédez au portail Azure et supprimez le groupe de ressources qui contient les applications conteneur, le cache et le registre de conteneurs.
Étapes suivantes
- En savoir plus sur Azure Container Apps.
- Découvrez .NET Aspire, une technologie qui vous aide à développer plus facilement des applications et des services conteneurisés complexes qui s’intègrent à diverses ressources dans Azure. .NET Aspire prend en charge l’orchestration du temps de développement, l’intégration standardisée à un tableau de services, ainsi que la prise en charge des outils avec les modèles de projet Visual Studio.
- Vous pouvez également utiliser l’interface de ligne de commande (CLI) Azure pour utiliser vos applications conteneur. Installez Azure CLI et commencez à utiliser Azure Container Apps à l’aide des commandes Azure CLI en suivant Déployer Azure Container Apps avec la commande az containerapp up.