1. Présentation
ASP.NET Core est un nouveau framework Open Source et multiplate-forme, qui permet de développer en C# des applications modernes basées sur le cloud et connectées à Internet.
Dans cet atelier, vous allez déployer une application ASP.NET Core simple dans l'environnement flexible App Engine. Cet atelier de programmation s'appuie sur l'atelier de programmation Créer et lancer une application ASP.NET Core depuis Google Cloud Shell. Nous vous conseillons de suivre cet atelier avant de vous lancer.
Faciles à créer et à gérer, les applications Google App Engine, grâce à leur caractère évolutif, s'adaptent au gré de vos besoins en termes de trafic et de stockage des données. Avec App Engine, vous n'avez aucun serveur à gérer. Il vous suffit d'importer votre application, et vous êtes prêt à démarrer.
Les applications App Engine s'adaptent automatiquement au trafic entrant. App Engine offre une compatibilité native avec l'équilibrage de charge, les microservices, les autorisations, les bases de données SQL et NoSQL, Memcache, la répartition du trafic, la journalisation, la recherche, la gestion des versions, l'exécution de déploiements et de rollbacks, et les analyses de sécurité. Sans compter que toutes ces fonctionnalités sont hautement personnalisables.
Les environnements d'App Engine, l'environnement standard et l'environnement flexible, sont compatibles avec une multitude de langages de programmation, tels que C#, Java, Python, PHP, Node.js ou encore Go pour n'en citer que quelques-uns. Ces deux environnements ont chacun leurs points forts et offrent ainsi une flexibilité maximale aux utilisateurs en termes de comportement de l'application. Pour en savoir plus, consultez la page Choisir un environnement App Engine.
Points abordés
- Empaqueter une application simple ASP.NET Core en tant que conteneur Docker
- déployer une application ASP.NET Core simple sur App Engine.
Prérequis
Comment allez-vous utiliser ce tutoriel ?
Quel est votre niveau d'expérience avec Google Cloud Platform ?
<ph type="x-smartling-placeholder">2. Préparation
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)
- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères qui n'est pas utilisée par les API Google, et que vous pouvez modifier à tout moment.
- L'ID du projet doit être unique sur l'ensemble des projets Google Cloud et doit être immuable (vous ne pouvez pas le modifier une fois que vous l'avez défini). Cloud Console génère automatiquement une chaîne unique dont la composition importe peu, en général. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (généralement identifié comme
PROJECT_ID
), donc s'il ne vous convient pas, générez-en un autre au hasard ou définissez le vôtre, puis vérifiez s'il est disponible. Il est ensuite "gelé" une fois le projet créé. - La troisième valeur est le numéro de projet, utilisé par certaines API. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans Cloud Console afin d'utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour arrêter les ressources afin d'éviter qu'elles ne vous soient facturées après ce tutoriel, suivez les instructions de nettoyage indiquées à la fin de l'atelier. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai gratuit pour bénéficier d'un crédit de 300 $.
Démarrer Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.
Activer Cloud Shell
- Dans Cloud Console, cliquez sur Activer Cloud Shell .
Si vous n'avez jamais démarré Cloud Shell auparavant, un écran intermédiaire (en dessous de la ligne de flottaison) vous explique de quoi il s'agit. Dans ce cas, cliquez sur Continuer (elle ne s'affichera plus). Voici à quoi il ressemble :
Le provisionnement et la connexion à Cloud Shell ne devraient pas prendre plus de quelques minutes.
Cette machine virtuelle contient tous les outils de développement dont vous avez besoin. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser une grande partie, voire la totalité, des activités de cet atelier dans un simple navigateur ou sur votre Chromebook.
Une fois connecté à Cloud Shell, vous êtes en principe authentifié et le projet est défini avec votre ID de projet.
- Exécutez la commande suivante dans Cloud Shell pour vérifier que vous êtes authentifié :
gcloud auth list
Résultat de la commande
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet:
gcloud config list project
Résultat de la commande
[core] project = <PROJECT_ID>
Si vous obtenez un résultat différent, exécutez cette commande :
gcloud config set project <PROJECT_ID>
Résultat de la commande
Updated property [core/project].
3. Créer une application ASP.NET Core dans Cloud Shell
Dans l'invite Cloud Shell, vous pouvez vérifier que l'outil de ligne de commande dotnet
est déjà installé en répertoriant les SDK .NET installés:
dotnet --list-sdks
Ensuite, créez une application Web squelette ASP.NET Core avec un framework cible de netcoreapp3.1
:
dotnet new mvc -o HelloWorldAspNetCore -f netcoreapp3.1
Cette action créera un projet et restaurera ses dépendances. Un message de ce type doit s'afficher :
Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.
Restore succeeded.
4. Exécuter l'application ASP.NET Core
Nous sommes presque prêts à exécuter notre application. Accédez au dossier de l'application.
cd HelloWorldAspNetCore
Enfin, exécutez l'application.
dotnet run --urls=http://localhost:8080
L'application commence à écouter sur le port 8080.
Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.
Pour vérifier que l'application est bien en cours d'exécution, cliquez sur le bouton "Aperçu sur le Web" en haut à droite, puis sélectionnez "Prévisualiser sur le port 8080".
La page Web ASP.NET Core par défaut s'affiche:
Après avoir vérifié que l'application est en cours d'exécution, appuyez sur Ctrl+C pour la fermer.
5. Publier l'application ASP.NET Core
Maintenant, publiez l'application pour obtenir une DLL autonome à l'aide de la commande dotnet publish
.
dotnet publish -c Release
L'exécution de publish
affiche des messages indiquant qu'une DLL a bien été publiée à la fin du processus.
...
HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.dll
HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.Views.dll
HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/publish/
6. Créer un fichier app.yaml pour l'environnement flexible App Engine
Le fichier app.yaml
explique comment déployer l'application sur App Engine, dans ce cas, l'environnement flexible App Engine.
Tout d'abord, accédez au dossier publish
. Il doit se trouver dans le dossier bin/Release
, mais le chemin d'accès exact dépend de la version de .NET:
cd bin/Release/netcoreapp3.1/publish/
Créez un fichier app.yaml
dans le dossier publish
:
cat <<EOT >> app.yaml
env: flex
runtime: aspnetcore
EOT
Notez que le fichier app.yaml
spécifie l'environnement en tant que flex
et l'environnement d'exécution en tant que aspnetcore
.
7. Déployer l'application dans l'environnement flexible App Engine
Vous êtes prêt à déployer votre application dans l'environnement flexible App Engine à l'aide de gcloud
. Dans le répertoire publish
, exécutez la commande suivante:
gcloud app deploy --version v0
Lors du déploiement, vous pouvez être invité à choisir une région pour votre application. Choisissez la région dans laquelle vous souhaitez exécuter votre application.
Please choose a region for your application. After choosing a region,
you cannot change it. Which region would you like to choose?
[1] europe-west (supports standard and flexible)
[2] us-central (supports standard and flexible)
[3] us-east1 (supports standard and flexible)
[4] asia-northeast1 (supports standard and flexible)
[5] cancel
Cette opération entraîne la création d'une image pour votre application dans le cloud, l'enregistrement de cette image dans Google Container Registry et le déploiement sur App Engine. Pendant le déploiement, vous pouvez voir l'image de conteneur en cours de création:
Operation completed over 1 objects/571.8 KiB.
BUILD
Step #0: Pulling image: gcr.io/gcp-runtimes/aspnetcorebuild@sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb
Step #0: sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb: Pulling from gcp-runtimes/aspnetcorebuild
Au final, vous devriez constater que l'application est déployée.
...
Deployed service [default] to [https://<project-id>.appspot.com]
Une fois l'application déployée,accédez-y en ouvrant l'URL http://<project-id>.appspot.com
dans votre navigateur Web.
La page Web ASP.NET Core par défaut s'affiche dans un nouvel onglet.
Vous pouvez également regarder l'image de conteneur créée pour vous dans le cloud. Dans la console Cloud, accédez à Container Registry > Images, puis dans le dossier appengine, vous devriez voir l'image de votre application.
8. Déployer une nouvelle version de votre service
À un moment donné, l'application que vous avez déployée en production nécessitera des corrections de bugs ou l'ajout de nouvelles fonctionnalités. App Engine est conçu pour vous faciliter le déploiement d'une nouvelle version en production sans affecter les utilisateurs.
Commençons par modifier l'application. Ouvrez l'éditeur de code à partir de Cloud Shell.
Accédez à Index.cshtml
sous le dossier Views/Home
de HelloWorldAspNetCore
et modifiez le message par défaut comme suit:
Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core on Google Cloud Platform!
Enregistrez les modifications, puis revenez à Cloud Shell. Dans HelloWorldAspNetCore,
, publiez l'application pour obtenir une DLL autonome.
dotnet publish -c Release
Accédez au répertoire "publish".
cd bin/Release/netcoreapp3.1/publish/
Vous pouvez maintenant déployer une nouvelle version de votre application (v1
dans ce cas).
gcloud app deploy --version v1
Une fois celle-ci déployée, vous pouvez accéder à la section "Versions App Engine" de la console Google Cloud pour voir la nouvelle version de votre application diffusant tout le trafic avec le nouveau message.
9. Tableaux de bord et répartition du trafic
Dans la section "Tableau de bord" d'App Engine, vous pouvez voir un certain nombre de tableaux de bord pour votre application concernant la latence, le processeur, etc. Explorez-les par vous-même.
Sous la section "Versions", vous pouvez voir les versions déployées de votre application. Vous pouvez répartir le trafic entre différentes versions dans la section "Répartition du trafic". Répartissons le trafic entre deux versions:
10. Félicitations !
Slisseur
Il est temps d'arrêter l'application pour faire des économies et adopter un cloud de qualité.
Accédez à la section des versions d'App Engine.
Sélectionnez la version et arrêtez-la.
Une fois la version arrêtée, les instances de sauvegarde sont supprimées et le nombre d'instances doit descendre à zéro.
Points abordés
Voilà ! Vous avez créé une application ASP.NET Core, vous l'avez empaquetée dans un conteneur Docker et déployée dans l'environnement flexible Google App Engine.
- Empaqueter une application simple ASP.NET Core en tant que conteneur Docker
- déployer une application ASP.NET Core simple sur App Engine.
Étapes suivantes
- Obtenez plus d'informations sur Windows sur Google Cloud Platform.
- Obtenez plus d'informations sur .NET sur Google Cloud Platform.
- Obtenez plus d'informations sur SQL Server sur Google Cloud Platform.
- Obtenez plus d'informations sur Cloud Tools pour Visual Studio.
- Obtenez plus d'informations sur Cloud Tools pour PowerShell.
Licence
Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.