App Hosting được thiết kế để dễ sử dụng và ít tốn công 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 như biến môi trường hoặc chế độ cài đặt thời gian chạy (chẳng hạn như chế độ đồng thời, CPU và giới hạn bộ nhớ), bạn cần tạo và chỉnh sửa tệp apphosting.yaml
trong thư mục gốc của ứng dụng. Tệp này cũng hỗ trợ các tệp tham chiếu đến các bí mật được quản lý bằng Trình quản lý bí mật trên đám mây, giúp bạn an toàn khi kiểm tra vào hệ thống quản lý nguồn.
Để tạo apphosting.yaml
, hãy chạy lệnh sau:
firebase init apphosting
Thao tác này sẽ tạo một tệp apphosting.yaml
khởi động cơ bản có cấu hình mẫu (được chú thích). Sau khi chỉnh sửa, tệp apphosting.yaml
thông thường có thể có dạng như sau, với các chế độ cài đặt 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ố tham chiếu đến các bí mật do Trình quản lý bí mật trên đám mây 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.firebasestorage.app
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à bối cảnh cho các chế độ cài đặt mẫu này.
Đị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 cung cấp dịch vụ Cloud Run. 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 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 tính bằng MiB (mặc định là 512)maxInstances
– Số lượng vùng chứa tối đa có thể chạy cùng một lúc (mặc định là 100 và được quản lý theo hạn mức)minInstances
– Số lượng vùng chứa luôn hoạt động (mặc định là 0).concurrency
– Số lượng yêu cầu tối đa mà mỗi thực thể phân phát có thể nhận được (mặc định là 80).
Lưu ý mối quan hệ quan trọng giữa cpu
và memoryMiB
; bạn có thể đặt bộ nhớ thành bất kỳ giá trị số nguyên nào 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 cần có ít nhất 2 CPU
- Trên 8GiB cần có ít nhất 4 CPU
- Trên 16 GiB cần có ít nhất 6 CPU
- Trên 24 GiB cần có í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 đặt giá trị thấp hơn 1 CPU, bạn phải đặt chế độ đồ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 xây dựng
Đôi khi, bạn cần thêm cấu hình cho quá 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 cấu hình môi trường trong apphosting.yaml
để lưu trữ và truy xuất loại dữ liệu này cho dự án của bạn.
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
Đối với các ứ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
để kiểm soát chi tiết biến môi trường bằng bất kỳ khung nào.
Trong apphosting.yaml
, bạn có thể chỉ định những quy trình có quyền truy cập vào biến môi trường 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ỉ dành cho môi trường xây dựng hoặc chỉ dành cho môi trường thời gian chạy. Theo mặc định, cả hai đều có thể sử dụng.
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- BUILD
- RUNTIME
Đối với các ứng dụng Next.js, bạn cũng có thể sử dụng tiền tố NEXT_PUBLIC_
theo cách tương tự như trong tệp dotenv để truy cập biến trong trình duyệt.
env:
- variable: NEXT_PUBLIC_STORAGE_BUCKET
value: mybucket.firebasestorage.app
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. Một số khoá biến môi trường được dành riêng cho mục đích sử dụng nội bộ. Đừng sử dụng bất kỳ khoá nào trong số nà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 các thông số bí mật
Thông tin nhạy cảm như khoá API phải được lưu trữ dưới dạng thông tin bí mật. Bạn có thể tham chiếu các thông tin bí mật trong apphosting.yaml
để tránh kiểm tra thông tin nhạy cảm vào hệ thống kiểm soát nguồn.
Các tham số thuộc loại secret
đại diện cho các tham số chuỗi có giá trị được lưu trữ trong Trình quản lý bí mật trên đám mây.
Thay vì trực tiếp lấy giá trị, các tham số bí mật sẽ kiểm tra xem có tồn tại trong Trình quản lý bí mật trên đám mây hay không và tải các giá trị trong quá trình triển khai.
- variable: API_KEY
secret: myApiKeySecret
Khoá bí mật trong Trình quản lý khoá 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 được ghim vào phiên bản mới nhất hiện có của bí mật tại thời điểm tạo phần phụ trợ. Nếu có yêu cầu về việc tạo phiên bản và quản lý vòng đời của các thông số, bạn có thể ghim vào các phiên bản cụ thể bằng Trình quản lý bí mật trên đám mây. 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à sẽ được nhắc thêm các quyền cần thiết. Quy trình này cho phép bạn tự động thêm tệp tham chiếu bí mật vào apphosting.yaml
.
Để sử dụng toàn bộ chức năng của Cloud Secret Manager, bạn có thể sử 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 cho phần phụ trợ App Hosting bằng lệnh CLI firebase
apphosting:secrets:grantaccess
.
Đồng bộ hoá trạng thái Firebase Auth
Các ứng dụng sử dụng Firebase Auth nên cân nhắc sử dụng SDK Firebase Web để giúp đồng bộ hoá trạng thái xác thực giữa ứng dụng và máy chủ. Bạn có thể hỗ trợ việc này bằng cách triển khai FirebaseServerApp
với một worker dịch vụ. Quy trình cơ bản của tác vụ là:
- Triển khai trình chạy dịch vụ để thêm các tiêu đề phù hợp cho ứng dụng của bạn trên các yêu cầu gửi đế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 một người dùng xác thực bằng
FirebaseServerApp
.
Quản lý phần phụ trợ
Các lệnh để quản lý cơ bản phần phụ trợ App Hosting được cung cấp trong Firebase CLI. Một số thao tác cũng có trong bảng điều khiển Firebase. Phần này sẽ mô tả một số tác vụ quản lý phổ biến hơn, bao gồm cả việc tạo và xoá phần 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ý mà App Hosting tạo ra để xây dựng và chạy ứng dụng Web. Mọi Chủ sở hữu dự án đều có thể tạo phần phụ trợ App Hosting đầu tiên cho một dự án bằng cách sử dụng Firebase console hoặc Firebase CLI. Sau khi thiết lập ban đầu, Quản trị viên App Hosting cũng có thể tạo và quản lý các phần phụ trợ bổ sung. Để biết thông tin chi tiết, hãy xem bài viết Vai trò IAM Firebase App Hosting.
Bảng điều khiển Firebase: Trên trình đơn Tạo, hãy chọn Lưu trữ ứng dụng rồi chọn Bắt đầu.
CLI: (Phiên bản 13.15.4 trở lên) Để tạo phần phụ trợ, hãy chạy lệnh sau từ thư mục gốc của dự án cục bộ, cung cấp projectID và region ưu tiên làm đối số:
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 để chỉ định tên cho phần phụ trợ, thiết lập 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 lưu trữ tệp
package.json
.
Đặt nhánh phát trực tiếp
Đây là nhánh của kho lưu trữ GitHub được triển khai đến URL trực tiếp. Thường thì đây là nhánh mà các nhánh tính năng hoặc nhánh phát triển được hợp nhất.
Chấp nhận hoặc từ chối tính năng tự động triển khai
Tính năng tự động triển khai đượ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 của mình ngay lập tức trên App Hosting.
Xoá phần phụ trợ
Để xoá hoàn toàn một phần phụ trợ, trước tiên, hãy sử dụng CLI Firebase, sau đó xoá các tài sản có liên quan theo cách thủ công, đặ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ả miền cho phần phụ trợ và xoá dịch vụ Cloud Run liên kết:
firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID --location us-central1
(Không bắt buộc) Trong thẻ Google Cloud Console cho Artifact Registry, hãy xoá hình ảnh cho phần phụ trợ của bạn trong "firebaseapphosting-images".
Trong Cloud Secret Manager, hãy xoá mọi khoá bí mật có "apphosting" trong tên khoá bí mật, đặc biệt chú ý đảm bảo các khoá bí mật này không đượ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.