Ghép nối Cloud Run với tính năng Lưu trữ Firebase để tạo và phân phát nội dung động hoặc tạo các API REST dưới dạng các dịch vụ vi mô.
Khi sử dụng Cloud Run, bạn có thể triển khai một ứng dụng được đóng gói trong hình ảnh vùng chứa. Sau đó, bằng cách sử dụng tính năng Lưu trữ Firebase, bạn có thể chuyển hướng các yêu cầu HTTPS để kích hoạt ứng dụng trong vùng chứa của mình.
- Cloud Run hỗ trợ một số ngôn ngữ (bao gồm Go, Node.js, Python và Java), cho phép bạn linh hoạt sử dụng ngôn ngữ lập trình và khung mà bạn muốn.
- Cloud Run tự động và theo chiều ngang điều chỉnh hình ảnh vùng chứa của bạn để xử lý các yêu cầu nhận được, sau đó thu nhỏ khi nhu cầu giảm xuống.
- Bạn chỉ trả tiền cho CPU, bộ nhớ và mạng tiêu thụ trong quá trình xử lý yêu cầu.
Để xem ví dụ về các trường hợp sử dụng và mẫu cho Cloud Run được tích hợp với tính năng Lưu trữ Firebase, hãy truy cập vào thông tin tổng quan về mô hình không máy chủ của chúng tôi.
Hướng dẫn này sẽ cho bạn biết cách:
- Viết một ứng dụng Hello World đơn giản
- Vùng chứa một ứng dụng và tải lên Sổ đăng ký vùng chứa
- Triển khai hình ảnh vùng chứa cho Cloud Run
- Yêu cầu lưu trữ trực tiếp đến ứng dụng trong vùng chứa của bạn
Lưu ý rằng để cải thiện hiệu suất phân phát nội dung động, bạn có thể tinh chỉnh chế độ cài đặt bộ nhớ đệm (không bắt buộc).
Trước khi bắt đầu
Trước khi sử dụng Cloud Run, bạn cần hoàn thành một số nhiệm vụ ban đầu, trong đó có việc thiết lập tài khoản thanh toán Cloud, bật API Cloud Run và cài đặt công cụ dòng lệnh gcloud
.
Thiết lập thông tin thanh toán cho dự án của bạn
Cloud Run cung cấp hạn mức sử dụng miễn phí, nhưng bạn vẫn phải có tài khoản thanh toán Cloud liên kết với dự án Firebase để sử dụng hoặc dùng thử Cloud Run.
Bật API và cài đặt SDK
Bật Cloud Run API trong bảng điều khiển API của Google:
Mở trang Cloud Run API trong bảng điều khiển API của Google.
Khi được nhắc, hãy chọn dự án Firebase của bạn.
Nhấp vào Bật trên trang Cloud Run API.
Cài đặt và khởi chạy SDK đám mây.
Hãy kiểm tra để đảm bảo công cụ
gcloud
được định cấu hình cho đúng dự án:gcloud config list
Bước 1: Viết ứng dụng mẫu
Xin lưu ý rằng Cloud Run hỗ trợ nhiều ngôn ngữ khác ngoài các ngôn ngữ như trong mẫu sau.
Tiến hành
Tạo một thư mục mới có tên
helloworld-go
, sau đó thay đổi thư mục vào thư mục đó:mkdir helloworld-go
cd helloworld-go
Tạo tệp mới có tên
helloworld.go
, sau đó thêm đoạn mã sau:Mã này tạo một máy chủ web cơ bản để theo dõi trên cổng do biến môi trường
PORT
xác định.
Ứng dụng của bạn đã hoàn tất và sẵn sàng để được đưa vào vùng chứa cũng như tải lên Sổ đăng ký vùng chứa.
Node.js
Tạo một thư mục mới có tên
helloworld-nodejs
, sau đó thay đổi thư mục trong đó:mkdir helloworld-nodejs
cd helloworld-nodejs
Tạo tệp
package.json
có nội dung sau:Tạo tệp mới có tên
index.js
, sau đó thêm đoạn mã sau:Mã này tạo một máy chủ web cơ bản để theo dõi trên cổng do biến môi trường
PORT
xác định.
Ứng dụng của bạn đã hoàn tất và sẵn sàng để được đưa vào vùng chứa cũng như tải lên Sổ đăng ký vùng chứa.
Python
Tạo một thư mục mới có tên
helloworld-python
, sau đó thay đổi thư mục trong đó:mkdir helloworld-python
cd helloworld-python
Tạo tệp mới có tên
app.py
, sau đó thêm đoạn mã sau:Mã này tạo một máy chủ web cơ bản để theo dõi trên cổng do biến môi trường
PORT
xác định.
Ứng dụng của bạn đã hoàn tất và sẵn sàng để được đưa vào vùng chứa cũng như tải lên Sổ đăng ký vùng chứa.
Java
Cài đặt JDK Java SE 8 trở lên và CURL.
Xin lưu ý rằng chúng ta chỉ cần thực hiện việc này để tạo dự án web mới trong bước tiếp theo. Dockerfile (được mô tả ở phần sau) sẽ tải tất cả các phần phụ thuộc vào vùng chứa.
Trên bảng điều khiển, hãy tạo một dự án web trống mới bằng cURL, sau đó giải nén các lệnh:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Thao tác này sẽ tạo một dự án SpringBoot.
Cập nhật lớp
SpringBootApplication
trongsrc/main/java/com/example/helloworld/HelloworldApplication.java
bằng cách thêm@RestController
để xử lý mục ánh xạ/
, đồng thời thêm trường@Value
để cung cấp biến môi trườngTARGET
:Mã này tạo một máy chủ web cơ bản để theo dõi trên cổng do biến môi trường
PORT
xác định.
Ứng dụng của bạn đã hoàn tất và sẵn sàng để được đưa vào vùng chứa cũng như tải lên Sổ đăng ký vùng chứa.
Bước 2: Vùng chứa một ứng dụng và tải ứng dụng đó lên Sổ đăng ký vùng chứa
Vùng chứa ứng dụng mẫu bằng cách tạo một tệp mới có tên
Dockerfile
trong cùng thư mục với tệp nguồn. Sao chép nội dung sau đây vào tệp.Tiến hành
Node.js
Python
Java
Tạo hình ảnh vùng chứa bằng Cloud Build bằng cách chạy lệnh sau từ thư mục chứa Dockerfile của bạn:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Sau khi thành công, bạn sẽ thấy thông báo THÀNH CÔNG chứa tên hình ảnh
(gcr.io/PROJECT_ID/helloworld
).
Hình ảnh vùng chứa hiện được lưu trữ trong Container Registry và có thể được sử dụng lại nếu muốn.
Lưu ý rằng, thay vì Cloud Build, bạn có thể sử dụng phiên bản Docker được cài đặt cục bộ để tạo vùng chứa cục bộ.
Bước 3: Triển khai hình ảnh vùng chứa cho Cloud Run
Triển khai bằng lệnh sau:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Khi được nhắc:
- Chọn một khu vực (ví dụ:
us-central1
) - Xác nhận tên dịch vụ (ví dụ:
helloworld
) - Phản hồi
Y
để cho phép các lệnh gọi chưa được xác thực
- Chọn một khu vực (ví dụ:
Để đạt được hiệu suất tốt nhất, hãy bố trí dịch vụ Cloud Run cùng với dịch vụ Lưu trữ thông qua những khu vực sau:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Việc ghi lại cho Cloud Run từ máy chủ lưu trữ được hỗ trợ ở các khu vực sau:
asia-east1
asia-east2
asia-northeast1
asia-northeast2
asia-northeast3
asia-south1
asia-south2
asia-southeast1
asia-southeast2
australia-southeast1
australia-southeast2
europe-central2
europe-north1
europe-southwest1
europe-west1
europe-west12
europe-west2
europe-west3
europe-west4
europe-west6
europe-west8
europe-west9
me-central1
me-west1
northamerica-northeast1
northamerica-northeast2
southamerica-east1
southamerica-west1
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
us-west1
us-central1
us-east1
europe-west1
asia-east1
Hãy đợi vài phút để 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ụ. Ví dụ:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Truy cập vào vùng chứa đã triển khai bằng cách mở URL dịch vụ trong trình duyệt web.
Bước tiếp theo sẽ hướng dẫn bạn cách truy cập vào ứng dụng trong vùng chứa này từ một URL lưu trữ Firebase để ứng dụng này có thể tạo nội dung động cho trang web được lưu trữ trên Firebase của bạn.
Bước 4: Lưu trữ trực tiếp các yêu cầu đến ứng dụng trong vùng chứa của bạn
Với quy tắc ghi lại, bạn có thể hướng các yêu cầu khớp với các mẫu cụ thể đến một đích đến duy nhất.
Ví dụ sau cho thấy cách chuyển tất cả các yêu cầu từ trang /helloworld
trên trang web Lưu trữ của bạn để kích hoạt quá trình khởi động và chạy thực thể vùng chứa helloworld
.
Đảm bảo rằng:
Bạn đã khởi chạy tính năng Lưu trữ Firebase.
Để biết hướng dẫn chi tiết về cách cài đặt CLI và khởi chạy Lưu trữ, hãy xem Hướng dẫn bắt đầu lưu trữ.
Thêm cấu hình
rewrite
sau trong phầnhosting
:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/helloworld", "run": { "serviceId": "helloworld", // "service name" (from when you deployed the container image) "region": "us-central1", // optional (if omitted, default is us-central1) "pinTag": true // optional (see note below) } } ] }
Triển khai cấu hình lưu trữ cho trang web của bạn bằng cách chạy lệnh sau từ gốc của thư mục dự án:
firebase deploy --only hosting
Vùng chứa của bạn hiện có thể truy cập được qua các URL sau:
Các miền con Firebase của bạn:
PROJECT_ID.web.app/
vàPROJECT_ID.firebaseapp.com/
Mọi miền tuỳ chỉnh được kết nối:
CUSTOM_DOMAIN/
Truy cập trang Cấu hình lưu trữ để biết thêm thông tin về các quy tắc ghi lại. Bạn cũng có thể tìm hiểu về thứ tự ưu tiên của phản hồi cho nhiều cấu hình Lưu trữ.
Kiểm thử cục bộ
Trong quá trình phát triển, bạn có thể chạy và kiểm tra cục bộ hình ảnh vùng chứa. Để biết hướng dẫn chi tiết, hãy truy cập vào tài liệu về Cloud Run.
Các bước tiếp theo
Thiết lập chức năng lưu vào bộ nhớ đệm cho nội dung động của bạn trên CDN toàn cầu.
Tương tác với các dịch vụ khác của Firebase bằng SDK dành cho quản trị viên của Firebase.
Tìm hiểu thêm về Cloud Run, bao gồm cả hướng dẫn chi tiết về cách thực hiện để thiết lập, quản lý và định cấu hình vùng chứa.
Xem lại mức giá, hạn mức và giới hạn của Cloud Run.