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


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

Questo tutorial è destinato agli sviluppatori e agli ingegneri DevOps che hanno una conoscenza di base di Microsoft .NET e Compute Engine.

Obiettivi

Esegui il deployment di un'applicazione web ASP.NET Core che utilizza .NET 6 ed è in esecuzione su Linux in una singola istanza di Compute Engine.

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

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

Costi

In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi basata sull'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.

Prima di iniziare

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Enable the API

Esegui il deployment di una VM Compute Engine

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

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

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

    Sostituisci quanto segue:

    • PROJECT_ID con l'ID del tuo progetto Google Cloud.
    • ZONE con il nome della zona che utilizzerai per creare risorse. In caso di dubbi su quale zona scegliere, utilizza la zona geograficamente più vicina.

    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 Linux, segui questi passaggi:

    1. Crea uno script di avvio per l'istanza VM. Lo script viene eseguito durante l'inizializzazione della VM e installa il runtime .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. Crea l'istanza VM e utilizza startup.sh come script di avvio:

      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. 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 visualizzi 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 l'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 gestito 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 controlli se il server web è in esecuzione:

    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. Crea un servizio di backend del bilanciatore del carico che utilizzi il controllo di integrità HTTP e il gruppo di istanze 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 front-end 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 a 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 di 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\netcore
      
    2. Crea la soluzione:

      dotnet publish -c Release
      
  4. Copia il pacchetto di deployment nella VM:

    1. Copia il contenuto della cartella publish nella directory home sulla VM:

      gcloud compute scp --recurse CloudDemo.MvcCore\bin\Release\net6.0\publish clouddemo-1:
      
    2. Connettiti alla VM tramite SSH.

    3. Sulla VM, crea una cartella /var/www/clouddemo e copia i file dell'applicazione in questa cartella:

      sudo mkdir -p /var/www/clouddemo
      sudo chown -R www-data:www-data /var/www/clouddemo
      sudo cp -r publish/* /var/www/clouddemo
      
    4. Registra l'applicazione come unità di sistema:

      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. Sul computer locale, apri un browser web e vai al seguente indirizzo:

    http://LOADBALANCER_IP/
    

    Sostituisci LOADBALANCER_IP con l'indirizzo IP ottenuto dopo il deployment del bilanciatore del carico.

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

Esegui la pulizia

Una volta completato il tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che smettano di utilizzare la quota e vengano addebitati dei costi. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.

    Delete a Google Cloud project:

    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). Puoi eliminare le istanze VM solo dopo aver eliminato tutte queste risorse.

Passaggi successivi