Hello Cloud Run dengan C#

1. Pengantar

89eb4723767d4525.png

Cloud Run adalah platform terkelola yang memungkinkan Anda untuk menjalankan container stateless yang dapat dipanggil melalui permintaan HTTP. Cloud Run bersifat serverless. Platform ini memisahkan semua pengelolaan infrastruktur di lokasi lain, sehingga Anda dapat fokus pada hal terpenting, yakni membuat aplikasi yang andal.

Layanan ini dibangun dari Knative, sehingga Anda dapat memilih untuk menjalankan container secara terkelola sepenuhnya dengan Cloud Run, atau di cluster Google Kubernetes Engine dengan Cloud Run di GKE.

Tujuan codelab ini adalah agar Anda dapat membangun image container dan men-deploy-nya ke Cloud Run.

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.

295004821bab6a87.pngS

37d264871000675d.png

96d86d3d5655cdbe.pngS

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Google Cloud Shell

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

Cloud Shell adalah lingkungan operasi dan pengembangan online yang dapat diakses di mana saja dengan browser Anda. Anda dapat mengelola resource dengan terminal online yang telah dilengkapi dengan utilitas seperti alat command line gcloud, kubectl, dan lainnya. Anda juga dapat mengembangkan, membangun, men-debug, dan men-deploy aplikasi berbasis cloud menggunakan Cloud Shell Editor online.

Mesin virtual ini dimuat dengan semua alat pengembangan yang Anda butuhkan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan berjalan langsung di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Ini berarti bahwa semua yang Anda perlukan untuk codelab ini adalah browser (ya, ini berfungsi di Chromebook).

  • Untuk mengaktifkan Cloud Shell dari Konsol Cloud, cukup klik Activate Cloud Shell :

cb81e7c8e34bc8d.png

Jika ini pertama kalinya Anda memulai Cloud Shell, Anda akan melihat layar perantara yang menjelaskan apa itu Cloud Shell. Jika Anda melihat layar perantara, klik Lanjutkan

bfde7b083abc9544.png

Hanya perlu waktu beberapa detik untuk menyediakan lingkungan :

cbb597d2be277a14.png

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda telah diautentikasi :

gcloud auth list

Output perintah

Credentialed Accounts

ACTIVE: *
ACCOUNT: <my-account>@<mydomain>

Project juga harus sudah disetel ke PROJECT_ID (dengan asumsi Anda telah memilih project di konsol web) :

gcloud config list project

Output perintah

[core]
project = <PROJECT_ID>

Jika, untuk beberapa alasan, project belum disetel, cukup jalankan perintah berikut:

gcloud config set project <PROJECT_ID>

Mencari PROJECT_ID Anda? Lihat menu drop-down di bagian atas Cloud Console :

2c7a57249d954735.png

Anda juga dapat memeriksa detail proyek menggunakan alat "{i>Setting and utility<i}" :

791f101797cfef39.png

Cloud Shell juga menetapkan beberapa variabel lingkungan secara default, yang mungkin berguna saat Anda menjalankan perintah di masa mendatang.

echo $GOOGLE_CLOUD_PROJECT

Output perintah

<PROJECT_ID>
  • Terakhir, Anda dapat menetapkan zona default :
gcloud config set compute/zone us-central1-f

Anda dapat memilih zona yang berbeda. Untuk informasi selengkapnya, lihat Region & Zona.

Mengaktifkan Cloud Run API

Aktifkan Cloud Run API dari Cloud Shell:

gcloud services enable run.googleapis.com

Output akan menampilkan pesan seperti berikut yang menandakan bahwa proses berhasil :

Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.

3. Menulis aplikasi contoh

Kita akan membangun aplikasi C# ASP.NET sederhana untuk merespons permintaan HTTP.

Untuk membuat aplikasi Anda, gunakan alat command line dotnet di Cloud Shell:

dotnet new web -o helloworld-csharp

Ubah ke direktori helloworld-csharp:

cd helloworld-csharp

Selanjutnya, update Program.cs agar sesuai dengan yang berikut:

var builder = WebApplication.CreateBuilder(args);

var port = Environment.GetEnvironmentVariable("PORT") ?? "8080";
var url = $"http://0.0.0.0:{port}";
builder.WebHost.UseUrls(url);

var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

Kode ini menghasilkan server web dasar yang memantau port yang ditentukan oleh variabel lingkungan PORT dan membalas dengan Hello World.

Anda dapat menguji aplikasi dengan menjalankannya secara lokal di Cloud Shell. Anda akan melihatnya diproses di port 8080:

$ dotnet run
Using launch settings from /home/atameldev/helloworld-csharp/Properties/launchSettings.json...
Hosting environment: Development
Content root path: /home/atameldev/helloworld-csharp
Now listening on: http://0.0.0.0:8080
Application started. Press Ctrl+C to shut down.

4. Men-deploy ke Cloud Run

Deploy aplikasi Anda ke Cloud Run dengan perintah berikut:

gcloud run deploy hello-world \
    --allow-unauthenticated \
    --region us-central1 \
    --source .
  • hello-world adalah nama layanan.
  • Tanda allow-unauthenticated men-deploy layanan sebagai layanan yang tersedia untuk publik tanpa persyaratan autentikasi.
  • us-central1 adalah region tempat aplikasi akan di-deploy.
  • Tanda source menentukan lokasi sumber yang akan dibangun. Cloud Run menggunakan buildpack untuk membuat container dari kode sumber secara otomatis.

Tunggu beberapa menit sampai proses deployment selesai. Jika berhasil, command line akan menampilkan URL layanan:

Service [hello-world] revision [hello-world-00001-yos] has been deployed and is serving 100 percent of traffic.
Service URL: https://helloworld-wdl7fdwaaa-uc.a.run.app

Sekarang Anda dapat melihat container yang telah di-deploy dengan membuka URL layanan di browser web :

85e7fbbd264444c9.png

Selamat! Anda telah men-deploy aplikasi yang dikemas dalam image container ke Cloud Run. Cloud Run meningkatkan skala image container secara otomatis dan horizontal untuk menangani permintaan yang diterima, lalu menurunkan skala saat permintaan berkurang. Anda hanya membayar untuk CPU, memori, dan jaringan yang terpakai selama penanganan permintaan.

5. Saatnya melakukan pembersihan

Anda dapat memutuskan untuk menghapus project GCP Anda untuk menghindari timbulnya biaya, yang akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut, atau cukup menghapus layanan Cloud Run:

gcloud run services delete helloworld

6. Apa langkah selanjutnya?

Langkah berikutnya yang baik adalah Men-deploy ke Cloud Run di GKE.

Untuk informasi selengkapnya tentang mem-build container HTTP stateless yang cocok untuk Cloud Run dari kode sumber dan mengirimkannya ke Container Registry, buka: