Men-deploy aplikasi ASP.NET Core ke App Engine

1. Ringkasan

ASP.NET Core adalah framework open source dan lintas platform baru untuk membangun aplikasi modern berbasis cloud dan terhubung internet menggunakan bahasa pemrograman C#.

Di lab ini, Anda akan men-deploy aplikasi ASP.NET Core sederhana ke lingkungan fleksibel App Engine. Codelab ini dibuat berdasarkan codelab Membangun dan meluncurkan aplikasi ASP.NET Core dari Google Cloud Shell. Sebaiknya lakukan lab tersebut terlebih dahulu sebelum mencoba lab ini.

Aplikasi Google App Engine mudah dibuat, dikelola, dan diskalakan sesuai kebutuhan traffic dan penyimpanan data Anda. Dengan App Engine, Anda tidak perlu mengelola server. Anda cukup mengupload aplikasi dan siap digunakan.

Aplikasi App Engine diskalakan secara otomatis berdasarkan traffic masuk. App Engine secara native mendukung load balancing, microservice, otorisasi, database SQL dan NoSQL, Memcache, pemisahan traffic, logging, penelusuran, pembuatan versi, peluncuran dan roll back, serta pemindaian keamanan, yang semuanya sangat mudah disesuaikan.

Lingkungan App Engine, lingkungan standar, dan lingkungan fleksibel, mendukung banyak bahasa pemrograman, termasuk C#, Java, Python, PHP, Node.js, Go, dan banyak lagi. Kedua lingkungan ini memberi pengguna fleksibilitas maksimum terkait perilaku aplikasi mereka, karena setiap lingkungan memiliki kekuatan tertentu. Untuk informasi selengkapnya, baca Memilih Lingkungan App Engine.

Yang akan Anda pelajari

  • Cara memaketkan aplikasi ASP.NET Core sederhana sebagai container Docker.
  • Cara men-deploy aplikasi ASP.NET Core sederhana ke App Engine.

Yang Anda butuhkan

  • Project Google Cloud Platform
  • Browser, seperti Chrome atau Firefox

Bagaimana Anda akan menggunakan tutorial ini?

Hanya membacanya Membacanya dan menyelesaikan latihan

Bagaimana penilaian Anda terhadap pengalaman dengan Google Cloud Platform?

Pemula Menengah Mahir

2. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API, dan Anda dapat memperbaruinya kapan saja.
  • Project ID harus unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis menghasilkan string unik; biasanya Anda tidak peduli dengan kata-katanya. Pada sebagian besar codelab, Anda harus mereferensikan Project ID (dan biasanya diidentifikasi sebagai PROJECT_ID). Jadi, jika Anda tidak menyukainya, buat ID acak lain, atau, Anda dapat mencoba sendiri dan melihat apakah tersedia. Kemudian file akan "dibekukan" setelah project dibuat.
  • Ada nilai ketiga, Nomor Project yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan API/resource Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Untuk menonaktifkan resource agar tidak menimbulkan penagihan di luar tutorial ini, ikuti petunjuk "pembersihan" yang ada di akhir codelab. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mulai Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.

Mengaktifkan Cloud Shell

  1. Dari Cloud Console, klik Aktifkan Cloud Shell 4292cbf4971c9786.pngS.

bce75f34b2c53987.png

Jika belum pernah memulai Cloud Shell, Anda akan melihat layar perantara (di paruh bawah) yang menjelaskan apa itu Cloud Shell. Jika demikian, klik Lanjutkan (dan Anda tidak akan pernah melihatnya lagi). Berikut tampilan layar sekali-tampil tersebut:

70f315d7b402b476.pngS

Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.

fbe3a0674c982259.png

Mesin virtual ini dimuat dengan semua alat pengembangan yang Anda butuhkan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan hanya dengan browser atau Chromebook.

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda.

  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list

Output perintah

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
gcloud config list project

Output perintah

[core]
project = <PROJECT_ID>

Jika tidak, Anda dapat menyetelnya dengan perintah ini:

gcloud config set project <PROJECT_ID>

Output perintah

Updated property [core/project].

3. Membuat aplikasi ASP.NET Core di Cloud Shell

Di perintah Cloud Shell, Anda dapat memastikan bahwa alat command line dotnet sudah terinstal dengan mencantumkan .NET SDK yang terinstal:

dotnet --list-sdks

Selanjutnya, buat aplikasi web ASP.NET Core skeleton baru dengan framework target netcoreapp3.1:

dotnet new mvc -o HelloWorldAspNetCore -f netcoreapp3.1

Perintah ini akan membuat project dan memulihkan dependensinya. Anda seharusnya melihat pesan yang mirip seperti di bawah ini.

Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.

Restore succeeded.

4. Menjalankan aplikasi ASP.NET Core

Aplikasi hampir siap untuk dijalankan. Buka folder aplikasi.

cd HelloWorldAspNetCore

Terakhir, jalankan aplikasi.

dotnet run --urls=http://localhost:8080

Aplikasi mulai memproses di port 8080.

Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.

Untuk memastikan aplikasi sudah berjalan, klik tombol pratinjau web di kanan atas, lalu pilih 'Preview on port 8080'.

Capture.PNG

Anda akan melihat halaman web ASP.NET Core default:

f579a9baedc108a9.png

Setelah Anda memverifikasi bahwa aplikasi berjalan, tekan Ctrl+C untuk mematikan aplikasi.

5. Memublikasikan aplikasi ASP.NET Core

Sekarang, publikasikan aplikasi untuk mendapatkan DLL mandiri menggunakan perintah dotnet publish.

dotnet publish -c Release

Menjalankan publish akan menampilkan beberapa pesan beserta DLL yang berhasil dipublikasikan di akhir proses.

...
  HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.dll
  HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.Views.dll
  HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/publish/

6. Membuat app.yaml untuk App Engine secara fleksibel

File app.yaml menjelaskan cara men-deploy aplikasi ke App Engine, dalam hal ini, lingkungan fleksibel App Engine.

Pertama, buka folder publish. Folder seharusnya berada di folder bin/Release, tetapi jalur persisnya bergantung pada versi .NET:

cd bin/Release/netcoreapp3.1/publish/

Buat file app.yaml di dalam folder publish:

cat <<EOT >> app.yaml
env: flex
runtime: aspnetcore
EOT

Perhatikan cara file app.yaml menentukan lingkungan sebagai flex dan runtime sebagai aspnetcore.

7. Men-deploy ke App Engine secara fleksibel

Anda sudah siap men-deploy aplikasi ke App Engine yang fleksibel menggunakan gcloud. Di dalam direktori publish, jalankan perintah berikut:

gcloud app deploy --version v0

Selama deployment, Anda mungkin akan diminta memilih region untuk aplikasi. Pilih region tempat Anda ingin menjalankan aplikasi.

Please choose a region for your application. After choosing a region, 
you cannot change it. Which region would you like to choose?
 [1] europe-west   (supports standard and flexible)
 [2] us-central    (supports standard and flexible)
 [3] us-east1      (supports standard and flexible)
 [4] asia-northeast1 (supports standard and flexible)
 [5] cancel

Tindakan ini akan membuat image untuk aplikasi Anda di cloud, menyimpan image tersebut ke Google Container Registry, dan men-deploy-nya ke App Engine. Selama deployment, Anda sebenarnya bisa melihat image container sedang dibangun:

Operation completed over 1 objects/571.8 KiB.
BUILD
Step #0: Pulling image: gcr.io/gcp-runtimes/aspnetcorebuild@sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb
Step #0: sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb: Pulling from gcp-runtimes/aspnetcorebuild

Pada akhirnya, Anda akan melihat bahwa aplikasi telah di-deploy.

...
Deployed service [default] to [https://<project-id>.appspot.com]

Setelah Anda men-deploy aplikasi,kunjungi dengan membuka URL http://<project-id>.appspot.com di browser web Anda.

Anda akan melihat halaman web ASP.NET Core default di tab baru.

f579a9baedc108a9.png

Anda juga dapat melihat image container yang dibuat untuk Anda di cloud. Di konsol cloud, buka Container Registry > Gambar, lalu di folder appengine, Anda akan melihat gambar untuk aplikasi Anda.

de788f4949d0c5a.png

8. Men-deploy versi baru layanan Anda

Pada titik tertentu, aplikasi yang telah Anda deploy ke produksi akan memerlukan perbaikan bug atau fitur tambahan. App Engine hadir untuk membantu Anda men-deploy versi baru ke produksi tanpa memengaruhi pengguna Anda.

Pertama, mari kita ubah aplikasinya. Buka editor kode dari Cloud Shell.

868c4f615e2331fe.pngS

Buka Index.cshtml pada folder Views/Home dari HelloWorldAspNetCore dan perbarui pesan default menjadi ini:

Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core on Google Cloud Platform!

Simpan perubahan, lalu kembali ke Cloud Shell. Di dalam HelloWorldAspNetCore,, publikasikan aplikasi untuk mendapatkan DLL mandiri.

dotnet publish -c Release

Buka direktori publikasi.

cd bin/Release/netcoreapp3.1/publish/

Sekarang Anda dapat men-deploy versi baru aplikasi (dalam kasus ini v1).

gcloud app deploy --version v1

Setelah di-deploy, Anda dapat membuka bagian versi App Engine di Konsol Google Cloud untuk melihat versi baru aplikasi Anda yang melayani semua traffic dengan pesan baru ini.

8cc0cc992b4e07ed.pngS

9. Dasbor dan Pemisahan Traffic

Di App Engine, pada bagian Dashboard, Anda dapat melihat sejumlah dasbor untuk aplikasi Anda untuk latensi, CPU, dll. Anda dapat menjelajahinya sendiri.

5c879431935b080d.png

Pada bagian Versi, Anda dapat melihat versi aplikasi yang di-deploy dan dapat membagi traffic antara versi yang berbeda di bagian Pembagian Traffic. Mari kita bagi traffic menjadi dua versi:

176a2e22e755b6d3.pngS

10. Selamat!

Cleanup

Saatnya mematikan aplikasi untuk menghemat biaya dan menjadi pengguna cloud yang baik secara keseluruhan.

Buka bagian versi di App Engine.

7e9b3b4406e785b9.pngS

Pilih versi dan hentikan.

7f80d9ff2c959e0.pngS

Setelah versi dihentikan, instance pendukung akan dihapus dan Anda akan melihat jumlah instance menurun hingga nol.

29f3cb5c71225b2d.pngS

Yang telah kita bahas

Seperti itulah! Anda telah membuat aplikasi ASP.NET Core, memaketkannya sebagai container Docker, dan men-deploy-nya ke Google App Engine Fleksibel.

  • Cara memaketkan aplikasi ASP.NET Core sederhana sebagai container Docker.
  • Cara men-deploy aplikasi ASP.NET Core sederhana ke App Engine.

Langkah Berikutnya

Lisensi

Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.