De nombreuses applications nécessitent une gestion de session pour l'authentification et les préférences utilisateur. ASP.NET Core est fourni avec un middleware pour stocker les sessions dans un cache distribué.
Le cache distribué par défaut d'ASP.NET n'est en fait pas du tout distribué. Il stocke les données de session dans la mémoire du serveur Web. Lorsqu'un seul serveur Web diffuse un site Web, cette stratégie convient. Toutefois, lorsque de nombreux serveurs Web diffusent un site Web, les utilisateurs du site Web peuvent rencontrer des erreurs et perdre des données.
Pour éviter les erreurs et la perte de données, une application ASP.NET doit utiliser un cache distribué qui stocke les données dans un data store persistant. Ce tutoriel explique comment gérer des sessions sur Cloud Run en les stockant dans Firestore et en chiffrant des cookies avec Cloud Key Management Service.
Objectifs
- Déployez l'application sur Cloud Run.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud:
Obtenez une estimation des coûts en fonction de votre utilisation prévue,
utilisez le simulateur de coût.
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
- 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.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Pour créer une base de données Firestore en mode natif, effectuez la procédure suivante :
-
Dans la Google Cloud console, accédez à la page Lecteur Firestore.
Accéder au lecteur Firestore - Sur l'écran Sélectionner un mode Cloud Firestore, cliquez sur Sélectionner le mode natif.
- 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 les Google Cloud 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 App Engine.
- Cliquez sur Créer une base de données.
-
Dans la Google Cloud console, accédez à la page Lecteur Firestore.
-
Dans Cloud Shell, ouvrez le code source de l'application.
Accéder à Cloud ShellCloud Shell vous permet d'accéder en ligne de commande à vos Google Cloud ressources directement depuis votre navigateur.
- Pour télécharger l'exemple de code et accéder au répertoire de l'application, cliquez sur Continuer.
-
Dans Cloud Shell, configurez gcloud CLI pour qu'il utilise votre nouveau Google Cloud projet :
# Configure gcloud for your project gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar l' Google Cloud ID du projet que vous avez créé à l'aide de la Google Cloud console.L'interface de ligne de commande Google Cloud CLI est votre principal moyen d'interaction avec vos Google Cloud ressources via la ligne de commande. Dans ce tutoriel, vous utilisez gcloud CLI pour déployer et surveiller votre application.
Examiner le code source
Le diagramme suivant illustre la façon dont Firestore gère les sessions pour l'application Cloud Run.
La méthode ConfigureServices du fichier Startup.cs configure l'application de sorte qu'elle utilise Cloud KMS pour le chiffrement et Cloud Storage pour le stockage des clés chiffrées.
-
Dans Cloud Shell, cliquez sur
pour lancer l'éditeur et examiner le fichier Startup.cs.
Configurer le Google Cloud projet
-
Dans l'éditeur Cloud Shell, modifiez le
appsettings.jsonfichier et remplacez les deux instances deYOUR-PROJECT-IDpar l'ID de votre Google Cloud projet. Enregistrez le fichier. -
Créez un nouveau trousseau de clés Cloud Key Management Service nommé
dataprotectionprovider:gcloud kms keyrings create dataprotectionprovider --location global
-
Créez une nouvelle clé Cloud Key Management Service nommée
masterkey:gcloud kms keys create masterkey --location global --keyring dataprotectionprovider --purpose=encryption
-
Créez un bucket Cloud Storage pour stocker les clés chiffrées :
gcloud storage buckets create gs://PROJECT_ID-bucket
Déployer et exécuter sur Cloud Run
Vous pouvez utiliser le Cloud Run pour créer et déployer une application qui fonctionne de manière fiable sous une charge élevée et avec de grandes quantités de données.
Ce tutoriel utilise Cloud Run pour déployer le serveur.
Dans votre Cloud Shell, publiez votre application :
dotnet publish -c ReleaseUtilisez Cloud Build pour créer un conteneur Docker et publier dans Container Registry :
gcloud builds submit --tag gcr.io/PROJECT_ID/sessions bin/Release/netcoreapp2.1/publish
Exécutez le conteneur avec Cloud Run :
gcloud beta run deploy sessions --region us-central1 --platform managed --image gcr.io/PROJECT_ID/sessions --allow-unauthenticated
Notez l'URL dans la sortie :
Service [sessions] revision [sessions-00003-xiz] has been deployed and is serving 100 percent of traffic at https://sessions-r3f3em7nuq-uc.a.run.app
Pour afficher l'application en direct, accédez à l'URL que vous avez copiée à l'étape précédente.
Supprimer des sessions
Vous pouvez supprimer les données de session dans la Google Cloud console ou mettre en œuvre une stratégie de suppression automatique. Si vous utilisez des solutions de stockage pour des sessions telles que Memcache ou Redis, les sessions expirées sont automatiquement supprimées.
Déboguer l'application
Si vous ne pouvez pas vous connecter à votre application Cloud Run, vérifiez les points suivants :
- Vérifiez que les commandes de déploiement
gcloudont bien abouti et n'ont généré aucune erreur. S'il y a eu des erreurs (par exemple,message=Build failed), corrigez-les et réessayez de déployer l'application Cloud Run. - Consultez le guide Cloud Run sur l'affichage des journaux.
Effectuer un nettoyage
Supprimer le projet
- Dans la Google Cloud console, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez Arrêter pour supprimer le projet.