1. Giới thiệu

Cloud Run là một nền tảng tính toán được quản lý, cho phép bạn chạy các vùng chứa không trạng thái có thể gọi được bằng các yêu cầu HTTP. Nền tảng này được xây dựng dựa trên dự án nguồn mở Knative, cho phép chuyển đổi các khối lượng công việc của bạn trên nhiều nền tảng. Cloud Run là nền tảng không máy chủ: nền tảng này trừu tượng hoá mọi hoạt động quản lý cơ sở hạ tầng, nhờ đó, bạn có thể tập trung vào những điều quan trọng nhất – xây dựng các ứng dụng tuyệt vời.
Kiến thức bạn sẽ học được
- Cách tạo ứng dụng Streamlit "Hello World".
- Kiểm thử ứng dụng bằng cách chạy ứng dụng Streamlit trước khi triển khai.
- Cloud Buildpacks và cách sự hiện diện của
streamlittrongrequirements.txtcho phép không cần Dockerfile. - Cách triển khai ứng dụng Streamlit lên Cloud Run.
2. Thiết lập và yêu cầu
Thiết lập môi trường tự học
- Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một 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ị cho những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật tên này.
- Mã dự án là mã duy nhất trên tất cả các dự án của Google Cloud và là mã bất biến (không thể thay đổi sau khi đã đặt). Cloud Console tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. 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 (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ã ngẫu nhiên khác. Ngoài ra, bạn có thể thử mã của riêng mình và xem mã đó có dùng được hay không. Bạn không thể thay đổi mã này sau bước này và mã này sẽ tồn tại trong suốt thời gian của dự án. - Để bạn nắm được thông tin, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các API/tài nguyên trên Cloud. Việc tham gia lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh phát sinh chi phí thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyê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í trị giá 300 USD.
Bắt đầu 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 hướng dẫn này, bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trên Cloud.
Kích hoạt Cloud Shell
- Trên Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell

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

Quá trình cung cấp và kết nối với Cloud Shell chỉ mất vài phút.

Máy ảo này được tải tất cả các công cụ phát triển cần thiết. Máy ảo này cung cấp một thư mục chính liên tục có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và xác thực. Bạn có thể thực hiện hầu hết, nếu không phải là tất cả, công việc trong lớp học lập trình này bằng trình duyệt.
Sau khi kết nối với Cloud Shell, bạn sẽ thấy rằng mình đã được xác thực và dự án được đặt thành mã dự án của bạ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 không, bạn có thể đặt bằng lệnh sau:
gcloud config set project <PROJECT_ID>
Kết quả lệnh
Updated property [core/project].
3. Bật các API
Từ Cloud Shell, hãy bật các API Artifact Registry, Cloud Build và Cloud Run:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com
Lệnh này sẽ xuất ra một thông báo thành công tương tự như thông báo sau:
Operation "operations/..." finished successfully.
Bây giờ, bạn đã sẵn sàng bắt đầu làm việc và viết ứng dụng...
4. Viết ứng dụng
Trong bước này, bạn sẽ tạo một ứng dụng Python Streamlit "Hello World" phản hồi các yêu cầu HTTP.
Thư mục đang làm việc
Sử dụng Cloud Shell để tạo một thư mục đang làm việc có tên là helloworld-streamlit và chuyển sang thư mục đó:
mkdir ~/helloworld-streamlit && cd ~/helloworld-streamlit
main.py
Tạo một tệp có tên là main.py:
touch main.py
Chỉnh sửa tệp bằng trình chỉnh sửa dòng lệnh mà bạn muốn (nano, vim hoặc emacs) hoặc bằng cách nhấp vào nút Trình chỉnh sửa Cloud Shell:

Để chỉnh sửa trực tiếp tệp bằng Trình chỉnh sửa Cloud Shell, hãy sử dụng lệnh sau:
cloudshell edit main.py
main.py
import streamlit as st
st.title("Hello World! 👋🌎")
st.markdown(
"""
This is a demo Streamlit app.
Enter your name in the text box below and press a button to see some fun features in Streamlit.
"""
)
name = st.text_input("Enter your name:")
# Use columns to create buttons side by side
col1, col2 = st.columns(2)
with col1:
if st.button("Send balloons! 🎈"):
st.balloons()
st.write(f"Time to celebrate {name}! 🥳")
st.write("You deployed a Streamlit app! 👏")
with col2:
if st.button("Send snow! ❄️"):
st.snow()
st.write(f"Let it snow {name}! 🌨️")
st.write("You deployed a Streamlit app! 👏")
Mã này tạo một dịch vụ web cơ bản phản hồi các yêu cầu HTTP GET bằng một thông báo thân thiện.
requirements.txt
Mở lại thiết bị đầu cuối và thêm một tệp có tên là requirements.txt để xác định các phần phụ thuộc:
touch requirements.txt
Để chỉnh sửa trực tiếp tệp bằng Trình chỉnh sửa Cloud Shell, hãy sử dụng lệnh sau:
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/streamlit
streamlit==1.47.0
Ứng dụng Streamlit đã sẵn sàng để triển khai, nhưng trước tiên hãy kiểm thử ứng dụng đó...
5. Kiểm thử ứng dụng
Để kiểm thử ứng dụng, hãy sử dụng uv (trình quản lý dự án và gói cực nhanh của Python) được cài đặt sẵn trong Cloud Shell.
Để kiểm thử ứng dụng, hãy tạo một môi trường ảo:
uv venv
Cài đặt các phần phụ thuộc:
uv pip install -r requirements.txt
Bắt đầu ứng dụng bằng streamlit run (tắt --server.enableCORS để kiểm thử vì tính năng này gây trở ngại cho Cloud Shell):
uv run streamlit run main.py --server.port=8080 --server.enableCORS=false
Nhật ký sẽ cho thấy ứng dụng Streamlit đang chạy:
You can now view your Streamlit app in your browser. Local URL: http://localhost:8080 Network URL: http://10.1.0.1:8080 External URL: http://34.37.7.94:8080
Trong cửa sổ Cloud Shell, hãy nhấp vào biểu tượng Web Preview (Xem trước trên web) rồi chọn Preview on port 8080 (Xem trước trên cổng 8080):

Thao tác này sẽ mở một cửa sổ trình duyệt hiển thị tiêu đề Hello World! 👋🌎.

Hãy thử điền tên của bạn và kiểm thử 2 nút trên màn hình!
Khi bạn hoàn tất, hãy quay lại phiên Cloud Shell chính và dừng ứng dụng Streamlit bằng CTRL+C.
Ứng dụng hoạt động như mong đợi: đã đến lúc triển khai ứng dụng đó...
6. Triển khai lên Cloud Run
Cloud Run là một nền tảng theo khu vực, nghĩa là cơ sở hạ tầng chạy các dịch vụ Cloud Run nằm ở một khu vực cụ thể và do Google quản lý để có khả năng dự phòng trên tất cả các vùng trong khu vực đó. Xác định khu vực mà bạn sẽ sử dụng để triển khai, ví dụ:
REGION=europe-west4
Đảm bảo rằng bạn vẫn đang ở trong thư mục đang làm việc:
ls
Lệnh này sẽ liệt kê các tệp sau:
main.py requirements.txt
Trước khi triển khai, hãy tạo một tệp .gcloudignore có chứa .venv/. Thao tác này sẽ ngăn quá trình triển khai Cloud Run bao gồm môi trường ảo được tạo từ uv trong quá trình kiểm thử cục bộ.
Tạo .gcloudignore bằng lệnh sau:
echo ".venv/" > .gcloudignore
Triển khai ứng dụng lên Cloud Run:
gcloud run deploy helloworld-streamlit \
--source . \
--region $REGION \
--allow-unauthenticated
- Tuỳ chọn
--allow-unauthenticatedgiúp dịch vụ có thể truy cập công khai. Để tránh các yêu cầu chưa xác thực, hãy sử dụng--no-allow-unauthenticated.
Vào lần đầu tiên, bạn sẽ nhận được lời nhắc tạo một kho lưu trữ Artifact Registry. Nhấn vào Enter để xác thực:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)?
Thao tác này sẽ khởi chạy quá trình tải mã nguồn của bạn lên kho lưu trữ Artifact Registry và quá trình tạo hình ảnh vùng chứa:
Building using Buildpacks and deploying container ... * Building and deploying new service... Building Container. OK Creating Container Repository... OK Uploading sources... * Building Container... Logs are available at ...
Sau đó, hãy đợi một chú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ụ:
... OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at ... OK Creating Revision... Creating Service. OK Routing traffic... OK Setting IAM Policy... Done. Service [SERVICE]... has been deployed and is serving 100 percent of traffic. Service URL: https://SERVICE-PROJECTHASH-REGIONID.a.run.app
Bạn có thể lấy URL dịch vụ bằng lệnh sau:
SERVICE_URL=$( \
gcloud run services describe helloworld-streamlit \
--region $REGION \
--format "value(status.address.url)" \
)
echo $SERVICE_URL
Lệnh này sẽ hiển thị nội dung tương tự như sau:
https://helloworld-streamlit-PROJECTHASH-REGIONID.a.run.app
Giờ đây, bạn có thể sử dụng ứng dụng bằng cách mở URL dịch vụ trong trình duyệt web:

Xin chúc mừng! Bạn vừa triển khai một ứng dụng lên Cloud Run. Cloud Run tự động và theo chiều ngang mở rộng quy mô hình ảnh vùng chứa của bạn để xử lý các yêu cầu nhận được, sau đó giảm quy mô khi nhu cầu giảm. Bạn chỉ phải thanh toán cho CPU, bộ nhớ và mạng được sử dụng trong quá trình xử lý yêu cầu cho dịch vụ Cloud Run này.
7. Dọn dẹp
Mặc dù Cloud Run không tính phí khi dịch vụ không được sử dụng, nhưng bạn vẫn có thể bị tính phí khi lưu trữ hình ảnh vùng chứa trong Artifact Registry. Bạn có thể xoá kho lưu trữ hoặc xoá dự án trên đám mây để tránh phát sinh chi phí. Việc xoá dự án trên đám mây sẽ dừng tính phí cho tất cả các tài nguyên được sử dụng trong dự án đó.
Cách xoá kho lưu trữ hình ảnh vùng chứa:
gcloud artifacts repositories delete cloud-run-source-deploy \
--location $REGION
Cách xoá dịch vụ Cloud Run:
gcloud run services delete helloworld-streamlit \
--region $REGION
Cách xoá dự án trên Google Cloud,
- Lấy mã dự án hiện tại:
PROJECT_ID=$(gcloud config get-value core/project)
- Đảm bảo rằng đây là dự án mà bạn muốn xoá:
echo $PROJECT_ID
- Xoá dự án:
gcloud projects delete $PROJECT_ID
8. Xin chúc mừng!

Bạn đã tạo một ứng dụng web Streamlit "Hello World" và triển khai ứng dụng đó lên Cloud Run!
Nội dung đã đề cập
- Cách tạo ứng dụng Streamlit "Hello World".
- Kiểm thử ứng dụng bằng cách chạy ứng dụng Streamlit trước khi triển khai.
- Cloud Buildpacks và cách sự hiện diện của
streamlittrongrequirements.txtcho phép không cần Dockerfile. - Triển khai ứng dụng Streamlit lên Cloud Run.
Tìm hiểu thêm
- Xem tài liệu về Cloud Run
- Hoàn tất bài tập Lập trình đến sản xuất trong 3 bước đơn giản bằng Cloud Run để khám phá thêm các lựa chọn
- Hoàn tất bài tập Django trên Cloud Run để tạo một Cloud SQL DB, quản lý thông tin xác thực bằng Secret Manager và triển khai Django
- Xem thêm các lớp học lập trình về Cloud Run...