Déployer une application ASP.NET Core sur App Engine

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

  • Un projet Google Cloud Platform.
  • Un navigateur tel que Chrome ou Firefox

Comment allez-vous utiliser ce tutoriel ?

Je vais le lire uniquement Je vais le lire et effectuer les exercices

Quel est votre niveau d'expérience avec Google Cloud Platform ?

<ph type="x-smartling-placeholder"></ph> Débutant Intermédiaire Expert
.

2. Préparation

Configuration de l'environnement au rythme de chacun

  1. 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.)

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • 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.
  1. 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

  1. Dans Cloud Console, cliquez sur Activer Cloud Shell 4292cbf4971c9786.png.

bce75f34b2c53987.png

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 :

70f315d7b402b476.png

Le provisionnement et la connexion à Cloud Shell ne devraient pas prendre plus de quelques minutes.

fbe3a0674c982259.png

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.

  1. 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`
  1. 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".

Capture.PNG

La page Web ASP.NET Core par défaut s'affiche:

f579a9baedc108a9.png

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.

f579a9baedc108a9.png

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.

de788f4949d0c5a.png

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.

868c4f615e2331fe.png

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.

8cc0cc992b4e07ed.png

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.

5c879431935b080d.png

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:

176a2e22e755b6d3.png

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.

7e9b3b4406e785b9.png

Sélectionnez la version et arrêtez-la.

7f80d9ff2c959e0.png

Une fois la version arrêtée, les instances de sauvegarde sont supprimées et le nombre d'instances doit descendre à zéro.

29f3cb5c71225b2d.png

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

Licence

Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.