Men-deploy aplikasi ASP.NET ke Compute Engine

Tutorial ini menjelaskan cara men-deploy aplikasi web .NET Framework ke Compute Engine.

Tutorial ini ditujukan untuk developer dan engineer DevOps yang memiliki pengetahuan dasar tentang Microsoft .NET dan Compute Engine.

Tujuan

Men-deploy aplikasi web Model-View-Controller (MVC) ASP.NET yang menggunakan .NET Framework 4 dan berjalan di Windows ke satu instance Compute Engine.

Tutorial ini menunjukkan cara menyelesaikan tugas berikut untuk mencapai tujuan Anda:

  • Men-deploy VM Compute Engine
  • Menyiapkan load balancing
  • Men-deploy aplikasi ASP.NET

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, baca bagian Pembersihan.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy 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

Men-deploy VM Compute Engine

Bagian ini menunjukkan cara membuat VM Linux, atau VM Windows Server yang menjalankan server web Microsoft Internet Information Services (IIS) di Compute Engine.

  1. Tetapkan nilai default untuk project ID dan zona Compute Engine Anda. Cara ini akan menghemat waktu Anda.

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

    Ganti kode berikut:

    • PROJECT_ID dengan ID project Google Cloud Anda.
    • ZONE dengan nama zona yang akan Anda gunakan untuk membuat resource. Jika Anda tidak yakin zona mana yang harus dipilih, gunakan zona yang secara geografis paling dekat dengan Anda.

    Contoh:

    gcloud config set project test-project-12345
    gcloud config set compute/zone us-central1-a
    
  2. Buat instance VM:

    Untuk membuat VM Windows Server yang menjalankan IIS, lakukan hal berikut:

    1. Buat skrip startup untuk instance VM. Skrip ini akan berjalan selama inisialisasi VM dan menginstal 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. Buat instance VM dan jalankan skrip startup 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. Pantau proses inisialisasi VM dengan melihat output port serialnya:

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

    Tunggu sekitar 5 menit hingga Anda melihat output Instance setup finished atau Startup finished, lalu tekan Ctrl+C. Pada tahap ini, penginstalan prasyarat telah selesai dan instance VM siap digunakan.

Menyiapkan load balancing

Untuk membuat aplikasi ASP.NET Anda tersedia di internet, Anda harus menggunakan load balancer HTTPS. Untuk mengaitkan instance VM dengan load balancer, buat grup instance dan tetapkan grup instance ini ke load balancer:

  1. Buat grup instance tidak terkelola dan tambahkan instance VM:

    gcloud compute instance-groups unmanaged create clouddemo-1
    gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
    
  2. Buat health check yang memeriksa apakah server web berjalan:

    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. Buat layanan backend load balancer yang menggunakan health check HTTP dan grup instance yang Anda buat sebelumnya:

    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. Buat front-end untuk load balancer:

    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. Buat aturan firewall yang mengizinkan load balancer mengirim permintaan HTTP ke instance yang telah diberi anotasi dengan 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. Cari alamat IP load balancer:

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

    Catat alamat IP-nya. Anda akan membutuhkannya nanti.

Men-deploy aplikasi ASP.NET

  1. Buka konsol PowerShell.

  2. Download dan unzip atau clone repositori contoh dari github:

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    
  3. Buat paket deployment:

    1. Beralih ke direktori yang berisi aplikasi contoh:

      cd dotnet-docs-samples\applications\clouddemo\net4
      
    2. Memulihkan dependensi NuGet:

      nuget restore
      
    3. Bangun solusi dan gunakan profil publikasi PackageProfile untuk membuat paket deployment WebDeploy:

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

      Folder CloudDemo.Mvc\bin kini berisi file CloudDemo.Mvc.zip.

  4. Salin paket deployment ke VM:

    1. Buat nama pengguna dan sandi untuk instance VM.
    2. Hubungkan ke VM menggunakan Desktop Jarak Jauh dan login menggunakan nama pengguna dan sandi yang dibuat di langkah sebelumnya.
    3. Salin file CloudDemo.Mvc.zip dari folder CloudDemo.Mvc\bin ke lokasi sementara di instance VM.
    4. Dalam sesi Desktop Jauh, klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
    5. Konfirmasi prompt elevasi dengan mengklik Yes.
    6. Deploy paket deployment:

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

      Ganti PACKAGE dengan jalur ke paket deployment.

  5. Di komputer lokal Anda, buka browser web dan buka alamat berikut:

    http://LOADBALANCER_IP/
    

    Ganti LOADBALANCER_IP dengan alamat IP yang Anda dapatkan setelah men-deploy load balancer.

    Sekarang Anda akan melihat aplikasi demo dan judul Aplikasi ini berjalan di Compute Engine.

Pembersihan

Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat sehingga resource tersebut berhenti menggunakan kuota dan dikenai biaya. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.

Menghapus project

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.

    Menghapus Google Cloud project:

    gcloud projects delete PROJECT_ID

Menghapus resource satu per satu

Anda harus menghapus semua resource yang dibuat untuk project ini satu per satu (misalnya: grup instance, health check, layanan backend, proxy http, dan aturan penerusan). Anda tidak dapat menghapus instance VM sebelum menghapus semua resource ini.

Langkah berikutnya