Premiers pas avec .NET

Ce tutoriel s'adresse à ceux qui débutent dans la création d'applications sur le cloud tels que les ingénieurs et les développeurs Web, et qui souhaitent connaître les concepts clés du développement d'applications tels qu' ils s'appliquent à Google Cloud.

Objectifs

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud:

Les instructions de ce document vous permettront d'utiliser les ressources dans les limites du Google Cloud's niveau toujours sans frais de. Obtenez une estimation des coûts en fonction de votre utilisation prévue, utilisez le simulateur de coût.

Les nouveaux utilisateurs de peuvent bénéficier d'un essai sans frais. Google Cloud

Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Avant de commencer

  1. Connectez-vous à votre Google Cloud compte. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Pour créer une base de données Firestore en mode natif, procédez comme suit :
    1. Dans la Google Cloud console, accédez à la page Firestore create database (Créer une base de données Firestore).

      Accéder à la page "Créer une base de données Firestore"

    2. Sur l'écran Sélectionner un mode Cloud Firestore, cliquez sur Sélectionner le mode natif.
    3. Sélectionnez un emplacement pour votre base de données Firestore. Ce paramètre d'emplacement correspond à l' emplacement par défaut Google Cloud des ressources de votre Google Cloud projet . Cet emplacement est utilisé pour Google Cloud les services de votre Google Cloud projet qui requièrent un paramètre d'emplacement, plus précisément le bucket Cloud Storage par défaut et l'application Cloud Run.
    4. Cliquez sur Créer une base de données.
  7. Activez les API Cloud Run, Cloud Storage JSON, Cloud Logging et Error Reporting.

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez l'obtenir grâce au rôle Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

    Activer les API

  8. Clonez l'exemple de dépôt et ouvrez l'exemple d'application dans Cloud Shell:
    Accéder à Cloud Shell

    Cloud Shell vous permet d'accéder en ligne de commande à vos Google Cloud ressources, directement depuis votre navigateur.

  9. Lorsque vous êtes invité à cloner le dépôt, cliquez sur Confirmer.
  10. Dans Cloud Shell, configurez l'outil gcloud pour qu'il utilise votre nouveau Google Cloud projet :

    # Configure gcloud for your project
    gcloud config set project PROJECT_ID

    Remplacez PROJECT_ID par l'ID du Google Cloud projet que vous avez créé à l'aide de la Google Cloud console.

    L'interface de ligne de commande Google Cloud est votre principal moyen d'interaction avec vos Google Cloud ressources à partir de la ligne de commande. Dans ce tutoriel, l'outil gcloud vous permet de déployer et de surveiller votre application.

Exécuter votre application

  1. Exécutez l'application :
    GOOGLE_CLOUD_PROJECT=PROJECT_ID dotnet run
    
    Remplacez PROJECT_ID par l' Google Cloud ID du projet que vous avez créé.
  2. Dans Cloud Shell, cliquez sur Aperçu sur le Web , puis sélectionnez Prévisualiser sur le port 8080. Une nouvelle fenêtre s'affiche avec votre application en cours d'exécution.

Déployer votre application dans Cloud Run

Google Cloud permet d'exécuter du code de plusieurs façons. Dans cet exemple, vous utilisez Cloud Run pour déployer une application évolutive dans Google Cloud. Comme aucune gestion de serveur n'est nécessaire, Cloud Run vous permet de vous concentrer sur l'écriture du code. De plus, Cloud Run évolue automatiquement pour gérer les pics de trafic soudains.

Le Dockerfile indique à Cloud Run comment exécuter votre application :

FROM mcr.microsoft.com/dotnet/core/aspnet:2.1
COPY . /app
WORKDIR /app
ENTRYPOINT ["dotnet", "Bookshelf.dll"]

Dockerfiles peuvent être plus riches, mais cette configuration fonctionne pour de nombreuses applications.

Cloud Run indique à votre application le port à écouter en définissant la variable d'environnement PORT. `Program.cs` de Bookshelf Program.cs contient du code pour observer la variable PORT et écouter sur ce port :

using Google.Cloud.Diagnostics.AspNetCore;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using System;

namespace Bookshelf
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseGoogleDiagnostics(Startup.GetProjectId(), "Bookshelf", "0.01")
                .UseStartup<Startup>().UsePortEnvironmentVariable();
    }

    static class ProgramExtensions
    {
        // Google Cloud Run sets the PORT environment variable to tell this
        // process which port to listen to.
        public static IWebHostBuilder UsePortEnvironmentVariable(
            this IWebHostBuilder builder)
        {
            string port = Environment.GetEnvironmentVariable("PORT");
            if (!string.IsNullOrEmpty(port))
            {
                builder.UseUrls($"http://0.0.0.0:{port}");
            }
            return builder;
        }
    }
}

Dans votre fenêtre de terminal, déployez l'application sur Cloud Run à l'aide de gcloud CLI :

  1. Créez l'application en local.
    dotnet publish -c Release
  2. Utilisez Cloud Build pour créer un conteneur Docker et publier dans Container Registry.
    gcloud builds submit --tag gcr.io/PROJECT_ID/bookshelf \
        bin/Release/netcoreapp2.1/publish
  3. Exécutez le conteneur avec Cloud Run.
    gcloud run deploy bookshelf --region us-central1 --platform managed \
        --image gcr.io/PROJECT_ID/bookshelf --allow-unauthenticated
    Votre application est désormais visible à l'URL affichée dans la sortie de gcloud run :
    Service [bookshelf] revision [bookshelf-00001] has been deployed and is serving traffic at
    https://bookshelf-lwuhslogjlnpofsxugoc.a.run.app
  4. Copiez l'URL dans votre navigateur Web pour afficher l'application. Page d'accueil de l'application Bookshelf

Pour plus d'informations sur le déploiement sur Cloud Run, consultez la documentation Cloud Run.

Faire persister vos données avec Cloud Firestore

Vous ne pouvez pas stocker d'informations sur vos instances Cloud Run, car elles sont perdues si l'instance redémarre, et elles n'existent pas lorsque des instances sont créées. À la place, vous devez utiliser une base de données, sur laquelle vos instances effectuent toutes leurs opérations de lecture et d'écriture.

Google Cloud permet de stocker des données de plusieurs façons. Dans cet exemple, vous utilisez Firestore pour stocker les données de chaque livre. Firestore est une base de données de documents NoSQL entièrement gérée et sans serveur qui permet de stocker et d'interroger des données. Firestore effectue un autoscaling en fonction des besoins de votre application et n'exploite aucune instance lorsque vous ne l'utilisez pas. Ajoutez votre premier livre dès aujourd'hui.

  1. Pour créer un livre à partir de l'application déployée, cliquez sur Add book (Ajouter un livre).

    Ajouter un livre dans l'application Bookshelf
  2. Dans le champ Title (Titre), saisissez Moby Dick.
  3. Dans le champ Author (Auteur), saisissez Herman Melville.
  4. Cliquez sur Enregistrer. L'application Bookshelf possède désormais une entrée.

    Entrée &quot;Moby Dick&quot; de l'application Bookshelf
  5. Dans la Google Cloud console, accédez à Cloud Firestore. Accéder à Cloud Firestore

    Les données s'affichent dans Firestore. L'application Bookshelf stocke chaque livre sous la forme d'un document Firestore ayant un ID unique, et tous ces documents sont stockés dans une collection Firestore. Dans ce tutoriel, la collection s'appelle "books" (livres).

    Exemple de document Firestore

Firestore stocke les livres à l'aide de la bibliothèque cliente Firestore. Voici un exemple de récupération d'un document Firestore :

using Google.Cloud.Firestore;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Bookshelf.Models
{
    class FirestoreBookStore : IBookStore
    {
        private FirestoreDb _firestore;
        private CollectionReference _books;

        public FirestoreBookStore(string projectId)
        {
            _firestore = FirestoreDb.Create(projectId);
            _books = _firestore.Collection("Books");
        }

Pour en savoir plus sur l'utilisation de Firestore, consultez l'article Ajouter des données.

Stocker des fichiers importés dans Cloud Storage

Maintenant que vous avez ajouté un livre, vous pouvez ajouter l'image de sa couverture. Vous ne pouvez pas stocker de fichiers sur vos instances. Une base de données n'est pas adaptée aux fichiers image. Utilisez plutôt Cloud Storage.

Cloud Storage est le principal magasin de blobs pour Google Cloud. Vous pouvez utiliser Cloud Storage pour héberger des éléments d'applications que vous voulez partager sur Google Cloud. Pour utiliser Cloud Storage, vous devez créer un bucket Cloud Storage, c'est-à-dire un conteneur de base permettant de conserver vos données.

  1. Dans la Google Cloud console, accédez à la page Navigateur Cloud Storage.

    Accéder à la page du navigateur Cloud Storage

  2. Cliquez sur Créer un bucket.
  3. Dans la boîte de dialogue Créer un bucket, entrez le nom du bucket en ajoutant l' Google Cloud ID du projet à la chaîne _bucket afin que le nom ait le format YOUR_PROJECT_ID_bucket. Ce nom doit respecter les exigences concernant les noms de buckets. Vous pouvez conserver les valeurs par défaut de tous les autres champs.
  4. Cliquez sur Créer.
  5. Une fois le bucket créé, vous devez rendre les objets accessibles publiquement pour que les utilisateurs puissent les afficher. Pour savoir comment procéder, consultez la page Rendre des données publiques.
  6. Cliquez sur Edit book (Modifier le livre), puis sélectionnez une image à importer pour sa couverture. Vous pouvez, par exemple, utiliser cette image du domaine public :
    Couverture du livre Moby Dick
  7. Cliquez sur Enregistrer. Vous êtes redirigé vers la page d'accueil sur laquelle se trouve une entrée de votre application Bookshelf.
    Entrée &quot;Moby Dick&quot; de l'application Bookshelf

L'application Bookshelf envoie les fichiers importés à Cloud Storage en utilisant la bibliothèque cliente Cloud Storage.

using Google.Cloud.Storage.V1;
using Microsoft.AspNetCore.Http;
using System;
using System.Threading.Tasks;
using System.Web;

namespace Bookshelf.Services
{
    public class ImageUploader
    {
        private readonly string _bucketName;
        private readonly StorageClient _storageClient;

        public ImageUploader(string bucketName)
        {
            _bucketName = bucketName;
            _storageClient = StorageClient.Create();
        }

Pour en savoir plus sur l'utilisation de Cloud Storage, consultez la présentation de Cloud Storage.

Surveiller votre application à l'aide de Google Cloud Observability

Vous avez déployé votre application, et créé et modifié des livres. Utilisez les outils de gestion des performances des applications pour surveiller ces événements pour vos utilisateurs.

Surveiller les journaux à l'aide de Cloud Logging

  1. Dans la console Google Cloud, accédez à l'explorateur de journaux.

    Accéder à l'explorateur de journaux

    Vous pouvez surveiller votre application en temps réel. En cas de problème avec celle-ci, la visionneuse est l'un des premiers éléments à consulter.

    Visionneuse de journaux Stackdriver
  2. Dans la liste déroulante Resource (Ressource), sélectionnez Cloud Run Revision, bookshelf (Révision dans Cloud Run, bookshelf).

Surveiller les erreurs avec Error Reporting

  1. Dans la Google Cloud console, accédez à la page Error Reporting.
    Accéder à la page Error Reporting
    Error Reporting met en évidence les erreurs et les exceptions dans votre application, et vous permet de configurer des alertes à leur sujet.
  2. Dans votre navigateur, accédez à l'URL /Home/Throw de votre application.
    Par exemple, si votre application est hébergée sur https://bookshelf-lwuhslogjlnpofsxugoc.a.run.app, puis accédez à https://bookshelf-lwuhslogjlnpofsxugoc.a.run.app/Home/Throw.

    Vous générez ainsi une nouvelle exception de test, qui est envoyée à Google Cloud Observability.

  3. Dans la Google Cloud console, revenez à la page Error Reporting. La nouvelle erreur s'affiche après quelques instants. Cliquez sur Actualisation automatique pour ne pas avoir à actualiser la page manuellement.

    Message d'erreur dans Error Reporting

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

Supprimer le projet

  1. Dans la Google Cloud console, accédez à la page Gérer les ressources.

    Accéder à la page "Gérer les ressources"

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez Arrêter pour supprimer le projet.

Étape suivante