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 magasin de données 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 à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs.
-
Pour créer une base de données Firestore en mode natif, effectuez la procédure suivante :
-
Dans la console Google Cloud, 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 des ressources Google Cloud de votre projet Google Cloud. Cet emplacement est utilisé pour les services Google Cloud exploités dans votre projet Google Cloud 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 Create Database (Créer une base de données).
-
Dans la console Google Cloud, 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 ressources Google Cloud, 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 utiliser votre nouveau projet Google Cloud:
# Configure gcloud for your project gcloud config set project PROJECT_ID
Remplacez
PROJECT_ID
par l'ID du projet Google Cloud que vous avez créé à l'aide de la console Google Cloud.Google Cloud CLI est le principal moyen d'interaction avec vos ressources Google Cloud depuis la ligne de commande. Dans ce tutoriel, vous allez utiliser 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
.
Configuration du projet Google Cloud
-
Dans l'éditeur Cloud Shell, modifiez le fichier
appsettings.json
et remplacez les deux instances deYOUR-PROJECT-ID
par l'ID de votre projet Google Cloud. Enregistrez le fichier. -
Créez un trousseau de clés Cloud Key Management Service nommé
dataprotectionprovider
:gcloud kms keyrings create dataprotectionprovider --location global
-
Créez une 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:
gsutil mb gs://PROJECT_ID-bucket
Déployer et exécuter sur Cloud Run
Vous pouvez utiliser 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 Release
Utilisez Cloud Build pour créer un conteneur Docker et le 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 des données de session dans la console Google Cloud 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
gcloud
ont 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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.