Déployer une application ASP.NET sur Compute Engine


Ce tutoriel explique comment déployer une application Web .NET sur Compute Engine.

Ce tutoriel est destiné aux développeurs et aux ingénieurs DevOps qui connaissent les principes de base de Microsoft .NET et Compute Engine.

Objectifs

Déployez une application Web ASP.NET Core utilisant .NET 6 et exécutée 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 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. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

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

  1. Connectez-vous à votre compte Google Cloud. 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 gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Activez l'API Compute Engine

    Activer l'API

  5. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  6. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  7. Activez l'API Compute Engine

    Activer l'API

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.

  1. Définissez des valeurs par défaut pour l'ID de votre projet et la zone Compute Engine. Cela vous permet de gagner du temps.

    gcloud config set project PROJECT_ID
    gcloud config set compute/zone ZONE
    

    Remplacez les éléments suivants :

    • PROJECT_ID par l'ID de votre projet Google Cloud.
    • ZONE par le nom de la zone que vous allez utiliser pour créer des ressources. Si vous ne savez pas quelle zone choisir, 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
    
  2. Créez une instance de VM :

    Pour créer une VM Linux, procédez comme suit:

    1. 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.sh
      
    2. Créez l'instance de VM et utilisez startup.sh comme 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
      
  3. 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 finished ou Startup finished s'affiche, puis appuyez sur Ctrl+C. À ce stade, l'installation des pré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 l'instance de VM à l'équilibreur de charge, créez un groupe d'instances et attribuez-lui l'équilibreur de charge:

  1. 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
    
  2. Créez une vérification de l'état qui vérifie 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:5000
    
  3. Cré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)
    
  4. Créez un frontal 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
    
  5. Créez une règle de pare-feu qui permet à l'équilibreur de charge d'envoyer des requêtes HTTP aux instances annotées avec le tag 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
    
  6. 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

  1. Ouvrez une console PowerShell.

  2. Téléchargez et décompressez l'exemple de dépôt depuis GitHub:

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    
  3. Créez le package de déploiement:

    1. Basculez vers le répertoire contenant l'exemple d'application:

      cd dotnet-docs-samples\applications\clouddemo\netcore
      
    2. Créez la solution:

      dotnet publish -c Release
      
  4. Copiez le package de déploiement sur la VM:

    1. Copiez le contenu du dossier publish dans votre répertoire d'accueil sur la VM:

      gcloud compute scp --recurse CloudDemo.MvcCore\bin\Release\net6.0\publish clouddemo-1:
      
    2. Connectez-vous à la VM via SSH.

    3. Sur la VM, créez un dossier /var/www/clouddemo et 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
      
    4. Enregistrez l'application en tant qu'unité système:

      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
      
  5. Sur votre ordinateur local, ouvrez un navigateur Web et accédez à l'adresse suivante:

    http://LOADBALANCER_IP/
    

    Remplacez LOADBALANCER_IP par l'adresse IP que vous avez obtenue après avoir déployé l'équilibreur de charge.

    L'application de démonstration s'affiche, accompagnée du titre 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.

    Supprimez un projet Google Cloud :

    gcloud projects delete PROJECT_ID

Supprimer des ressources individuelles

Vous devrez 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 toutes ces ressources n'ont pas été supprimées.

Étapes suivantes