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

Thông thường, 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 nhau. Ví dụ: bạn có thể muốn chỉ định ít CPU và RAM hơn cho môi trường thử nghiệm, hoặc bạn có thể muốn đảm bảo môi trường sản xuất luôn duy trì ít nhất 1 thực thể đang hoạt động và sẵn sàng phân phát yêu cầu. Bạn cũng nên chỉ định các biến môi trường và mã bí mật khác nhau 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ôi trường phát hành chính thức và môi trường thử nghiệm, mỗi môi trường cho một dự án Firebase riêng. Theo các nguyên tắc tương tự, bạn có thể triển khai sang nhiều loại môi trường khác. Để tìm hiểu thêm về môi trường, hãy xem bài viết Tổng quan về môi trườngCác phương pháp hay nhất chung để thiết lập dự án Firebase.

Đ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 biệt cho từng môi trường, ví dụ: my-production-firebase-projectmy-staging-firebase-project. Hãy nhớ gắn thẻ dự án Firebase chính thức bằng loại môi trường"chính thức".
  • Trong mỗi dự án, bạn đã tạo một phần phụ trợ App Hosting, với nhánh trực tiếp được đặt thành nhánh GitHub mà bạn muốn triển khai (chẳng hạn như main). Hãy xem phần Bắt đầu với App Hosting để biết thêm thông tin.

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

App Hosting hỗ trợ một tệp cấu hình có tên là apphosting.yaml để quản lý các chế độ cài đặt thời gian chạy (CPU, đồng thời, giới hạn bộ nhớ, v.v.) và các biến môi trường cho ứng dụng của bạn. Tệp này cũng hỗ trợ các tệp tham chiếu đến thông tin bảo mật được quản lý bằng Trình quản lý thông tin bảo 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. Để biết thêm thông tin, hãy xem phần Đị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à giá trị mặc định an toàn để sử dụng cho 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ể. Quy trình mẫu này tạo một môi trường thử nghiệm.

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

Mỗi phần phụ trợ App Hosting đều có chế độ cài đặt Tên môi trường. Trường này được dùng để liên kết phần phụ trợ với một tệp cấu hình dành riêng cho môi trường và có thể được 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 thử nghiệm của tôi – Firebase).
  2. Chọn App Hosting trong 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 phần Tên môi trường,hãy nhập tên môi trường của bạn. Bạn có thể đặt tên cho môi trường theo ý muốn. Trong ví dụ này, đó là tạo bản dựng.
  6. Nhấp vào Lưu.

Khi một bản phát hành App Hosting được kích hoạt cho phần phụ trợ (trên git push hoặc theo cách thủ công thông qua bảng điều khiển), App Hosting sẽ kiểm tra tệp apphosting.ENVIRONMENT_NAME.yaml trước khi 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 các chế độ ghi đè dành riêng cho môi trường. Tệp này có định dạng giống với apphosting.yaml mặc định và phải nằm trong thư mục gốc của ứng dụng cùng với apphosting.yaml.

Tại thời điểm tạo bản dựng, App Hosting sẽ hợp nhất hai tệp này, trong đó các giá trị trong tệp YAML dành riêng cho môi trường được ưu tiên hơn tệp 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 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

Kết quả hợp nhất cuối cùng mà bạn có thể kiểm tra trong nhật ký Cloud Build 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

Xin lưu ý rằng một số giá trị runConfig nhất định như CPU cũng như mọi biến môi trường trùng lặp đã bị ghi đè.

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

Sau khi chỉnh sửa xong tệp apphosting.ENVIRONMENT_NAME.yaml dành riêng cho môi trường, hãy đẩy tệp đó lên 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ác giá trị ghi đè cụ thể mà bạn đã chỉ định trong tệp YAML tương ứng và quay lại apphosting.yaml khi không tìm thấy giá trị. Đối với các phần phụ trợ không có tên môi trường liên kết, bạn có thể tiếp tục sử dụng apphosting.yaml.

Các bước tiếp theo