1. Tổng quan
ASP.NET Core là một khung nguồn mở và đa nền tảng mới dùng để xây dựng các ứng dụng hiện đại dựa trên đám mây và kết nối Internet bằng ngôn ngữ lập trình C#.
Trong phòng thí nghiệm này, bạn sẽ triển khai một ứng dụng ASP.NET Core đơn giản cho môi trường linh hoạt của App Engine. Lớp học lập trình này dựa trên lớp học lập trình Xây dựng và khởi chạy ứng dụng ASP.NET Core trong Google Cloud Shell. Bạn có thể thực hiện phòng thí nghiệm đó trước trước khi thử phòng thí nghiệm này.
Các ứng dụng Google App Engine rất dễ tạo, duy trì và mở rộng quy mô khi nhu cầu lưu lượng truy cập và lưu trữ dữ liệu của bạn thay đổi. Khi dùng App Engine, bạn sẽ không cần phải quản lý máy chủ. Bạn chỉ cần tải ứng dụng của mình lên và ứng dụng đã sẵn sàng hoạt động.
Các ứng dụng App Engine tự động mở rộng quy mô dựa trên lưu lượng truy cập đến. App Engine vốn hỗ trợ cân bằng tải, dịch vụ vi mô, uỷ quyền, cơ sở dữ liệu SQL và NoSQL, Memcache, phân chia lưu lượng truy cập, ghi nhật ký, tìm kiếm, tạo phiên bản, triển khai và khôi phục, cũng như quét bảo mật, tất cả đều có khả năng tuỳ chỉnh cao.
Các môi trường của App Engine, môi trường tiêu chuẩn và môi trường linh hoạt hỗ trợ nhiều ngôn ngữ lập trình, bao gồm C#, Java, Python, PHP, Node.js, Go, v.v. Hai môi trường này mang lại cho người dùng sự linh hoạt tối đa trong cách hoạt động của ứng dụng, do mỗi môi trường có những thế mạnh nhất định. Để biết thêm thông tin, hãy đọc bài viết Chọn môi trường App Engine.
Kiến thức bạn sẽ học được
- Cách đóng gói một ứng dụng ASP.NET Core đơn giản dưới dạng vùng chứa Docker.
- Cách triển khai ứng dụng ASP.NET Core đơn giản cho App Engine.
Bạn cần có
Bạn sẽ sử dụng hướng dẫn này như thế nào?
Bạn đánh giá thế nào về trải nghiệm sử dụng Google Cloud Platform?
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tiến độ riêng
- Đă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.
- 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 và bạn có thể cập nhật chuỗi này bất cứ lúc nào.
- Mã dự án phải là duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này 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 chiếu đến Mã dự án (và mã này thường được xác định là
PROJECT_ID
). Vì vậy, nếu không thích, bạn có thể tạo một mã ngẫu nhiên khác hoặc bạn có thể thử mã của riêng mình để xem có mã này chưa. Sau đó, video sẽ được "đóng băng" sau khi tạo dự án. - Có giá trị thứ ba là 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.
- Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên/API trên Cloud. 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 để bạn không phải chịu thanh toán ngoài hướng dẫn này, hãy làm theo mọi thao tác "dọn dẹp" hướng dẫn ở cuối lớp học lập trình. 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.
Khởi động 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, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trong Đám mây.
Kích hoạt Cloud Shell
- Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell .
Nếu trước đây bạn chưa từng khởi động Cloud Shell, thì bạn sẽ thấy một màn hình trung gian (dưới màn hình đầu tiên) mô tả về ứng dụng này. Nếu trường hợp đó xảy ra, hãy nhấp vào Tiếp tục (và bạn sẽ không thấy thông báo đó nữa). Màn hình một lần đó sẽ có dạng như sau:
Quá trình cấp phép và kết nối với Cloud Shell chỉ mất vài phút.
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 5 GB ổn định và chạy 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. Trong lớp học lập trình này, đa số mọi người đều có thể thực hiện chỉ bằng một trình duyệt hoặc Chromebook.
Sau khi kết nối với Cloud Shell, bạn sẽ thấy mình đã được xác thực và dự án đã được đặt thành mã dự án.
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list
Kết quả lệnh
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn:
gcloud config list project
Kết quả lệnh
[core] project = <PROJECT_ID>
Nếu chưa, bạn có thể thiết lập chế độ này bằng lệnh sau:
gcloud config set project <PROJECT_ID>
Kết quả lệnh
Updated property [core/project].
3. Tạo ứng dụng ASP.NET Core trong Cloud Shell
Trong lời nhắc Cloud Shell, bạn có thể xác minh rằng công cụ dòng lệnh dotnet
đã được cài đặt bằng cách liệt kê các SDK .NET đã cài đặt:
dotnet --list-sdks
Tiếp theo, hãy tạo ứng dụng web ASP.NET Core mới có khung mục tiêu là netcoreapp3.1
:
dotnet new mvc -o HelloWorldAspNetCore -f netcoreapp3.1
Thao tác này sẽ tạo một dự án và khôi phục các phần phụ thuộc của dự án đó. Bạn sẽ thấy một thông báo tương tự như bên dưới.
Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.
Restore succeeded.
4. Chạy ứng dụng ASP.NET Core
Chúng ta gần như đã sẵn sàng chạy ứng dụng. Chuyển đến thư mục ứng dụng.
cd HelloWorldAspNetCore
Cuối cùng, hãy chạy ứng dụng.
dotnet run --urls=http://localhost:8080
Ứng dụng bắt đầu nghe trên cổng 8080.
Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.
Để xác minh rằng ứng dụng đang chạy, nhấp vào nút xem trước trên web ở trên cùng bên phải và chọn "Xem trước trên cổng 8080".
Bạn sẽ thấy trang web ASP.NET Core mặc định:
Sau khi bạn xác minh rằng ứng dụng đang chạy, hãy nhấn tổ hợp phím Ctrl+C để tắt ứng dụng.
5. Phát hành ứng dụng ASP.NET Core
Bây giờ, hãy xuất bản ứng dụng để lấy DLL độc lập bằng lệnh dotnet publish
.
dotnet publish -c Release
Thao tác chạy publish
sẽ hiển thị một số thông báo có DLL được xuất bản thành công ở cuối quá trình.
...
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. Tạo app.yaml cho App Engine linh hoạt
Tệp app.yaml
mô tả cách triển khai ứng dụng cho App Engine, trong trường hợp này là môi trường linh hoạt của App Engine.
Trước tiên, hãy chuyển đến thư mục publish
. Tệp này phải nằm trong thư mục bin/Release
nhưng đường dẫn chính xác phụ thuộc vào phiên bản .NET:
cd bin/Release/netcoreapp3.1/publish/
Tạo một tệp app.yaml
bên trong thư mục publish
:
cat <<EOT >> app.yaml
env: flex
runtime: aspnetcore
EOT
Hãy lưu ý cách tệp app.yaml
chỉ định môi trường là flex
và thời gian chạy là aspnetcore
.
7. Triển khai linh hoạt cho App Engine
Bạn đã sẵn sàng triển khai ứng dụng lên App Engine một cách linh hoạt bằng gcloud
. Bên trong thư mục publish
, hãy chạy lệnh sau:
gcloud app deploy --version v0
Trong quá trình triển khai, bạn có thể được yêu cầu chọn một khu vực cho ứng dụng của mình. Chọn một khu vực nơi bạn muốn chạy ứng dụng.
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
Thao tác này sẽ tạo một hình ảnh cho ứng dụng của bạn trên đám mây, lưu hình ảnh đó vào Google Container Registry và triển khai cho App Engine. Trong quá trình triển khai, bạn có thể thấy hình ảnh vùng chứa đang được tạo:
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
Cuối cùng, bạn sẽ thấy ứng dụng đã được triển khai.
...
Deployed service [default] to [https://<project-id>.appspot.com]
Sau khi bạn đã triển khai ứng dụng,hãy truy cập vào ứng dụng bằng cách mở URL http://<project-id>.appspot.com
trong trình duyệt web.
Bạn sẽ thấy trang web ASP.NET Core mặc định trong thẻ mới.
Bạn cũng có thể xem hình ảnh vùng chứa được tạo cho bạn trên đám mây. Trong Cloud Console, hãy chuyển đến phần Container Registry > Images và sau đó trong thư mục appengine, bạn sẽ thấy hình ảnh cho ứng dụng của mình.
8. Triển khai phiên bản mới của dịch vụ
Tại một số thời điểm, ứng dụng mà bạn đã triển khai phát hành công khai sẽ yêu cầu sửa lỗi hoặc bổ sung tính năng. App Engine giúp bạn triển khai phát hành công khai phiên bản mới mà không ảnh hưởng đến người dùng.
Trước tiên, hãy cùng sửa đổi ứng dụng. Mở trình soạn thảo mã của Cloud Shell.
Chuyển đến Index.cshtml
trong thư mục Views/Home
của HelloWorldAspNetCore
rồi cập nhật thông báo mặc định thành:
Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core on Google Cloud Platform!
Lưu nội dung thay đổi rồi quay lại Cloud Shell. Bên trong HelloWorldAspNetCore,
, hãy xuất bản ứng dụng để lấy một DLL độc lập.
dotnet publish -c Release
Chuyển đến thư mục xuất bản.
cd bin/Release/netcoreapp3.1/publish/
Bạn hiện có thể triển khai phiên bản mới của ứng dụng (v1
trong trường hợp này).
gcloud app deploy --version v1
Sau khi triển khai phiên bản này, bạn có thể chuyển đến phần Phiên bản App Engine trên Google Cloud Console để xem phiên bản mới của ứng dụng phân phát tất cả lưu lượng truy cập cùng thông báo mới.
9. Trang tổng quan và phân tách lưu lượng truy cập
Trong App Engine, dưới phần Trang tổng quan, bạn có thể thấy một số trang tổng quan dành cho ứng dụng của mình về độ trễ, CPU, v.v. Hãy tự khám phá các trang tổng quan đó.
Trong phần Phiên bản, bạn có thể xem các phiên bản đã triển khai của ứng dụng và bạn có thể phân chia lưu lượng truy cập giữa các phiên bản khác nhau trong phần Phân tách lưu lượng truy cập. Hãy phân chia lưu lượng truy cập giữa hai phiên bản:
10. Xin chúc mừng!
Nghiên cứu
Đã đến lúc ngừng cung cấp ứng dụng để tiết kiệm chi phí và trở thành một công dân tốt về công nghệ đám mây.
Chuyển đến phần Phiên bản của App Engine.
Chọn phiên bản rồi dừng phiên bản đó.
Sau khi dừng phiên bản này, các phiên bản sao lưu sẽ bị xoá và bạn sẽ thấy số lượng phiên bản giảm xuống bằng 0.
Nội dung đã đề cập
Có! Bạn đã tạo một ứng dụng ASP.NET Core, đóng gói ứng dụng đó dưới dạng một vùng chứa Docker và triển khai ứng dụng đó cho Google App Engine linh hoạt.
- Cách đóng gói một ứng dụng ASP.NET Core đơn giản dưới dạng vùng chứa Docker.
- Cách triển khai ứng dụng ASP.NET Core đơn giản cho App Engine.
Các bước tiếp theo
- Tìm hiểu thêm về Windows trên Google Cloud Platform.
- Tìm hiểu thêm về .NET trên Google Cloud Platform.
- Tìm hiểu thêm về SQL Server trên Google Cloud Platform.
- Tìm hiểu thêm về Cloud Tools cho Visual Studio.
- Tìm hiểu thêm về Cloud Tools cho PowerShell.
Giấy phép
Tác phẩm này được cấp phép theo Giấy phép chung Ghi nhận tác giả Creative Commons 2.0.