Tutorial ini menjelaskan cara men-deploy aplikasi web .NET ke Compute Engine.
Tutorial ini ditujukan untuk developer dan engineer DevOps yang memiliki pengetahuan dasar tentang Microsoft .NET dan Compute Engine.
Tujuan
Deploy aplikasi web ASP.NET Core yang menggunakan .NET 6 dan berjalan di Linux 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.
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
- 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.
-
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.
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.
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_IDdengan ID project Google Cloud Anda.ZONEdengan 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
Buat instance VM:
Untuk membuat VM Linux, lakukan langkah-langkah berikut:
Buat skrip startup untuk instance VM. Skrip ini berjalan selama inisialisasi VM dan menginstal 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.shBuat instance VM dan gunakan
startup.shsebagai skrip startup: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
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 finishedatauStartup 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:
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
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 / ` --port 5000 gcloud compute instance-groups set-named-ports clouddemo-1 --named-ports=http:5000Buat 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)
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
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
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
Buka konsol PowerShell.
Download dan unzip atau clone repositori contoh dari github:
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Buat paket deployment:
Beralih ke direktori yang berisi aplikasi contoh:
cd dotnet-docs-samples\applications\clouddemo\netcore
Membangun solusi:
dotnet publish -c Release
Salin paket deployment ke VM:
Salin konten folder
publishke direktori beranda Anda di VM:gcloud compute scp --recurse CloudDemo.MvcCore\bin\Release\net6.0\publish clouddemo-1:
Di VM, buat folder
/var/www/clouddemodan salin file aplikasi ke dalam folder ini:sudo mkdir -p /var/www/clouddemo sudo chown -R www-data:www-data /var/www/clouddemo sudo cp -r publish/* /var/www/clouddemo
Daftarkan aplikasi sebagai 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
Di komputer lokal Anda, buka browser web dan buka alamat berikut:
http://
LOADBALANCER_IP/Ganti
LOADBALANCER_IPdengan 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
- Pelajari lebih lanjut cara membuat dan menjalankan virtual machine di infrastruktur Google.
- Tinjau praktik terbaik dalam Google Cloud Framework yang Dirancang dengan Baik.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.