Định cấu hình và quản lý phần phụ trợ Lưu trữ ứng dụng

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 cpumemoryMiB; 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à:

  1. 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ủ.
  2. 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.

  1. 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
    
  2. (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".

  3. 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.