Ce tutoriel explique comment déployer une application Web .NET dans Compute Engine.
Ce tutoriel est destiné aux développeurs et aux ingénieurs DevOps qui possèdent des connaissances de base sur Microsoft .NET et Compute Engine.
Objectifs
Déployer une application Web ASP.NET Core qui utilise .NET 6 et s'exécute sous Linux sur une seule instance Compute Engine.
Ce tutoriel vous explique comment effectuer les tâches suivantes, en vue d'atteindre votre objectif :
- Déployer une VM Compute Engine
- Configurer l'équilibrage de charge
- Déployer l'application ASP.NET
Coûts
Dans ce tutoriel, vous utilisez les composants facturables de suivants 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 Compute Engine API.
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 Compute Engine API.
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.
Déployer une VM Compute Engine
Cette section explique comment créer une VM Linux ou une VM Windows Server qui exécute des serveurs Web Microsoft Internet Information Services (IIS) sur Compute Engine.
Définissez les valeurs par défaut pour l'ID de projet et la zone Compute Engine. Cela vous fait gagner du temps.
gcloud config set project PROJECT_ID gcloud config set compute/zone ZONE
Remplacez les éléments suivants :
PROJECT_IDpar l'ID de votre Google Cloud projet.ZONEpar le nom de la zone que vous allez utiliser pour créer des ressources. En cas de doute, utilisez la zone géographiquement la plus proche de vous.
Exemple :
gcloud config set project test-project-12345 gcloud config set compute/zone us-central1-a
Créez une instance de VM :
Pour créer une VM Linux, procédez comme suit :
Créez un script de démarrage pour l'instance de VM. Le script s'exécute lors de l'initialisation de la VM et installe l'environnement d'exécution .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.shCréez l'instance de VM et utilisez
startup.shcomme script de démarrage :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
Surveillez le processus d'initialisation de la VM en consultant la sortie de son port série :
gcloud compute instances tail-serial-port-output clouddemo-1
Attendez environ cinq minutes avant que la sortie
Instance setup finishedouStartup finisheds'affiche, puis appuyez sur Ctrl+C. À ce stade, l'installation des composants requis est terminée, et l'instance de VM est prête à être utilisée.
Configurer l'équilibrage de charge
Pour rendre votre application ASP.NET disponible sur Internet, vous devez utiliser un équilibreur de charge HTTPS. Pour associer votre instance de VM à l'équilibreur de charge, créez un groupe d'instances et attribuez-le à l'équilibreur de charge :
Créez un groupe d'instances non géré et ajoutez l'instance de VM :
gcloud compute instance-groups unmanaged create clouddemo-1 gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
Créez une vérification de l'état pour vérifier si le serveur Web est en cours d'exécution :
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:5000Créez un service de backend d'équilibreur de charge qui utilise la vérification de l'état HTTP et le groupe d'instances que vous avez créé précédemment :
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)
Créez une interface pour l'équilibreur de charge :
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
Créez une règle de pare-feu permettant à l'équilibreur de charge d'envoyer des requêtes HTTP aux instances comportant le tag.
loadbalancer-backendgcloud 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
Recherchez l'adresse IP de l'équilibreur de charge :
gcloud compute forwarding-rules describe clouddemo-frontend --global --format "value(IPAddress)"
Notez l'adresse IP. Vous en aurez besoin ultérieurement.
Déployer l'application ASP.NET
Ouvrez une console PowerShell.
Téléchargez et décompressez ou clonez l'exemple de dépôt depuis github :
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Créez le package de déploiement :
Accédez au répertoire qui contient l'exemple d'application :
cd dotnet-docs-samples\applications\clouddemo\netcore
Créez la solution :
dotnet publish -c Release
Copiez le package de déploiement sur la VM :
Copiez le contenu du dossier
publishdans votre répertoire d'accueil sur la VM :gcloud compute scp --recurse CloudDemo.MvcCore\bin\Release\net6.0\publish clouddemo-1:
Sur la VM, créez un dossier
/var/www/clouddemoet copiez-y les fichiers de l'application :sudo mkdir -p /var/www/clouddemo sudo chown -R www-data:www-data /var/www/clouddemo sudo cp -r publish/* /var/www/clouddemo
Enregistrez l'application en tant qu'unité 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
Sur votre ordinateur local, ouvrez un navigateur Web et accédez à l'adresse suivante :
http://
LOADBALANCER_IP/Remplacez
LOADBALANCER_IPpar l'adresse IP que vous avez obtenue après avoir déployé l'équilibreur de charge.Vous voyez maintenant l'application de démonstration et le titre This app is running on Compute Engine (Cette application s'exécute sur Compute Engine).
Effectuer un nettoyage
Une fois le tutoriel terminé, vous pouvez procéder au nettoyage des ressources que vous avez créées afin qu'elles ne soient plus comptabilisées dans votre quota et qu'elles ne vous soient plus facturées. Dans les sections suivantes, nous allons voir comment supprimer ou désactiver ces ressources.
Supprimer le projet
Le moyen le plus simple d’éliminer la facturation consiste à supprimer le projet que vous avez créé pour ce tutoriel.
Supprimer un Google Cloud projet :
gcloud projects delete PROJECT_ID
Supprimer des ressources individuelles
Vous devez supprimer individuellement toutes les ressources créées pour le projet (par exemple, les groupes d'instances, les vérifications d'état, les services de backend, le proxy HTTP et les règles de transfert). Vous ne pouvez pas supprimer les instances de VM tant que vous n'avez pas supprimé toutes ces ressources.
Étape suivante
- Découvrez comment créer et exécuter des machines virtuelles sur l'infrastructure Google.
- Consultez les bonnes pratiques dans le Google Cloud framework d'architecture.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Cloud Architecture Center.