Esegui il deployment di un'applicazione ASP.NET su Compute Engine

Questo tutorial descrive come eseguire il deployment di un'applicazione web .NET Framework in Compute Engine.

Questo tutorial è rivolto a sviluppatori e ingegneri DevOps che hanno conoscenze di base di Microsoft .NET e Compute Engine.

Obiettivi

Esegui il deployment di un'applicazione web ASP.NET Model-View-Controller (MVC) che utilizza .NET Framework 4 e viene eseguita su Windows in una singola istanza Compute Engine.

Questo tutorial mostra come completare le seguenti attività per raggiungere il tuo obiettivo:

  • Esegui il deployment di una VM di Compute Engine
  • Configurazione del bilanciamento del carico
  • Esegui il deployment dell'applicazione ASP.NET

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

I nuovi utenti di Google Cloud potrebbero avere diritto a una prova senza costi.

Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.

Prima di iniziare

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Esegui il deployment di una VM di Compute Engine

Questa sezione mostra come creare una VM Linux o una VM Windows Server che esegue server web Microsoft Internet Information Services (IIS) su Compute Engine.

  1. Imposta i valori predefiniti per l'ID progetto e la zona Compute Engine. In questo modo risparmierai tempo.

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud .
    • ZONE con il nome della zona che utilizzerai per creare risorse. Se non sai quale zona scegliere, utilizza quella geograficamente più vicina a te.

    Ad esempio:

    gcloud config set project test-project-12345
    gcloud config set compute/zone us-central1-a
    
  2. Crea un'istanza VM:

    Per creare una VM Windows Server che esegue IIS:

    1. Crea uno script di avvio per l'istanza VM. Questo script verrà eseguito durante l'inizializzazione della VM e installerà IIS:

      "# Install IIS
      Enable-WindowsOptionalFeature -Online -FeatureName ``
          NetFx4Extended-ASPNET45, ``
          IIS-WebServerRole, ``
          IIS-WebServer, ``
          IIS-CommonHttpFeatures, ``
          IIS-HttpErrors, ``
          IIS-HttpRedirect, ``
          IIS-ApplicationDevelopment, ``
          IIS-HealthAndDiagnostics, ``
          IIS-HttpLogging, ``
          IIS-LoggingLibraries, ``
          IIS-RequestMonitor, ``
          IIS-HttpTracing, ``
          IIS-Security, ``
          IIS-RequestFiltering, ``
          IIS-Performance, ``
          IIS-WebServerManagementTools, ``
          IIS-IIS6ManagementCompatibility, ``
          IIS-Metabase, ``
          IIS-DefaultDocument, ``
          IIS-ApplicationInit, ``
          IIS-NetFxExtensibility45, ``
          IIS-ISAPIExtensions, ``
          IIS-ISAPIFilter, ``
          IIS-ASPNET45, ``
          IIS-HttpCompressionStatic
      Install-WindowsFeature Web-Mgmt-Service
      
      # Install WebDeploy
      [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType] 'Ssl3,Tls12'
      (New-Object Net.WebClient).DownloadFile(
          'https://download.microsoft.com/download/0/1/D/01DC28EA-638C-4A22-A57B-4CEF97755C6C/WebDeploy_amd64_en-US.msi',
          ""$env:Temp\webdeploy.msi"")
      & msiexec /qb! /i $env:Temp\webdeploy.msi | Out-Default
      " | Out-File -Encoding ASCII startup.ps1
      
    2. Crea l'istanza VM ed esegui lo script di avvio startup.ps1:

      gcloud compute instances create clouddemo-1 `
          --image-family windows-2019 `
          --image-project windows-cloud `
          --machine-type n1-standard-2 `
          --boot-disk-type pd-ssd `
          --tags loadbalancer-backend `
          --metadata-from-file sysprep-startup-script-ps1=startup.ps1
      
  3. Monitora il processo di inizializzazione della VM visualizzando l'output della porta seriale:

    gcloud compute instances tail-serial-port-output clouddemo-1
    

    Attendi circa 5 minuti finché non viene visualizzato l'output Instance setup finished o Startup finished, quindi premi Ctrl+C. A questo punto, l'installazione dei prerequisiti è completata e l'istanza VM è pronta per essere utilizzata.

Configurazione del bilanciamento del carico

Per rendere disponibile la tua app ASP.NET su internet, devi utilizzare un bilanciatore del carico HTTPS. Per associare la tua istanza VM al bilanciatore del carico, crea un gruppo di istanze e assegna questo gruppo di istanze al bilanciatore del carico:

  1. Crea un gruppo di istanze non gestite e aggiungi l'istanza VM:

    gcloud compute instance-groups unmanaged create clouddemo-1
    gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
    
  2. Crea un controllo di integrità che verifichi se il server web è in esecuzione:

    gcloud compute http-health-checks create clouddemo-health `
        --check-interval 5s `
        --unhealthy-threshold 2 `
        --request-path /
    gcloud compute instance-groups set-named-ports clouddemo-1 --named-ports=http:80
    
  3. Crea un servizio di backend del bilanciatore del carico che utilizza il controllo di integrità HTTP e il gruppo di istanze che hai creato in precedenza:

    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. Crea un frontend per il bilanciatore del carico:

    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. Crea una regola firewall che consenta al bilanciatore del carico di inviare richieste HTTP alle istanze annotate con il 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. Cerca l'indirizzo IP del bilanciatore del carico:

    gcloud compute forwarding-rules describe clouddemo-frontend --global --format "value(IPAddress)"
    

    Prendi nota dell'indirizzo IP. ti servirà in un secondo momento.

Esegui il deployment dell'applicazione ASP.NET

  1. Apri una console PowerShell.

  2. Scarica e decomprimi o clona il repository di esempio da GitHub:

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    
  3. Crea il pacchetto di deployment:

    1. Passa alla directory che contiene l'applicazione di esempio:

      cd dotnet-docs-samples\applications\clouddemo\net4
      
    2. Ripristina le dipendenze NuGet:

      nuget restore
      
    3. Crea la soluzione e utilizza il profilo di pubblicazione PackageProfile per creare un pacchetto di deployment WebDeploy:

      msbuild /t:clean,rebuild CloudDemo.Mvc.sln /p:DeployOnBuild=true /p:PublishProfile=PackageProfile
      

      La cartella CloudDemo.Mvc\bin ora contiene un file CloudDemo.Mvc.zip.

  4. Copia il pacchetto di deployment nella VM:

    1. Crea un nome utente e una password per l'istanza VM.
    2. Connettiti alla VM utilizzando Remote Desktop e accedi con il nome utente e la password creati nel passaggio precedente.
    3. Copia il file CloudDemo.Mvc.zip dalla cartella CloudDemo.Mvc\bin in una posizione temporanea sull'istanza VM.
    4. Nella sessione di Desktop remoto, fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).
    5. Conferma la richiesta di elevazione facendo clic su .
    6. Esegui il deployment del pacchetto di deployment:

      &"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package=PACKAGE -verb:sync -dest:auto
      

      Sostituisci PACKAGE con il percorso del pacchetto di deployment.

  5. Sul computer locale, apri un browser web e vai al seguente indirizzo:

    http://LOADBALANCER_IP/
    

    Sostituisci LOADBALANCER_IP con l'indirizzo IP che hai ottenuto dopo aver eseguito il deployment del bilanciatore del carico.

    Ora vedi l'applicazione demo e il titolo Questa app è in esecuzione su Compute Engine.

Esegui la pulizia

Al termine del tutorial, puoi eliminare le risorse che hai creato in modo che non utilizzino più la quota generando addebiti. Le sezioni seguenti descrivono come eliminare o disattivare queste risorse.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è quello di eliminare il progetto creato per il tutorial.

    Elimina un progetto Google Cloud :

    gcloud projects delete PROJECT_ID

Elimina singole risorse

Dovrai eliminare singolarmente tutte le risorse create per il progetto (ad esempio: gruppi di istanze, controlli di integrità, servizi di backend, proxy HTTP e regole di forwarding). Non puoi eliminare le istanze VM finché non elimini tutte queste risorse.

Passaggi successivi