En este instructivo, se describe cómo implementar una aplicación web .NET en Compute Engine.
Este instructivo está dirigido a desarrolladores y a ingenieros DevOps que tienen conocimientos básicos de Microsoft .NET y Compute Engine.
Objetivos
Implementa una aplicación web de ASP.NET Core que use .NET 6 y se ejecute en Linux en una sola instancia de Compute Engine.
En este instructivo, se muestra cómo completar las siguientes tareas para alcanzar tu objetivo:
- Implementa una VM de Compute Engine
- Configura el balanceo de cargas
- Implemente la aplicación ASP.NET
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 Compute Engine API.
-
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 Compute Engine API.
Implementa una VM de Compute Engine
En esta sección, se muestra cómo crear una VM de Linux o una VM de Windows Server que ejecute servidores web de Microsoft Internet Information Services (IIS) en Compute Engine.
Establece valores predeterminados para tu ID del proyecto y zona de Compute Engine. Esto te ayuda a ahorrar tiempo.
gcloud config set project PROJECT_ID gcloud config set compute/zone ZONE
Reemplaza lo siguiente:
PROJECT_ID
por el ID del proyecto de Google Cloud.ZONE
por el nombre de la zona que usarás para crear recursos Si no estás seguro de qué zona elegir, usa la que esté geográficamente más cerca de ti.
Por ejemplo:
gcloud config set project test-project-12345 gcloud config set compute/zone us-central1-a
Cree una instancia de VM:
Para crear una VM de Linux, haz lo siguiente:
Crea una secuencia de comandos de inicio para la instancia de VM. La secuencia de comandos se ejecuta durante la inicialización de la VM y, luego, instala el entorno de ejecución de .NET:
"if ! dpkg-query -W aspnetcore-runtime-6.0 then curl https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb sudo apt-get update && sudo apt-get install -y aspnetcore-runtime-6.0 fi " | Out-File -Encoding ASCII startup.sh
Crea la instancia de VM y usa
startup.sh
como secuencia de comandos de inicio:gcloud compute instances create clouddemo-1 ` --image-family debian-11 ` --image-project debian-cloud ` --machine-type n1-standard-2 ` --boot-disk-type pd-ssd ` --tags loadbalancer-backend ` --metadata-from-file startup-script=startup.sh
Supervisa el proceso de inicialización de la VM cuando ves su salida de puerto en serie:
gcloud compute instances tail-serial-port-output clouddemo-1
Espera unos 5 minutos hasta que veas el resultado
Instance setup finished
oStartup finished
y, luego, presiona Ctrl + C. En este punto, ya se completó la instalación de los requisitos, y la instancia de VM está lista para usarse.
Configura el balanceo de cargas
Para que tu app de ASP.NET esté disponible a través de Internet, debes usar un balanceador de cargas HTTPS. Para asociar tu instancia de VM al balanceador de cargas, crea un grupo de instancias y asigna este grupo de instancias al balanceador de cargas:
Crea un grupo de instancias no administrado y agrega la instancia de VM:
gcloud compute instance-groups unmanaged create clouddemo-1 gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
Cree una verificación de estado que verifique si el servidor web se está ejecutando:
gcloud compute http-health-checks create clouddemo-health ` --check-interval 5s ` --unhealthy-threshold 2 ` --request-path / ` --port 5000 gcloud compute instance-groups set-named-ports clouddemo-1 --named-ports=http:5000
Crea un servicio de backend para el balanceador de cargas que use la verificación de estado HTTP y el grupo de instancias que creaste antes:
gcloud compute backend-services create clouddemo-backend ` --http-health-checks clouddemo-health ` --port-name http ` --protocol HTTP ` --global gcloud compute backend-services add-backend clouddemo-backend ` --instance-group clouddemo-1 ` --global ` --instance-group-zone $(gcloud config get-value compute/zone)
Cree un frontend para el balanceador de cargas:
gcloud compute url-maps create clouddemo-map --default-service clouddemo-backend gcloud compute target-http-proxies create clouddemo-proxy --url-map clouddemo-map gcloud compute forwarding-rules create clouddemo-frontend --global --target-http-proxy clouddemo-proxy --ports 80
Crea una regla de firewall que permita que el balanceador de cargas envíe solicitudes HTTP a instancias anotadas con la etiqueta
loadbalancer-backend
.gcloud compute firewall-rules create loadbalancer-backend ` --source-ranges "130.211.0.0/22,35.191.0.0/16" ` --target-tags loadbalancer-backend ` --allow tcp:80,tcp:5000
Busca la dirección IP del balanceador de cargas:
gcloud compute forwarding-rules describe clouddemo-frontend --global --format "value(IPAddress)"
Anota la dirección IP. La necesitarás más tarde.
Implemente la aplicación ASP.NET
Abre una consola de PowerShell.
Descarga y descomprime o clona el repositorio de muestra de GitHub:
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Compila el paquete de implementación:
Ve al directorio que contiene la aplicación de ejemplo:
cd dotnet-docs-samples\applications\clouddemo\netcore
Compila la solución:
dotnet publish -c Release
Copia el paquete de implementación en la VM:
Copia el contenido de la carpeta
publish
en el directorio principal de la VM:gcloud compute scp --recurse CloudDemo.MvcCore\bin\Release\net6.0\publish clouddemo-1:
En la VM, crea una carpeta
/var/www/clouddemo
y copia los archivos de la aplicación en esta carpeta:sudo mkdir -p /var/www/clouddemo sudo chown -R www-data:www-data /var/www/clouddemo sudo cp -r publish/* /var/www/clouddemo
Registra la aplicación como una unidad systemd:
cat <<EOF > kestrel-clouddemo.service [Unit] Description=Cloud Demo ASP.NET app [Service] WorkingDirectory=/var/www/clouddemo ExecStart=/usr/bin/dotnet /var/www/clouddemo/CloudDemo.MvcCore.dll Restart=always Environment=ASPNETCORE_ENVIRONMENT=Production Environment=ASPNETCORE_URLS=http://0.0.0.0:5000 [Install] WantedBy=multi-user.target EOF sudo mv kestrel-clouddemo.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl start kestrel-clouddemo
En tu computadora local, abre un navegador web y navega a la siguiente dirección:
http://
LOADBALANCER_IP
/Reemplaza
LOADBALANCER_IP
por la dirección IP que obtuviste después de implementar el balanceador de cargas.Ahora verá la aplicación de demostración y el título This app is running on Compute Engine.
Limpia
Una vez que completes el instructivo, puedes limpiar los recursos que creaste para que dejen de usar la cuota y generar cargos. En las siguientes secciones, se describe cómo borrar o desactivar estos recursos.
Borra el proyecto
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Borra los recursos individuales
Deberás borrar de forma individual todos los recursos creados para el proyecto (por ejemplo: grupos de instancias, verificaciones de estado, servicios de backend, proxy HTTP y reglas de reenvío). No puedes borrar las instancias de VM hasta que borres todos estos recursos.
¿Qué sigue?
- Obtén más información para crear y ejecutar máquinas virtuales en la infraestructura de Google.
- Revisa las prácticas recomendadas en el framework de arquitectura de Google Cloud.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.