Ghép nối Cloud Run với Firebase Hosting để tạo và phân phối nội dung động của bạn hoặc xây dựng API REST dưới dạng vi dịch vụ.
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 Firebase Hosting, bạn có thể 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), giúp bạn linh hoạt sử dụng ngôn ngữ lập trình và khung mà bạn chọn.
- Cloud Run tự động chia tỷ lệ hình ảnh vùng chứa của bạn theo chiều ngang để xử lý các yêu cầu đã nhận, sau đó giảm tỷ lệ khi nhu cầu giảm.
- Bạn chỉ trả tiền cho CPU, bộ nhớ và kết nối mạng được sử dụng trong quá trình xử lý yêu cầu.
Ví dụ: các trường hợp sử dụng và mẫu cho Cloud Run được tích hợp với Firebase Hosting, hãy truy cập tổng quan về serverless của chúng tôi.
Hướng dẫn này chỉ cho bạn cách:
- Viết ứng dụng Hello World đơn giản
- Chứa một ứng dụng và tải nó lên Container Register
- Triển khai container image lên Cloud Run
- Yêu cầu lưu trữ trực tiếp tới ứng dụng được 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ể tùy ý điều chỉnh cài đặt bộ đệm của mình .
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ố tác vụ ban đầu, bao gồm thiết lập tài khoản Cloud Billing, bật API Cloud Run và cài đặt công cụ dòng lệnh gcloud
.
Thiết lập 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 Cloud Billing được liên kết với dự án Firebase của mình để sử dụng hoặc dùng thử Cloud Run.
Kích hoạt API và cài đặt SDK
Kích hoạt API Cloud Run trong bảng điều khiển API của Google:
Mở trang API Cloud Run 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 API Cloud Run.
Cài đặt và khởi chạy Cloud SDK.
Kiểm tra xem công cụ
gcloud
đã được định cấu hình cho đúng dự án chưa:gcloud config list
Bước 1 : Viết đơn đăng ký mẫu
Lưu ý rằng Cloud Run hỗ trợ nhiều ngôn ngữ khác ngoài các ngôn ngữ được hiển thị trong mẫu sau.
Đi
Tạo một thư mục mới có tên
helloworld-go
, sau đó thay đổi thư mục vào đó:mkdir helloworld-go
cd helloworld-go
Tạo một 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 lắng nghe cổng được xác định bởi biến môi trường
PORT
.
Ứng dụng của bạn đã hoàn tất và sẵn sàng được đưa vào vùng chứa và tải lên Cơ quan đă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 vào đó:mkdir helloworld-nodejs
cd helloworld-nodejs
Tạo tệp
package.json
với nội dung sau:Tạo một tệp mới có tên là
index.js
, sau đó thêm đoạn mã sau:Mã này tạo một máy chủ web cơ bản lắng nghe cổng được xác định bởi biến môi trường
PORT
.
Ứng dụng của bạn đã hoàn tất và sẵn sàng được đưa vào vùng chứa và tải lên Cơ quan đă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 vào đó:mkdir helloworld-python
cd helloworld-python
Tạo một tệp mới có tên
app.py
, sau đó thêm mã sau:Mã này tạo một máy chủ web cơ bản lắng nghe cổng được xác định bởi biến môi trường
PORT
.
Ứng dụng của bạn đã hoàn tất và sẵn sàng được đưa vào vùng chứa và tải lên Cơ quan đăng ký vùng chứa.
Java
Cài đặt Java SE 8 trở lên JDK và CURL .
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 ở bước tiếp theo. Dockerfile, được mô tả sau, sẽ tải tất cả các phần phụ thuộc vào vùng chứa.
Từ bảng điều khiển, tạo một dự án web trống mới bằng cURL rồi 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
Điều này tạo ra 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ý ánh xạ/
và cũng 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 lắng nghe cổng được xác định bởi biến môi trường
PORT
.
Ứng dụng của bạn đã hoàn tất và sẵn sàng được đưa vào vùng chứa và tải lên Cơ quan đăng ký vùng chứa.
Bước 2 : Chứa một ứng dụng và tải nó lên Cơ quan đăng ký vùng chứa
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 các tệp nguồn. Sao chép nội dung sau vào tập tin của bạn.Đi
Node.js
Python
Java
Xây dựng hình ảnh vùng chứa của bạn 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
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 Register 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ộ để xây dựng vùng chứa của mình cục bộ .
Bước 3 : Triển khai image container lên 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
) - Trả lời
Y
để cho phép các yêu cầu không được xác thực
- Chọn một khu vực (ví dụ
Để có hiệu suất tốt nhất, hãy đặt dịch vụ Cloud Run của bạn với Hosting bằng các khu vực sau:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
Việc ghi lại vào Cloud Run từ Hosting đượ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
Đợi một lá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.appTruy cập vùng chứa đã triển khai của bạn 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 ứng dụng được đóng gói này từ URL Lưu trữ Firebase để ứng dụng 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: Yêu cầu lưu trữ trực tiếp tới ứng dụng được chứa của bạn
Với quy tắc viết 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 duy nhất.
Ví dụ sau đây cho thấy cách chuyển hướng 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 phiên bản vùng chứa helloworld
của bạn.
Đảm bảo rằng:
Bạn có phiên bản mới nhất của Firebase CLI .
Bạn đã khởi tạo Dịch vụ lưu trữ Firebase.
Để biết hướng dẫn chi tiết về cách cài đặt CLI và khởi tạo Hosting, hãy xem hướng dẫn Bắt đầu cho Hosting .
Mở tệp
firebase.json
của bạn.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ừ thư mục gốc của dự án:
firebase deploy --only hosting
Với tính năng này, bạn có thể đảm bảo rằng bản sửa đổi dịch vụ Cloud Run để tạo nội dung động cho trang web của bạn được đồng bộ hóa với tài nguyên Lưu trữ tĩnh và cấu hình Lưu trữ. Ngoài ra, tính năng này cho phép bạn xem trước các bản viết lại của mình lên Cloud Run trên các kênh xem trước của Hosting.
Nếu bạn thêm
"pingTag": true
vào khốirun
của cấu hìnhhosting.rewrites
, tài nguyên và cấu hình Lưu trữ tĩnh của bạn sẽ được ghim vào bản sửa đổi mới nhất của dịch vụ Cloud Run tại thời điểm triển khai. Nếu bạn khôi phục một phiên bản trang web của mình, bản sửa đổi của dịch vụ Cloud Run "được ghim" cũng được khôi phục.Tính năng này dựa trên thẻ Cloud Run , có giới hạn 1000 thẻ cho mỗi dịch vụ và 2000 thẻ cho mỗi khu vực. Điều này có nghĩa là sau hàng trăm lần triển khai, các phiên bản cũ nhất của trang web có thể ngừng hoạt động.
Vùng chứa của bạn hiện có thể truy cập được thông qua các URL sau:
Tên miền phụ Firebase của bạn:
PROJECT_ID .web.app/
vàPROJECT_ID .firebaseapp.com/
Bất kỳ miền tùy chỉnh nào được kết nối :
CUSTOM_DOMAIN /
Truy cập trang cấu hình Hosting để biết thêm chi tiết về quy tắc viết lại . Bạn cũng có thể tìm hiểu về thứ tự ưu tiên phản hồi cho các cấu hình Lưu trữ khác nhau.
Kiểm tra cục bộ
Trong quá trình phát triển, bạn có thể chạy và kiểm tra hình ảnh vùng chứa của mình cục bộ. Để biết hướng dẫn chi tiết, hãy truy cập tài liệu Cloud Run .
Bước tiếp theo
Thiết lập 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ụ Firebase khác bằng SDK quản trị Firebase .
Tìm hiểu thêm về Cloud Run, bao gồm hướng dẫn chi tiết về cách thiết lập, quản lý và định cấu hình vùng chứa.
Xem lại giá cả cũng như hạn ngạch và giới hạn cho Cloud Run.