Xin chào Cloud Run bằng C#

1. Giới thiệu

89eb4723767d4525.pngS

Cloud Run là một nền tảng được quản lý cho phép bạn chạy các vùng chứa không có trạng thái có thể gọi qua các yêu cầu HTTP. Cloud Run là giải pháp không máy chủ: loại bỏ mọi hoạt động quản lý cơ sở hạ tầng, vì vậy, bạn có thể tập trung vào công việc quan trọng nhất — xây dựng các ứng dụng tuyệt vời.

Giải pháp này được xây dựng dựa trên Knative, cho phép bạn chọn chạy các vùng chứa được quản lý hoàn toàn bằng Cloud Run hoặc trong cụm Google Kubernetes Engine bằng Cloud Run trên GKE.

Mục tiêu của lớp học lập trình này là giúp bạn xây dựng hình ảnh vùng chứa và triển khai hình ảnh đó cho Cloud Run.

2. Thiết lập và yêu cầu

Thiết lập môi trường theo tiến độ riêng

  1. Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

295004821bab6a87.pngS

37d264871000675d.png.

96d86d3d5655cdbe.png.

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn luôn có thể cập nhật ứng dụng.
  • Mã dự án là duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham khảo Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử cách riêng của mình để xem có thể sử dụng hay không. Bạn không thể thay đổi mã này sau bước này và mã vẫn giữ nguyên trong thời gian của dự án.
  • Đối với thông tin của bạn, có giá trị thứ ba, Project Number (Số dự án), mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
  1. Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh phát sinh việc thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạn đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

Google Cloud Shell

Mặc dù bạn có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, chúng ta sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trong Đám mây.

Cloud Shell là môi trường phát triển và vận hành trực tuyến, có thể truy cập từ bất cứ đâu bằng trình duyệt của bạn. Bạn có thể quản lý tài nguyên của mình bằng thiết bị đầu cuối trực tuyến được tải trước bằng các tiện ích như công cụ dòng lệnh gcloud, kubectl, v.v. Bạn cũng có thể phát triển, xây dựng, gỡ lỗi và triển khai các ứng dụng trên đám mây bằng Trình chỉnh sửa Cloud Shell trực tuyến.

Máy ảo này chứa tất cả các công cụ phát triển mà bạn cần. Dịch vụ này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trực tiếp trong Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Tức là tất cả những gì bạn cần để thực hiện lớp học lập trình này là một trình duyệt (vâng, trình duyệt này hoạt động trên Chromebook).

  • Để kích hoạt Cloud Shell trong Bảng điều khiển Cloud, bạn chỉ cần nhấp vào Kích hoạt Cloud Shell :

cb81e7c8e34bc8d.png

Nếu đây là lần đầu tiên khởi động Cloud Shell, bạn sẽ thấy một màn hình trung gian mô tả về Cloud Shell. Nếu bạn nhìn thấy màn hình trung gian, hãy nhấp vào Tiếp tục

bfde7b083abc9544.png

Sẽ chỉ mất vài giây để cung cấp môi trường :

cbb597d2be277a14.png

Sau khi kết nối với Cloud Shell, bạn sẽ thấy mình đã được xác thực :

gcloud auth list

Kết quả lệnh

Credentialed Accounts

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

Dự án này cũng phải được đặt thành PROJECT_ID (giả sử bạn đã chọn một dự án trong bảng điều khiển web) :

gcloud config list project

Kết quả lệnh

[core]
project = <PROJECT_ID>

Nếu vì lý do nào đó mà dự án không được thiết lập, chỉ cần phát hành lệnh sau:

gcloud config set project <PROJECT_ID>

Bạn đang tìm PROJECT_ID? Hãy xem trình đơn thả xuống ở đầu Cloud Console :

2c7a57249d954735.pngS

Bạn cũng có thể xem thông tin chi tiết về dự án bằng cách sử dụng phần "Cài đặt và tiện ích" mục:

791f101797cfef39.png.

Cloud Shell cũng đặt một số biến môi trường theo mặc định. Điều này có thể hữu ích khi bạn chạy các lệnh sau này.

echo $GOOGLE_CLOUD_PROJECT

Kết quả lệnh

<PROJECT_ID>
  • Cuối cùng, bạn có thể đặt vùng mặc định :
gcloud config set compute/zone us-central1-f

Bạn có thể chọn các vùng khác nhau. Để biết thêm thông tin, hãy xem Khu vực và Vùng.

Bật Cloud Run API

Trên Cloud Shell, hãy bật Cloud Run API :

gcloud services enable run.googleapis.com

Thao tác này sẽ tạo ra một thông báo thành công tương tự như thông báo sau :

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

3. Viết ứng dụng mẫu

Chúng ta sẽ xây dựng một ứng dụng ASP.NET C# đơn giản phản hồi các yêu cầu HTTP.

Để tạo ứng dụng, hãy dùng công cụ dòng lệnh dotnet trong Cloud Shell:

dotnet new web -o helloworld-csharp

Đổi thành thư mục helloworld-csharp:

cd helloworld-csharp

Tiếp theo, hãy cập nhật Program.cs để khớp với thông tin sau:

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();

Mã này tạo một máy chủ web cơ bản tiếp nhận trên cổng do biến môi trường PORT xác định và phản hồi bằng Hello World.

Bạn có thể kiểm thử ứng dụng bằng cách chạy ứng dụng trên máy trong Cloud Shell. Bạn sẽ thấy thiết bị đang nghe trên cổng 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. Triển khai lên Cloud Run

Triển khai ứng dụng của bạn trong Cloud Run bằng lệnh sau:

gcloud run deploy hello-world \
    --allow-unauthenticated \
    --region us-central1 \
    --source .
  • hello-world là tên dịch vụ.
  • Cờ allow-unauthenticated triển khai dịch vụ dưới dạng dịch vụ công khai mà không yêu cầu xác thực.
  • us-central1 là khu vực sẽ triển khai ứng dụng.
  • Cờ source xác định vị trí của nguồn cần tạo. Cloud Run sử dụng các gói bản dựng để tự động tạo vùng chứa từ mã nguồn.

Hãy chờ vài phút cho đến khi quá trình triển khai hoàn tất. Khi thành công, dòng lệnh sẽ hiển thị URL dịch vụ :

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

Giờ đây, bạn có thể truy cập vùng chứa đã triển khai bằng cách mở URL dịch vụ trong trình duyệt web :

85e7fbbd264444c9.png.

Xin chúc mừng! Bạn vừa triển khai một ứng dụng được đóng gói trong một hình ảnh vùng chứa lên Cloud Run. Cloud Run tự động mở rộng và điều chỉnh tỷ lệ hình ảnh vùng chứa theo chiều ngang để xử lý các yêu cầu đã nhận được, sau đó thu nhỏ lại khi nhu cầu giảm. Bạn chỉ phải thanh toán cho CPU, bộ nhớ và kết nối mạng được tiêu thụ trong quá trình xử lý yêu cầu.

5. Đã đến lúc dọn dẹp

Bạn có thể quyết định xoá dự án GCP của mình để tránh phát sinh phí. Theo đó, các tài nguyên được sử dụng trong dự án đó sẽ không còn tính phí, hoặc chỉ cần xoá dịch vụ Cloud Run:

gcloud run services delete helloworld

6. Tiếp theo là gì?

Bước tiếp theo bạn nên làm là Triển khai lên Cloud Run trên GKE.

Để biết thêm thông tin về cách xây dựng vùng chứa HTTP không có trạng thái phù hợp với Cloud Run từ nguồn mã và đẩy vùng chứa đó sang Container Registry, hãy xem: