Bir kod tabanından birden fazla ortam dağıtma

Aynı kod tabanından dağıtılan ve her biri biraz farklı yapılandırmaya sahip birden fazla ortam olması yaygın bir durumdur. Örneğin, hazırlama ortamınıza daha az CPU ve RAM atamak isteyebilirsiniz veya üretim ortamınızın en az 1 örneği etkin ve isteklere hizmet vermeye hazır tuttuğundan emin olmak isteyebilirsiniz. Kullanmak istediğiniz ortama ve kaynaklara bağlı olarak farklı ortam değişkenleri ve sırlar da belirtebilirsiniz.

Bu kılavuzda, her biri ayrı bir Firebase projesine olmak üzere üretim ve hazırlık ortamının nasıl dağıtılacağı açıklanmaktadır. Aynı ilkeleri uygulayarak diğer farklı türdeki ortamlara da dağıtım yapabilirsiniz. Ortamlar hakkında daha fazla bilgi edinmek için Ortamlara genel bakış ve Firebase projeleri oluşturmayla ilgili genel en iyi uygulamalar başlıklı makaleleri inceleyin.

Ön koşullar

  • Uygulama kodunuz zaten GitHub'da depolanıyor.
  • Ortamlarınızın her biri için (ör. my-production-firebase-project ve my-staging-firebase-project) ayrı bir proje oluşturmuş olmanız gerekir. Üretim Firebase projenizi "üretim" ortam türüyle etiketlediğinizden emin olun.
  • Her projede, canlı dalı dağıtmak istediğiniz GitHub dalına (ör. main) ayarlanmış bir App Hosting arka ucu oluşturdunuz. Daha fazla bilgi için App Hosting ile çalışmaya başlama başlıklı makaleye bakın.

0. adım: apphosting.yaml dosyasında varsayılan bir yapılandırma oluşturun

App Hosting, uygulamanızın çalışma zamanı ayarlarını (CPU, eşzamanlılık, bellek sınırları vb.) ve ortam değişkenlerini yönetmek için apphosting.yaml adlı bir yapılandırma dosyasını destekler. Ayrıca, Cloud Secret Manager ile yönetilen gizli anahtarlara yapılan referansları da destekler. Bu sayede, kaynak kontrolüne güvenli bir şekilde dahil edilebilir. Daha fazla bilgi için Arka ucu yapılandırma başlıklı makaleye bakın.

Başlamak için uygulamanızın kök dizininde bir apphosting.yaml dosyası oluşturun. Bu, ortama özgü bir yapılandırma dosyası bulunamadığında kullanılan yedek yapılandırma dosyasıdır. apphosting.yaml içinde depolanan değerler, tüm ortamlarda güvenle kullanılabilecek varsayılan değerler olmalıdır.

Sonraki bölümlerde, belirli ortamlar için apphosting.yaml'daki varsayılan değerlerin nasıl geçersiz kılınacağı açıklanmaktadır. Bu örnek akış, bir hazırlama ortamı oluşturur.

1. adım: Ortam adını ayarlayın

Her App Hosting arka ucunun bir Ortam adı ayarı vardır. Bu alan, arka uçunuzu ortama özgü bir yapılandırma dosyasıyla eşlemek için kullanılır ve istediğiniz zaman değiştirilebilir. Arka uç başına yalnızca bir ortam adı ayarlayabilirsiniz.

Arka uç ortamınızın adını ayarlamak için:

  1. Firebase konsolunda hazırlama projenizi seçin (bu örnekte my-staging-firebase-project).
  2. Sol gezinme menüsünden App Hosting simgesini seçin.
  3. Seçtiğiniz arka uçta Kontrol panelini göster'i tıklayın.
  4. Ayarlar sekmesinde Ortam'ı seçin.
  5. Ortam adı bölümüne ortamınızın adını girin. Ortamı istediğiniz gibi adlandırabilirsiniz. Bu örnekte staging kullanılmıştır.
  6. Kaydet'i tıklayın.

Arka uç için bir App Hosting dağıtımı tetiklendiğinde (git push ile veya konsol üzerinden manuel olarak), App Hosting, apphosting.yaml'ye geri dönmeden önce apphosting.ENVIRONMENT_NAME.yaml dosyasını kontrol eder.

2. adım: Ortama özgü apphosting.yaml dosyanızı oluşturun

Ortama özel yapılandırmanız için, ortama özel geçersiz kılmaları belirtmek üzere apphosting.ENVIRONMENT_NAME.yaml adlı bir dosya oluşturun. Bu dosya, varsayılan apphosting.yaml ile aynı biçime sahiptir ve apphosting.yaml ile birlikte uygulamanızın kök dizininde bulunmalıdır.

Derleme sırasında App Hosting, bu iki dosyayı birleştirir. Ortama özgü YAML dosyasındaki değerlere, temel apphosting.yaml dosyasındaki değerlere göre öncelik verilir.

Bu örnekte, uygulamanın kök dizininde apphosting.staging.yaml adlı bir dosya oluşturacaksınız:


runConfig:
  cpu: 1
  memoryMiB: 512
  concurrency: 5

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

-   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

Şu şekilde bir apphosting.yaml'nız olduğunu varsayalım:

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.firebasestorage.app
    availability:
      -   RUNTIME

-   variable: API_KEY
    secret: secretIDforAPI

Cloud Build günlüklerinizde inceleyebileceğiniz son birleştirilmiş çıkış şu şekilde görünür:

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.firebasestorage.app
    availability:
      -   RUNTIME

-   variable: API_KEY
    secret: secretIDforAPI

-   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

CPU gibi belirli runConfig değerlerinin ve çakışan ortam değişkenlerinin üzerine yazıldığını unutmayın.

3. adım: Kod tabanınızı dağıtın

Ortama özgü apphosting.ENVIRONMENT_NAME.yaml dosyanızı düzenlemeyi tamamladıktan sonra dosyanızı GitHub'a gönderin:

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

Bu ortam adıyla etiketlenen tüm arka uçlar, karşılık gelen YAML dosyasında belirttiğiniz belirli geçersiz kılma değerlerini kullanır ve bir değer bulunamadığında apphosting.yaml değerine geri döner. İlişkili ortam adı olmayan arka uçlar için apphosting.yaml dosyasını kullanmaya devam edebilirsiniz.

Sonraki adımlar