Đị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 cần 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 các 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 đó.

Đặt và cập nhật các biến môi trường và khoá bí mật

App Hosting cho phép bạn sử dụng biến môi trường cho các giá trị cấu hình không nhạy cảm và thông tin bí mật cho các tham số nhạy cảm như khoá API, thông tin xác thực cơ sở dữ liệu và mã thông báo dịch vụ.

  • Biến môi trường tiêu chuẩn: Dùng cho các cấu hình văn bản thuần tuý, không nhạy cảm (chẳng hạn như URL API công khai, cờ tính năng hoặc mục tiêu bản dựng). Tất cả thành viên dự án đều có thể xem các giá trị.
  • Bí mật: Dùng cho các tham số nhạy cảm (chẳng hạn như khoá bí mật của ứng dụng OAuth, mã thông báo API hoặc mật khẩu cơ sở dữ liệu). Bí mật được hỗ trợ bởi Cloud Secret Manager. Giá trị bí mật được bảo vệ và không bao giờ hiển thị dưới dạng văn bản thuần túy trong bảng điều khiển Firebase; thay vào đó, bảng điều khiển này cung cấp các đường liên kết sâu để xem và quản lý giá trị bí mật ngay trong Cloud Secret Manager.

Bạn có thể xác định và quản lý các tham số môi trường bằng hai phương pháp bổ sung:

  • Bảng điều khiển Firebase: Nhanh chóng thêm, chỉnh sửa và đính kèm khoá bí mật hoặc biến một cách linh động trong quá trình tạo phần phụ trợ ban đầu hoặc sau khi triển khai trong phần cài đặt phần phụ trợ.
  • Ưu tiên mã (apphosting.yaml): Khai báo các biến môi trường và thông tin tham chiếu bí mật trong tệp cấu hình của kho lưu trữ cho các bản triển khai được kiểm soát phiên bản hoặc sử dụng apphosting.<env>.yaml để đặt các giá trị khác nhau cho các môi trường khác nhau.

Firebase bảng điều khiển

Ảnh chụp màn hình hộp thoại của bảng điều khiển Firebase để thêm biến môi trường

apphosting.yaml

env:
  - variable: STORAGE_BUCKET
    value: mybucket.firebasestorage.app
  - variable: API_KEY
    secret: myApiKeySecret

Quản lý biến và khoá bí mật trong bảng điều khiển Firebase

Bạn có thể định cấu hình các biến môi trường và khoá bí mật trong bảng điều khiển Firebase khi tạo phần phụ trợ hoặc bất cứ lúc nào trong phần cài đặt phần phụ trợ. Các thay đổi được lưu mà không triển khai sẽ có hiệu lực trong lần phát hành tiếp theo và không ảnh hưởng đến lần phát hành hiện tại.

Thiết lập biến và khoá bí mật trong quá trình tạo phần phụ trợ

Khi tạo một phần phụ trợ App Hosting mới trong bảng điều khiển Firebase, bạn có thể định cấu hình các biến môi trường và khoá bí mật tiêu chuẩn trong bước Định cấu hình phần phụ trợ của trình hướng dẫn thiết lập:

  1. Trong bảng điều khiển Firebase, hãy chuyển đến phần Hosting & Serverless (Lưu trữ và không máy chủ) > App Hosting rồi nhấp vào Create backend (Tạo phần phụ trợ).
  2. Hoàn tất các bước ban đầu của trình hướng dẫn để chọn khu vực chính và kho lưu trữ mã.
  3. Trong phần Định cấu hình phần phụ trợ, hãy tìm các thẻ có thể thu gọn cho Biến môi trường và Mật khẩu, nơi bạn có thể thêm các biến chuẩn và đính kèm mật khẩu.
  4. Hoàn tất trình hướng dẫn tạo phần phụ trợ rồi nhấp vào Finish & deploy (Hoàn tất và triển khai).

Quản lý biến và khoá bí mật trong phần cài đặt của phần phụ trợ

Bạn có thể xem, thêm, chỉnh sửa hoặc xoá các biến môi trường và khoá bí mật cho phần phụ trợ đang hoạt động trong trang tổng quan về chế độ cài đặt phần phụ trợ:

  1. Trong bảng điều khiển Firebase, hãy chọn phần phụ trợ App Hosting rồi mở Settings (Cài đặt) > Environment (Môi trường).
  2. Xem lại các cấu hình hiện có trong bảng Biến môi trường:
    • Biến chuẩn: Giá trị được hiển thị dưới dạng văn bản thuần tuý trong các khối mã có thể sao chép.
    • Bí mật: Hiển thị dưới dạng đường liên kết có thể nhấp, cho thấy tên bí mật (mở Trình quản lý bí mật trên đám mây trong bảng điều khiển Google Cloud) cùng với phiên bản được nhắm đến (chẳng hạn như latest hoặc một số phiên bản cụ thể như 2).
  3. Cách thêm biến hoặc khoá bí mật:
    1. Nhấp vào Thêm mới.
    2. Trong Bước 1: Chọn loại, hãy chọn Biến môi trường chuẩn (đối với dữ liệu không nhạy cảm mà tất cả thành viên dự án đều có thể xem) hoặc Bí mật (đối với khoá API và thông tin xác thực nhạy cảm có quyền truy cập bị hạn chế), sau đó nhấp vào Tiếp theo.
    3. Trong Bước 2: Định cấu hình chế độ cài đặt, hãy nhập tên Khoá và Giá trị dạng văn bản thuần túy (đối với biến chuẩn) hoặc chọn mã nhận dạng Mật khẩu và Phiên bản (đối với mật khẩu).
    4. Lưu các thay đổi bằng một trong các lựa chọn sau:
      • Lưu và triển khai: Cập nhật ngay cấu hình phần phụ trợ, đồng thời kích hoạt một bản dựng và quá trình phát hành mới.
      • Chỉ lưu (từ mũi tên thả xuống bên cạnh Lưu và triển khai): Lưu các thay đổi về cấu hình mà không kích hoạt ngay quá trình phát hành. Chế độ cài đặt mới sẽ có hiệu lực trong lần triển khai tiếp theo.
  4. Để chỉnh sửa hoặc xoá một mục hiện có, hãy nhấp vào trình đơn Thao tác khác (...) ở cuối hàng:
    • Chọn Chỉnh sửa để sửa đổi khoá, giá trị, mối liên kết bí mật hoặc phiên bản, sau đó nhấp vào Lưu và triển khai hoặc Chỉ lưu.
    • Chọn Xoá và xác nhận việc xoá trong hộp thoại.

Chuyển biến từ tệp dotenv

Đối với ứng dụng Next.js, các tệp dotenv chứa biến môi trường sẽ hoạt động với App Hosting.

Khi tạo hoặc cập nhật phần phụ trợ, bạn có thể chuyển các biến môi trường từ tệp dotenv sang bảng điều khiển Firebase bằng cách sao chép và dán toàn bộ nội dung của tệp dotenv vào trường Khoá đầu tiên trong biểu mẫu Thêm mới trong phần Cài đặt > Môi trường.

Tất cả biến môi trường được sao chép theo cách này sẽ tự động được định dạng vào biểu mẫu mà không cần nhập từng biến, miễn là dữ liệu đầu vào sử dụng định dạng KEY=value chuẩn:

KEY1=value1
KEY2=value2
KEY3=value3

Đối với việc kiểm soát biến môi trường phức tạp hoặc chi tiết bằng bất kỳ khung nào, bạn nên sử dụng apphosting.yaml.

Quản lý biến và khoá bí mật trong apphosting.yaml

Đối với quy trình làm việc ưu tiên mã, hãy khai báo các biến môi trường tiêu chuẩn và tệp đối chiếu bí mật trong khoá env: trong tệp cấu hình apphosting.yaml của kho lưu trữ dự án (xem phần Tạo và chỉnh sửa apphosting.yaml).

env:
  # Standard environment variables
  - variable: PUBLIC_API_URL
    value: https://api.example.com
    availability:
      - BUILD
      - RUNTIME
  - variable: FEATURE_FLAG_NEW_UI
    value: "true"

  # Secret references backed by Cloud Secret Manager
  - variable: DATABASE_URL
    secret: projects/PROJECT_ID/secrets/db-connection-string/versions/latest
  - variable: GEMINI_API_KEY
    secret: myGeminiApiKeySecret@1

Mỗi mục trong env: hỗ trợ các trường sau:

  • variable: Tên biến môi trường được hiển thị cho quy trình ứng dụng của bạn.
  • value: Giá trị chuỗi văn bản thuần tuý (đối với các biến môi trường tiêu chuẩn).
  • secret: Tham chiếu bí mật của Cloud Secret Manager (đối với bí mật). Bạn có thể sử dụng tên bí mật ngắn (chẳng hạn như myGeminiApiKeySecret hoặc myGeminiApiKeySecret@1 được ghim) hoặc đường dẫn tài nguyên đầy đủ (projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION). Hãy xem bài viết Lưu trữ và truy cập vào các tham số bí mật để biết thêm thông tin chi tiết.
  • availability: Kiểm soát xem biến hoặc khoá bí mật có thể truy cập được trong giai đoạn BUILD, tại RUNTIME hay cả hai hay không.

Đặt phạm vi áp dụng của biến

Các biến môi trường và khoá bí mật được định cấu hình trong bảng điều khiển Firebase sẽ có sẵn tại cả thời điểm xây dựng và thời gian chạy. Đây cũng là hành vi mặc định cho các mục được xác định trong apphosting.yaml, trừ phi bạn thu hẹp phạm vi bằng thuộc tính availability. Trong apphosting.yaml (nhưng không phải trong bảng điều khiển), bạn có thể giới hạn một biến hoặc khoá bí mật chỉ trong môi trường tạo bản dựng (BUILD) hoặc chỉ trong môi trường thời gian chạy (RUNTIME).

Truy cập vào các biến và mật khẩu trong mã xử lý ứng dụng

Dù được định cấu hình trong bảng điều khiển Firebase hay apphosting.yaml, các biến môi trường và khoá bí mật đều được hiển thị cho thời gian chạy ứng dụng dưới dạng biến môi trường tiêu chuẩn (ví dụ: process.env trong Node.js).

// Accessing a standard environment variable
const apiUrl = process.env.PUBLIC_API_URL;

// Accessing a secret
const apiKey = process.env.GEMINI_API_KEY;

export async function fetchData() {
  const response = await fetch(`${apiUrl}/data`, {
    headers: {
      'Authorization': `Bearer ${apiKey}`
    }
  });
  return response.json();
}
  • Quyền truy cập phía máy chủ: Tất cả biến môi trường và khoá bí mật đều có thể truy cập một cách an toàn trong bối cảnh thực thi phía máy chủ (chẳng hạn như Thành phần máy chủ Next.js, tuyến API hoặc trình xử lý phụ trợ Node.js).
  • Hiển thị phía máy khách: Để hiển thị các biến môi trường tiêu chuẩn cho trình duyệt trong các khung như Next.js, hãy đảm bảo khoá biến tuân theo quy ước của khung (ví dụ: có tiền tố NEXT_PUBLIC_).

    env:
      - variable: NEXT_PUBLIC_STORAGE_BUCKET
        value: mybucket.firebasestorage.app
        availability:
          - BUILD
          - RUNTIME
    

Hệ thống phân cấp biến

Firebase App Hosting áp dụng các biến môi trường và khoá bí mật theo thứ tự ưu tiên dựa trên nguồn của chúng. Cấu hình được đặt trong bảng điều khiển Firebase luôn ghi đè các tham số được khai báo trong tệp apphosting.yaml và dotenv. Nếu một biến môi trường hoặc khoá bí mật có cùng tên tồn tại trong cả apphosting.yaml và bảng điều khiển Firebase, thì giá trị trong bảng điều khiển sẽ được ưu tiên trong quá trình tạo bản dựng và thực thi thời gian chạy.

Sau đây là thứ tự ưu tiên đầy đủ:

  1. Bảng điều khiển Firebase → các biến và khoá bí mật được đặt trong bảng điều khiển
  2. apphosting.<env>.yaml → các biến và thông tin xác thực bí mật được chỉ định trong tệp YAML dành riêng cho môi trường, chẳng hạn như apphosting.staging.yaml (xem phần Triển khai nhiều môi trường)
  3. apphosting.yaml → các biến và khoá bí mật được chỉ định trong tệp apphosting.yaml
  4. Hệ thống Firebase → các biến do Firebase đặt, chứa giá trị cho FIREBASE_CONFIG hoặc FIREBASE_WEBAPP_CONFIG, cũng như các biến môi trường đặt tên máy chủ và cổng cho ứng dụng SSR (do bộ chuyển đổi App Hosting đặt trong bundle.yaml)

Biến môi trường được điền tự động

Có các biến môi trường được App Hosting tự động điền. Các biến này bao gồm những biến do Google Cloud điền sẵn, cũng như các biến môi trường dành riêng cho Firebase khi appId được đặt trên phần phụ trợ trong quá trình thiết lập:

  • FIREBASE_CONFIG: (có trong môi trường bản dựng và thời gian chạy) Cung cấp thông tin cấu hình dự án Firebase sau đây:

    {
      "databaseURL": "https://DATABASE_NAME.firebaseio.com",
      "storageBucket": "PROJECT_ID.firebasestorage.app",
      "projectId": "PROJECT_ID"
    }
    

    Cấu hình này được áp dụng tự động khi bạn khởi chạy SDK của Firebase dành cho quản trị viên mà không có đối số.

  • FIREBASE_WEBAPP_CONFIG: (chỉ có trong môi trường tạo bản dựng) Cung cấp thông tin cấu hình dự án Firebase sau đây:

    {
      "apiKey": "API_KEY",
      "appId": "APP_ID",
      "authDomain": "AUTH_DOMAIN.firebaseapp.com",
      "databaseURL": "https://DATABASE_NAME.firebaseio.com",
      "messagingSenderId": "PROJECT_NUMBER",
      "projectId": "PROJECT_ID",
      "storageBucket": "PROJECT_ID.firebasestorage.app"
    }</span>
    

    Firebase JS SDK tự động kiểm tra biến môi trường FIREBASE_WEBAPP_CONFIG này trong tập lệnh sau khi cài đặt trong quá trình tạo bản dựng, nhờ đó bạn cũng có thể khởi động SDK ứng dụng mà không cần bất kỳ đối số nào.

Hãy xem bài viết Tự động khởi chạy SDK quản trị Firebase và SDK web để biết thêm thông tin chi tiết về cách sử dụng các biến môi trường này để khởi chạy SDK.

Xin lưu ý rằng các giá trị trong cấu hình Firebase thực tế của bạn sẽ tương ứng với các tài nguyên cụ thể mà bạn đã cung cấp trong dự án của mình.

Hệ thống phân cấp biến

Firebase App Hosting áp dụng các biến theo thứ tự ưu tiên dựa trên nguồn của biến. Ví dụ: các giá trị được đặt trong bảng điều khiển Firebase luôn ghi đè hoặc được ưu tiên hơn các giá trị được đặt trong tệp apphosting.yaml và dotenv.

Sau đây là thứ tự ưu tiên đầy đủ:

  1. Bảng điều khiển Firebase → các biến được đặt trong bảng điều khiển
  2. apphosting.<env>.yaml → các biến được chỉ định trong một tệp yaml dành riêng cho môi trường, chẳng hạn như apphosting.staging.yaml (xem phần Triển khai nhiều môi trường)
  3. apphosting.yaml → các biến được chỉ định trong tệp apphosting.yaml
  4. Hệ thống Firebase → các biến do Firebase đặt chứa giá trị cho firebase_config json hoặc firebase_webapp_config, cũng như các biến môi trường đặt tên máy chủ và cổng cho ứng dụng SSR (do bộ chuyển đổi App Hosting đặt trong bundle.yaml)

Tên và giới hạn dành riêng

Các biến môi trường được xác định trong hợp đồng thời gian chạy vùng chứa Cloud Run được đặt trước và không thể đặt.

Các biến môi trường do môi trường cung cấp, ngoài những biến được đặt tự động, có thể thay đổi trong các phiên bản thời gian chạy trong tương lai. Tốt nhất là bạn không nên phụ thuộc vào hoặc sửa đổi bất kỳ biến môi trường nào mà bạn chưa đặt rõ ràng, đồng thời cân nhắc việc thêm tiền tố vào bất kỳ biến môi trường nào bằng một khoá duy nhất để tránh xung đột.

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 của bạn:

  • Chuỗi trống ("")
  • Khoá chứa dấu "="
  • Khoá bắt đầu bằng X_FIREBASE_, X_GOOGLE_ hoặc CLOUD_RUN_
  • PORT
  • K_SERVICE
  • K_REVISION
  • K_CONFIGURATION
  • Khoá trùng lặp

Tạo và chỉnh sửa apphosting.yaml

Để định cấu hình nâng cao, chẳng hạn như thông tin bí mật hoặc chế độ cài đặt thời gian chạy như giới hạn về đồng thời, CPU và 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 hỗ trợ các tệp tham chiếu đến thông tin bí mật được quản lý bằng Cloud Secret Manager, giúp bạn kiểm tra an toàn trong chế độ kiểm soát 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 với cấu hình mẫu (được chú thích). Sau khi chỉnh sửa, một 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ố tệp tham chiếu đến các khoá 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:

Lưu ý rằng cpu, memoryMiB và concurrency có các giới hạn phụ thuộc lẫn nhau (ví dụ: cấu hình bộ nhớ cao hơn yêu cầu giới hạn CPU tối thiểu cao hơn và CPU phân số yêu cầu đồng thời là 1). Hãy xem tài liệu Cloud Run về giới hạn CPU và giới hạn bộ nhớ để biết các phạm vi hợp lệ và các tổ hợp bắt buộc.

Ghi đè tập lệnh tạo và chạy

App Hosting suy luận lệnh tạo và khởi động ứng dụng dựa trên khung được phát hiện. Nếu muốn sử dụng lệnh khởi động hoặc bản dựng tuỳ chỉnh, bạn có thể ghi đè các giá trị mặc định của App Hosting trong apphosting.yaml.

scripts:
  buildCommand: next build --no-lint
  runCommand: node dist/index.js

Lệnh ghi đè bản dựng được ưu tiên hơn mọi lệnh bản dựng khác và chọn không sử dụng bộ chuyển đổi khung cho ứng dụng của bạn, đồng thời tắt mọi tính năng tối ưu hoá dành riêng cho khung mà App Hosting cung cấp. Bạn nên sử dụng phương thức này khi các tính năng của ứng dụng không được bộ chuyển đổi hỗ trợ đầy đủ. Nếu bạn muốn thay đổi lệnh bản dựng nhưng vẫn sử dụng bộ chuyển đổi được cung cấp, hãy đặt tập lệnh bản dựng trong package.json như mô tả trong phần bộ chuyển đổi khung App Hosting.

Sử dụng chế độ ghi đè lệnh chạy khi có một lệnh cụ thể mà bạn muốn dùng để khởi động ứng dụng, khác với lệnh do App Hosting suy luận.

Định cấu hình đầu ra bản dựng

Theo mặc định, App Hosting sẽ tối ưu hoá quá trình triển khai ứng dụng bằng cách xoá các tệp đầu ra không dùng đến theo chỉ định của khung. Nếu muốn tối ưu hoá thêm kích thước triển khai ứng dụng hoặc bỏ qua các hoạt động tối ưu hoá mặc định, bạn có thể ghi đè kích thước này trong apphosting.yaml.

outputFiles:
  serverApp:
    include: [dist, server.js]

Tham số include nhận một danh sách các thư mục và tệp liên quan đến thư mục gốc của ứng dụng cần thiết để triển khai ứng dụng. Nếu bạn muốn đảm bảo rằng tất cả các tệp đều được giữ lại, hãy đặt include thành [.] và tất cả các tệp sẽ được triển khai.

Lưu trữ và truy cập các tham số bí mật

Thông tin nhạy cảm như khoá API phải được lưu trữ dưới dạng bí mật. Bạn có thể đính kèm thông tin mật vào phần phụ trợ trong bảng điều khiển Firebase hoặc tham chiếu thông tin mật trong apphosting.yaml để tránh đưa 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ì lấy giá trị trực tiếp, các tham số bí mật sẽ kiểm tra sự tồn tại trong Trình quản lý bí mật trên đám mây và tải các giá trị trong quá trình phát hành.

env:
  - variable: API_KEY
    secret: myApiKeySecret

Thông tin mật trong Cloud Secret Manager có thể có nhiều phiên bản. Theo mặc định, giá trị của tham số bí mật có sẵn cho phần phụ trợ đang hoạt động 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 phần phụ trợ được tạo. 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 tham số, bạn có thể ghim vào các phiên bản cụ thể trong bảng điều khiển Firebase hoặc trong apphosting.yaml. Ví dụ: để ghim vào phiên bản 5 trong apphosting.yaml:

env:
  - variable: PINNED_API_KEY
    secret: myApiKeySecret@5

Bạn có thể tạo khoá bí mật bằng lệnh CLI Firebase 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 cho phép bạn tự động thêm thông tin tham chiếu bí mật vào apphosting.yaml.

Cấp quyền truy cập vào Cloud Secret Manager

Để App Hosting tìm nạp các giá trị bí mật trong quá trình triển khai bản dựng và thời gian chạy, tài khoản dịch vụ phụ trợ App Hosting phải có quyền truy cập vào Cloud Secret Manager.

Nếu bạn tạo thông tin mật bằng bảng điều khiển Cloud Secret Manager hoặc CLI gcloud thay vì firebase apphosting:secrets:set, hãy cấp quyền truy cập vào phần phụ trợ bằng CLI Firebase:

firebase apphosting:secrets:grantaccess SECRET_NAME

Ngoài ra, bạn có thể cấp vai trò Người truy cập bí mật của Trình quản lý bí mật (roles/secretmanager.secretAccessor) cho tác nhân dịch vụ App Hosting (service-PROJECT_NUMBER@gcp-sa-apphosting.iam.gserviceaccount.com) hoặc tài khoản dịch vụ thời gian chạy của phần phụ trợ bằng CLI gcloud:

gcloud secrets add-iam-policy-binding SECRET_NAME \
    --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-apphosting.iam.gserviceaccount.com" \
    --role="roles/secretmanager.secretAccessor"

Quyền truy cập vào bảng điều khiển và quyền dựa trên vai trò

Bảng điều khiển Firebase tự động hạn chế các tính năng quản lý môi trường và bí mật dựa trên quyền IAM của người dùng:

  • Vai trò người xem: Người dùng có quyền chỉ đọc đối với dự án có thể xem các chế độ cài đặt cấu hình hiện có nhưng không thể thay đổi.
    • Trong quá trình tạo phần phụ trợ, nút Create backend (Tạo phần phụ trợ) sẽ bị tắt.
    • Trong phần Cài đặt > Môi trường của phần phụ trợ, nút Thêm mới sẽ bị tắt và trình đơn hàng Thao tác khác (...) sẽ bị ẩn.
  • Thiếu quyền đối với Trình quản lý bí mật: Người dùng không có quyền IAM để tương tác với Trình quản lý bí mật trên đám mây sẽ thấy thông báo cảnh báo trong bảng điều khiển (Yêu cầu chủ sở hữu dự án cấp quyền thêm bí mật):
    • Trong quá trình tạo phần phụ trợ, thẻ Secrets (Bí mật) sẽ bị tắt.
    • Trong phần Cài đặt > Môi trường của phần phụ trợ, tuỳ chọn Bí mật sẽ bị tắt khi bạn nhấp vào Thêm mới và một số tuỳ chọn trong trình đơn hàng Thao tác khác (...) sẽ bị ẩn trên các mục bí mật hiện có.

Định cấu hình quyền truy cập vào VPC

Phần phụ trợ App Hosting của bạn có thể kết nối với mạng Virtual Private Cloud (VPC). Để biết thêm thông tin và ví dụ, hãy xem bài viết Kết nối Firebase App Hosting với mạng VPC.

Sử dụng mối liên kết vpcAccess trong tệp apphosting.yaml để định cấu hình quyền truy cập. Sử dụng tên mạng/trình kết nối đủ điều kiện hoặc mã nhận dạng. Việc sử dụng mã nhận dạng cho phép khả năng di chuyển giữa môi trường thử nghiệm và môi trường thực tế bằng các đầu nối/mạng khác nhau.

Cấu hình lưu lượng truy cập ra ngoài trực tiếp của VPC (apphosting.yaml):

runConfig:
  vpcAccess:
    egress: PRIVATE_RANGES_ONLY # Default value
    networkInterfaces:
      # Specify at least one of network and/or subnetwork
      - network: my-network-id
        subnetwork: my-subnetwork-id

Cấu hình trình kết nối không máy chủ (apphosting.yaml):

runConfig:
  vpcAccess:
    egress: ALL_TRAFFIC
    connector: connector-id

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 bảng điều khiển Firebase và Firebase CLI. Phần này 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 một 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 để xây dựng và chạy ứng dụng web của bạn.

Bảng điều khiển Firebase: Chuyển đến phần Hosting & Serverless (Lưu trữ và không máy chủ) > App Hosting, rồi nhấp vào Create backend (Tạo phần phụ trợ) (nếu đây là phần phụ trợ đầu tiên trong dự án Firebase của bạn, hãy nhấp vào Get started (Bắt đầu)).

Firebase 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ộ, đồng thời cung cấp mã dự án làm đối số:

firebase apphosting:backends:create --project PROJECT_ID

Đối với cả bảng điều khiển hoặc CLI, hãy làm theo lời nhắc để chọn một khu vực, 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 lưu trữ tệp package.json của bạn.

  • Đặt nhánh phát hành công khai

    Đây là nhánh của kho lưu trữ GitHub được triển khai cho URL đang hoạt động của bạn. Thông thường, đâ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 vào.

  • Chấp nhận hoặc từ chối bản phát hành tự động

    Tính năng tự động phát hành được bật theo mặc định. Sau 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 cho App Hosting ngay lập tức.

  • Đặt tên cho phần phụ trợ.

  • Chọn môi trường thời gian chạy. Theo mặc định, phiên bản Node.js mới nhất được đề xuất sẽ được chọn trước cho bạn.

    • Định cấu hình tính năng Tự động cập nhật hình ảnh cơ sở (ABIU). ABIU được bật theo mặc định và tự động áp dụng các bản vá bảo mật cho môi trường cơ bản của bạn. Bạn có thể chọn không sử dụng ABIU bằng cách chọn "Not specified" (Không chỉ định) cho thời gian chạy.

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 bảng điều khiển Firebase hoặc CLI Firebase để xoá phần phụ trợ đó, sau đó xoá các tài sản liên quan theo cách thủ công, đặc biệt lưu ý 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.

Bảng điều khiển Firebase: Trên trình đơn Settings (Cài đặt), hãy chọn Delete backend (Xoá phần phụ trợ).

Firebase CLI: (phiên bản 13.15.4 trở lên)

  1. Chạy lệnh sau để xoá phần phụ trợ App Hosting. Thao tác này sẽ vô hiệu hoá tất cả miền cho phần phụ trợ của bạn và xoá dịch vụ Cloud Run liên kết:

    firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID
    
  2. (Không bắt buộc) Trong thẻ bảng điều khiển Google Cloud cho Artifact Registry, hãy xoá hình ảnh cho phần phụ trợ trong "firebaseapphosting-images".

  3. 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 lưu ý để đả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.