Muchas aplicaciones necesitan la administración de sesiones para la autenticación y las preferencias del usuario. ASP.NET Core incluye middleware para almacenar sesiones en una caché distribuida.
La caché distribuida predeterminada de ASP.NET no se distribuye en absoluto. Almacena datos de sesión en la memoria del servidor web. Cuando solo un servidor web entrega un sitio web, esta estrategia es adecuada. Pero cuando muchos servidores web entregan un sitio web, los usuarios pueden experimentar errores y perder datos.
Para evitar errores y datos perdidos, una aplicación ASP.NET debe usar una caché distribuida que almacene datos en un almacén de datos persistente. En este instructivo, se muestra cómo administrar sesiones en Cloud Run si las almacenas en Firestore y encriptas las cookies con Cloud Key Management Service.
Objetivos
- Implementa la aplicación en Cloud Run.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
Antes de comenzar
- 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.
-
Para crear una base de datos de Firestore en modo nativo, sigue los pasos a continuación:
-
En la consola de Google Cloud, ve a la página Visualizador de Firestore.
Ir al visualizador de Firestore - Desde la pantalla Seleccionar un modo de Firestore, haz clic en Seleccionar modo nativo.
- Selecciona una ubicación para tu base de datos de Firestore. Esta configuración de la ubicación es la ubicación de recursos de Google Cloud predeterminada para tu proyecto de Google Cloud. La ubicación se usa para los servicios de Google Cloud en tu proyecto de Google Cloud que requieren una configuración de la ubicación, en particular, tu bucket predeterminado de Cloud Storage y tu aplicación de App Engine.
- Haga clic en Crear base de datos.
-
En la consola de Google Cloud, ve a la página Visualizador de Firestore.
-
En Cloud Shell, abre el código fuente de la app.
Ir a Cloud ShellCloud Shell brinda acceso de línea de comandos a tus recursos de Google Cloud de forma directa desde el navegador.
- Para descargar el código de muestra y cambiar al directorio de la app, haz clic en Continuar.
-
En Cloud Shell, configura gcloud CLI para que use tu proyecto de Google Cloud nuevo de la siguiente manera:
# Configure gcloud for your project gcloud config set project PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyecto de Google Cloud que creaste mediante la consola de Google Cloud.Google Cloud CLI es la forma principal en la que interactúas con tus recursos de Google Cloud desde la línea de comandos. En este instructivo, usarás gcloud CLI para implementar y supervisar tu app.
Examina el código fuente
En el siguiente diagrama, se ilustra cómo Firestore maneja las sesiones para la aplicación Cloud Run.
El método ConfigureServices
en el archivo Startup.cs
configura la app para que use Cloud KMS en la encriptación, y Cloud Storage para almacenar claves encriptadas.
-
En Cloud Shell, haz clic en para iniciar el editor y examinar el archivo
Startup.cs
.
Configura el proyecto de Google Cloud
-
En el editor de Cloud Shell, edita el archivo
appsettings.json
y reemplaza las dos instancias deYOUR-PROJECT-ID
por el ID de tu proyecto de Google Cloud. Guarda el archivo. -
Crea un llavero de claves nuevo de Cloud Key Management Service llamado
dataprotectionprovider
:gcloud kms keyrings create dataprotectionprovider --location global
-
Crea una clave nueva de Cloud Key Management Service llamada
masterkey
:gcloud kms keys create masterkey --location global --keyring dataprotectionprovider --purpose=encryption
-
Crea un bucket de Cloud Storage para almacenar las claves encriptadas:
gsutil mb gs://PROJECT_ID-bucket
Implementa y ejecuta en Cloud Run
Puedes usar Cloud Run para crear y, luego, implementar una aplicación que se ejecute de manera confiable bajo una gran carga y con grandes cantidades de datos.
En este instructivo, se usa Cloud Run para implementar el servidor.
En Cloud Shell, publica tu aplicación:
dotnet publish -c Release
Usa Cloud Build para compilar un contenedor de Docker y publicarlo en Container Registry:
gcloud builds submit --tag gcr.io/PROJECT_ID/sessions bin/Release/netcoreapp2.1/publish
Ejecuta el contenedor con Cloud Run:
gcloud beta run deploy sessions --region us-central1 --platform managed --image gcr.io/PROJECT_ID/sessions --allow-unauthenticated
Toma nota de la URL en el resultado:
Service [sessions] revision [sessions-00003-xiz] has been deployed and is serving 100 percent of traffic at https://sessions-r3f3em7nuq-uc.a.run.app
Para ver la app en vivo, ve a la URL que copiaste en el paso anterior.
Borra sesiones
Puedes borrar los datos de sesión en la consola de Google Cloud o implementar una estrategia de eliminación automática. Cuando usas soluciones de almacenamiento para sesiones, como Memcache o Redis, las sesiones vencidas se borran de forma automática.
Depura la app
Si no puedes conectarte a la aplicación Cloud Run, verifica lo siguiente:
- Comprueba que los comandos de implementación de
gcloud
se completaron correctamente y no generaron ningún error. Si hubo errores (por ejemplo,message=Build failed
), corrígelos y, luego, intenta implementar la aplicación Cloud Run nuevamente. - Consulta la guía de Cloud Run para ver los registros.
Limpia
Borra el proyecto
- 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.
¿Qué sigue?
- Obtén más información sobre Cloud Run.
- Obtén más información sobre Cloud KMS.
- Obtén más información sobre Cloud Storage.