Triển khai nhiều môi trường từ một cơ sở mã

Thường thì có nhiều môi trường được triển khai từ cùng một cơ sở mã, mỗi môi trường có cấu hình hơi khác. Ví dụ: bạn có thể muốn chỉ định CPU và RAM cho môi trường chạy thử của bạn hoặc có thể bạn muốn đảm bảo môi trường sản xuất giúp ít nhất 1 thực thể hoạt động và sẵn sàng phân phát yêu cầu. Bạn cũng có thể cần chỉ định các biến môi trường khác nhau và khoá bí mật tuỳ thuộc vào môi trường và tài nguyên mà bạn muốn sử dụng.

Hướng dẫn này mô tả cách triển khai một môi trường thử nghiệm và sản xuất, mỗi một dự án Firebase riêng biệt. Theo cùng các nguyên tắc, bạn có thể triển khai để các loại môi trường khác nhau. Để tìm hiểu thêm về môi trường, hãy xem trong phần Tổng quan về môi trườngChung các phương pháp hay nhất để thiết lập Firebase dự án.

Điều kiện tiên quyết

  • Mã xử lý ứng dụng của bạn đã được lưu trữ trong GitHub.
  • Bạn đã tạo một dự án riêng cho mỗi môi trường—ví dụ: my-production-firebase-projectmy-staging-firebase-project Hãy nhớ gắn thẻ Firebase chính thức của bạn dự án có vai trò "chính thức" môi trường .
  • Trong mỗi dự án, bạn đã tạo một phần phụ trợ App Hosting, trong đó nhánh được đặt thành nhánh GitHub mà bạn muốn triển khai (chẳng hạn như main). Xem Bắt đầu sử dụng App Hosting để biết thêm thông tin của bạn.

Bước 0: Tạo cấu hình mặc định trong apphosting.yaml

App Hosting hỗ trợ tệp cấu hình có tên apphosting.yaml để quản lý các chế độ cài đặt thời gian chạy (CPU, mô hình đồng thời, giới hạn bộ nhớ, v.v.) và môi trường các biến cho ứng dụng của mình. Tính năng này cũng hỗ trợ việc tham chiếu đến các khoá bí mật được quản lý bằng Cloud Secret Manager, giúp đảm bảo an toàn khi kiểm tra chế độ kiểm soát nguồn. Để biết thêm thông tin, hãy xem Định cấu hình phần phụ trợ.

Để bắt đầu, hãy tạo một tệp apphosting.yaml trong thư mục gốc của ứng dụng. Đây là tệp cấu hình dự phòng được dùng khi không tìm thấy tệp cấu hình dành riêng cho môi trường. Các giá trị được lưu trữ trong apphosting.yaml phải là các giá trị mặc định an toàn để sử dụng trong mọi môi trường.

Các phần tiếp theo giải thích cách ghi đè các giá trị mặc định trong apphosting.yaml cho các môi trường cụ thể. Luồng ví dụ này tạo ra một môi trường thử nghiệm.

Bước 1: Đặt tên môi trường

Mỗi phần phụ trợ App Hosting có một chế độ cài đặt Tên môi trường. Trường này là được dùng để ánh xạ phần phụ trợ của bạn với một tệp cấu hình dành riêng cho môi trường và có thể có thể thay đổi bất cứ lúc nào. Bạn chỉ có thể đặt một tên môi trường cho mỗi phần phụ trợ.

Để đặt tên môi trường của phần phụ trợ,

  1. Trong bảng điều khiển của Firebase, hãy chọn dự án thử nghiệm của bạn (trong ví dụ này là dự án Firebase của tôi).
  2. Chọn App Hosting trên thanh điều hướng bên trái.
  3. Nhấp vào Xem trang tổng quan trên phần phụ trợ mà bạn đã chọn.
  4. Trong thẻ Cài đặt, hãy chọn Triển khai.
  5. Trong mục Tên môi trường,hãy nhập tên cho môi trường của bạn. Bạn có thể đặt tên môi trường bất cứ khi nào bạn muốn. Trong ví dụ này, đó là chạy thử.
  6. Nhấp vào Lưu.

Khi quá trình phát hành App Hosting được kích hoạt cho phần phụ trợ của bạn (trên git đẩy hoặc thủ công thông qua bảng điều khiển), App Hosting sẽ kiểm tra apphosting.ENVIRONMENT_NAME.yaml tệp trước quay lại apphosting.yaml.

Bước 2: Tạo tệp apphosting.yaml dành riêng cho môi trường

Đối với cấu hình dành riêng cho môi trường, hãy tạo một tệp có tên apphosting.ENVIRONMENT_NAME.yaml để chỉ định ghi đè dành riêng cho môi trường. Tệp này có cùng định dạng với apphosting.yaml mặc định và phải được đặt ở thư mục gốc của ứng dụng cùng với apphosting.yaml.

Trong thời gian xây dựng, App Hosting sẽ hợp nhất hai tệp này với mức độ ưu tiên là trong tệp YAML dành riêng cho môi trường trong apphosting.yaml cơ sở .

Trong ví dụ này, bạn sẽ tạo một tệp có tên apphosting.staging.yaml trong thư mục gốc của ứng dụng:


runConfig:
  cpu: 1
  memoryMiB: 512
  concurrency: 5

env:
  -   variable: API_URL
    value: api.staging.service.com
    availability:
      -   BUILD

  -   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

Giả sử bạn đã có một apphosting.yaml có dạng như sau:

runConfig:
  cpu: 3
  memoryMiB: 1024
  maxInstances: 4
  minInstances: 0
  concurrency: 100

env:
  -   variable: API_URL
    value: api.service.com
    availability:
      -   BUILD
      -   RUNTIME

  -   variable: STORAGE_BUCKET
    value: mybucket.appspot.com
    availability:
      -   RUNTIME

  -   variable: API_KEY
    secret: secretIDforAPI

Đầu ra hợp nhất cuối cùng mà bạn có thể kiểm tra trong nhật ký Cloud Build của mình sẽ sẽ có dạng như sau:

runConfig:
  cpu: 1
  memoryMiB: 512
  maxInstances: 4
  minInstances: 0
  concurrency: 5

env:
  -   variable: API_URL
    value: api.staging.service.com
    availability:
      -   BUILD

  -   variable: STORAGE_BUCKET
    value: mybucket.appspot.com
    availability:
      -   RUNTIME

  -   variable: API_KEY
    secret: secretIDforAPI

  -   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

Lưu ý rằng một số giá trị runConfig nhất định chẳng hạn như CPU cũng đã bị ghi đè như bất kỳ biến môi trường chồng chéo nào.

Bước 3: Triển khai cơ sở mã

Sau khi bạn hoàn tất chỉnh sửa tệp apphosting.ENVIRONMENT_NAME.yaml dành riêng cho môi trường, hãy đẩy tệp đó sang GitHub:

$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push

Mọi phần phụ trợ được gắn thẻ bằng tên môi trường này sẽ sử dụng cơ chế ghi đè cụ thể mà bạn đã chỉ định trong tệp YAML tương ứng và quay lại sử dụng apphosting.yaml khi không tìm thấy một giá trị. Đối với các chương trình phụ trợ không có tên môi trường, bạn có thể tiếp tục sử dụng apphosting.yaml.

Các bước tiếp theo