App Hosting được thiết kế để dễ sử dụng và ít phải bảo trì, với các chế độ cài đặt mặc định được tối ưu hoá cho hầu hết các trường hợp sử dụng. Đồng thời, App Hosting cung cấp các công cụ để bạn quản lý và định cấu hình phần phụ trợ cho nhu cầu cụ thể của mình. Hướng dẫn này mô tả các công cụ và quy trình đó.
Định cấu hình phần phụ trợ
Đối với cấu hình nâng cao, chẳng hạn như biến môi trường hoặc chế độ cài đặt thời gian chạy
chẳng hạn như giới hạn đồng thời, CPU và bộ nhớ, bạn sẽ cần tạo và chỉnh sửa
apphosting.yaml
trong thư mục gốc của ứng dụng. Tệp này cũng
hỗ trợ tham chiếu đến các khoá bí mật được quản lý
bằng Cloud Secret Manager, giúp bạn an tâm kiểm tra chế độ kiểm soát nguồn.
Sau đây là ví dụ về một tệp apphosting.yaml
thông thường, kèm theo các chế độ cài đặt dành cho
dịch vụ Cloud Run của phần phụ trợ, một số biến môi trường và một số
thông tin tham chiếu đến các khoá bí mật do Cloud Secret Manager quản lý:
# Settings for Cloud Run
runConfig:
minInstances: 2
maxInstances: 100
concurrency: 100
cpu: 2
memoryMiB: 1024
# Environment variables and secrets
env:
- variable: STORAGE_BUCKET
value: mybucket.appspot.com
availability:
- BUILD
- RUNTIME
- variable: API_KEY
secret: myApiKeySecret
# Same as API_KEY above but with a pinned version.
- variable: PINNED_API_KEY
secret: myApiKeySecret@5
# Same as API_KEY above but with the long form secret reference as defined by Cloud Secret Manager.
- variable: VERBOSE_API_KEY
secret: projects/test-project/secrets/secretID
# Same as API_KEY above but with the long form secret reference with pinned version.
- variable: PINNED_VERBOSE_API_KEY
secret: projects/test-project/secrets/secretID/versions/5
Phần còn lại của hướng dẫn này cung cấp thêm thông tin và ngữ cảnh cho những ví dụ này phần cài đặt.
Định cấu hình chế độ cài đặt dịch vụ Cloud Run
Với chế độ cài đặt apphosting.yaml
, bạn có thể định cấu hình cách
Dịch vụ Cloud Run là
đã được cấp phép. Các chế độ cài đặt có sẵn cho
Dịch vụ Cloud Run được cung cấp trong đối tượng runConfig
:
cpu
– Số CPU được sử dụng cho mỗi phiên bản phân phát (mặc định là 0).memoryMiB
– Dung lượng bộ nhớ được phân bổ cho mỗi thực thể phân phát trong MiB (mặc định 512)maxInstances
– Số vùng chứa tối đa từng chạy cùng một lúc (mặc định 100 và được quản lý theo hạn mức)minInstances
– Số vùng chứa luôn duy trì hoạt động (mặc định là 0).concurrency
– Số yêu cầu tối đa mà mỗi phiên bản phân phát có thể nhận (mặc định là 80).
Lưu ý mối quan hệ quan trọng giữa cpu
và memoryMiB
; có thể thiết lập bộ nhớ
thành giá trị số nguyên bất kỳ trong khoảng từ 128 đến 32768, nhưng việc tăng giới hạn bộ nhớ có thể
yêu cầu tăng giới hạn CPU:
- Trên 4GiB yêu cầu ít nhất 2 CPU
- Trên 8GiB yêu cầu ít nhất 4 CPU
- Phiên bản cao hơn 16GiB yêu cầu ít nhất 6 CPU
- Phiên bản 24GiB yêu cầu ít nhất 8 CPU
Tương tự, giá trị của cpu
ảnh hưởng đến chế độ cài đặt đồng thời. Nếu bạn đặt giá trị
dưới 1 CPU, bạn phải thiết lập mô hình đồng thời thành 1 và CPU sẽ chỉ được phân bổ
trong quá trình xử lý yêu cầu.
Định cấu hình môi trường tạo bản dựng
Đôi khi, bạn cần có cấu hình bổ sung cho quy trình xây dựng, chẳng hạn như
khoá API của bên thứ ba hoặc chế độ cài đặt có thể điều chỉnh. App Hosting cung cấp môi trường
trong apphosting.yaml
để lưu trữ và truy xuất dữ liệu này.
cho dự án của bạn.
env:
- variable: STORAGE_BUCKET
value: mybucket.appspot.com
Đối với ứng dụng Next.js, các tệp dotenv chứa
biến môi trường
cũng sẽ
hoạt động với App Hosting. Bạn nên sử dụng apphosting.yaml
để có kết quả chi tiết
kiểm soát biến môi trường với bất kỳ khung nào.
Trong apphosting.yaml
, bạn có thể chỉ định quy trình nào có quyền truy cập vào
bằng cách sử dụng thuộc tính availability
. Bạn có thể hạn chế một
biến môi trường chỉ được cung cấp cho môi trường tạo bản dựng hoặc biến này có sẵn
chỉ với môi trường thời gian chạy. Theo mặc định, chế độ này có thể sử dụng được cho cả hai.
env:
- variable: STORAGE_BUCKET
value: mybucket.appspot.com
availability:
- BUILD
- RUNTIME
Đối với ứng dụng Next.js, bạn cũng có thể sử dụng tiền tố NEXT_PUBLIC_
giống như cách bạn
trong tệp dotenv của bạn để tạo một biến có thể truy cập được trong trình duyệt.
env:
- variable: NEXT_PUBLIC_STORAGE_BUCKET
value: mybucket.appspot.com
availability:
- BUILD
- RUNTIME
Khoá biến hợp lệ bao gồm các ký tự A-Z hoặc dấu gạch dưới. Hơi nhiều khoá biến môi trường được dành riêng để sử dụng nội bộ. Không sử dụng bất kỳ thuộc tính nào sau đây trong tệp cấu hình:
- Bất kỳ biến nào bắt đầu bằng
X_FIREBASE_
PORT
K_SERVICE
K_REVISION
K_CONFIGURATION
Lưu trữ và truy cập vào các tham số bí mật
Bạn nên lưu trữ thông tin nhạy cảm như khoá API dưới dạng bí mật. Bạn có thể
bí mật tham chiếu trong apphosting.yaml
để tránh kiểm tra thông tin nhạy cảm
vào kiểm soát nguồn.
Các thông số thuộc loại secret
biểu thị các tham số chuỗi có giá trị
được lưu trữ trong Cloud Secret Manager.
Thay vì
trực tiếp lấy giá trị, các tham số bí mật sẽ kiểm tra sự tồn tại trong Đám mây
Secret Manager (Trình quản lý bí mật) và tải các giá trị trong quá trình phát hành.
- variable: API_KEY
secret: myApiKeySecret
Khoá bí mật trong Trình quản lý bí mật trên đám mây có thể có nhiều phiên bản. Theo mặc định, giá trị của một tham số bí mật có sẵn cho phần phụ trợ trực tiếp của bạn sẽ được ghim vào phiên bản bí mật mới nhất hiện có tại thời điểm xây dựng phần phụ trợ. Nếu bạn có các yêu cầu về tạo phiên bản và quản lý vòng đời của các tham số, bạn có thể ghim vào các phiên bản cụ thể bằng Cloud Secret Manager. Ví dụ: để ghim vào phiên bản 5:
- variable: PINNED_API_KEY
secret: myApiKeySecret@5
Bạn có thể tạo khoá bí mật bằng lệnh CLI firebase apphosting:secrets:set
,
và bạn sẽ được nhắc thêm các quyền cần thiết. Quy trình này cung cấp cho bạn
để tự động thêm tham chiếu bí mật vào apphosting.yaml
.
Để sử dụng trọn bộ chức năng của Cloud Secret Manager, bạn có thể dùng
bảng điều khiển Cloud Secret Manager. Nếu làm như vậy, bạn cần cấp quyền
các quyền truy cập vào phần phụ trợ App Hosting bằng lệnh CLI firebase
apphosting:secrets:grantaccess
.
Đồng bộ hoá trạng thái Xác thực Firebase
Các ứng dụng sử dụng tính năng Xác thực Firebase nên cân nhắc sử dụng Firebase Web SDK để duy trì
trạng thái xác thực đã đồng bộ hoá giữa ứng dụng và máy chủ. Thông tin này có thể là
được hỗ trợ bằng cách triển khai FirebaseServerApp
bằng một trình chạy dịch vụ. Cơ bản
luồng tác vụ là:
- Triển khai trình chạy dịch vụ để thêm tiêu đề phù hợp cho ứng dụng của bạn theo yêu cầu đến máy chủ.
- Lấy tiêu đề từ yêu cầu trên máy chủ và chuyển đổi tiêu đề đó thành thông tin xác thực
người dùng có
FirebaseServerApp
.
Quản lý phần phụ trợ
Các lệnh để quản lý cơ bản phần phụ trợ App Hosting là được cung cấp trong Firebase CLI. Hơi nhiều Các thao tác cũng có trong bảng điều khiển Firebase. Phần này sẽ mô tả một số công việc quản lý phổ biến hơn, bao gồm tạo và xoá chương trình phụ trợ.
Tạo phần phụ trợ
Phần phụ trợ App Hosting là tập hợp các tài nguyên được quản lý App Hosting tạo để tạo và chạy ứng dụng web. Bạn có thể tạo và liệt kê Các phần phụ trợ App Hosting thông qua bảng điều khiển Firebase hoặc Firebase CLI.
Bảng điều khiển của Firebase: Từ trình đơn Tạo, hãy chọn Lưu trữ ứng dụng, sau đó chọn Bắt đầu
CLI: (Phiên bản 3.9 trở lên) Để tạo phần phụ trợ, hãy chạy lệnh sau
từ gốc của thư mục dự án cục bộ, cung cấp
mã dự án làm đối số (để xem trước,
chỉ hỗ trợ khu vực us-central1
):
firebase apphosting:backends:create --project PROJECT_ID --location us-central1
Đối với cả bảng điều khiển hoặc CLI, hãy làm theo lời nhắc để gán tên cho phần phụ trợ của bạn, để thiết lập một Kết nối GitHub, và định cấu hình các chế độ cài đặt triển khai cơ bản sau:
Đặt thư mục gốc của ứng dụng (mặc định là
/
)Đây thường là nơi chứa tệp
package.json
của bạn.
Thiết lập nhánh trực tiếp
Đây là nhánh của kho lưu trữ GitHub được triển khai cho URL đang hoạt động. Thông thường, đó là nhánh có các nhánh hoặc hoạt động phát triển các nhánh được hợp nhất.
Chấp nhận hoặc từ chối chế độ phát hành tự động
Tính năng phát hành tự động được bật theo mặc định. Khi hoàn tất quá trình tạo phần phụ trợ, bạn có thể chọn triển khai ứng dụng cho App Hosting ngay lập tức.
Xoá phần phụ trợ
Để xoá hoàn toàn phần phụ trợ, trước tiên hãy dùng CLI Firebase, sau đó theo cách thủ công xoá nội dung có liên quan, đặc biệt chú ý để không xoá bất kỳ tài nguyên nào có thể được các phần phụ trợ khác hoặc các khía cạnh khác của dự án Firebase sử dụng.
Chạy lệnh sau để xoá Phần phụ trợ App Hosting. Thao tác này sẽ tắt tất cả các miền cho phần phụ trợ của bạn và xoá các miền được liên kết Dịch vụ Cloud Run:
firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID --location us-central1
(Không bắt buộc) Trong phần Thẻ Google Cloud Console cho Artifact Registry, xoá hình ảnh cho phần phụ trợ của bạn trong "firebaseapphosting-images".
Trong Cloud Secret Manager, xoá mọi khoá bí mật có "apphosting" bằng tên bí mật, nhận lời mời đặc biệt cần chú ý để đảm bảo các chương trình phụ trợ khác hoặc không sử dụng những bí mật này các khía cạnh khác trong dự án Firebase.