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ın olması yaygındır. Örneğin, hazırlık ortamınıza daha az CPU ve RAM atamak isteyebilirsiniz. Alternatif olarak, üretim ortamınızda en az 1 örneğin etkin ve istekleri sunmaya hazır olduğundan emin olmak isteyebilirsiniz. Ayrıca kullanmak istediğiniz ortama ve kaynaklara bağlı olarak farklı ortam değişkenleri ve gizli anahtarlar belirtmek de isteyebilirsiniz.

Bu kılavuzda, her biri ayrı bir Firebase projesine dağıtılacak bir üretim ve hazırlık ortamının nasıl oluşturulacağı açıklanmaktadır. Aynı ilkeleri uygulayarak farklı türde ortamlara da dağıtabilirsiniz. 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 depolanmıştır.
  • Ortamlarınızın her biri için zaten ayrı bir proje oluşturdunuz (örneğin, my-production-firebase-project ve my-staging-firebase-project). Üretim Firebase projenizi "üretim" ortam türü ile etiketlediğinizden emin olun.
  • Her projede, canlı dalın dağıtmak istediğiniz GitHub dalına (main gibi) ayarlandığı bir App Hosting arka uç oluşturdunuz. Daha fazla bilgi için App Hosting'ü kullanmaya başlama başlıklı makaleyi inceleyin.

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. Cloud Secret Manager ile yönetilen gizli anahtarlara yapılan referansları da desteklediğinden kaynak kontrolüne giriş yapmayı güvenli hale getirir. Daha fazla bilgi için Arka uç yapılandırması başlıklı makaleyi inceleyin.

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 kullanılması güvenli olan varsayılan değerler olmalıdır.

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

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

Her App Hosting arka ucunda bir ortam adı ayarı vardır. Bu alan, arka ucunuzu ortama özel bir yapılandırma dosyasıyla eşlemek için kullanılır ve herhangi bir zamanda 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ırlık 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örüntüle'yi tıklayın.
  4. Ayarlar sekmesinde Dağıtım'ı seçin.
  5. Ortam adı alanına 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çunuz için bir App Hosting kullanıma sunma işlemi tetiklendiğinde (git push'ta veya konsol üzerinden manuel olarak), App Hosting, apphosting.yaml'ye geri dönmeden önce bir apphosting.ENVIRONMENT_NAME.yaml dosyası olup olmadığını kontrol eder.

2. Adım: Ortamınıza özel apphosting.yaml dosyanızı oluşturun

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

Derleme sırasında App Hosting bu iki dosyayı birleştirir. Bu işlemde, temel apphosting.yaml dosyasına kıyasla ortama özgü YAML dosyasındaki değerlere ö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

Aşağıdaki gibi bir apphosting.yaml'iniz 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.appspot.com
    availability:
      -   RUNTIME

  -   variable: API_KEY
    secret: secretIDforAPI

Cloud Build günlüklerinizde inceleyebileceğiniz birleştirilmiş nihai çı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.appspot.com
    availability:
      -   RUNTIME

  -   variable: API_KEY
    secret: secretIDforAPI

  -   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

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

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

Ortamınıza özel apphosting.ENVIRONMENT_NAME.yaml dosyasını düzenlemeyi tamamladığınızda 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, ilgili YAML dosyasında belirttiğiniz özel geçersiz kılma değerlerini kullanır ve bir değer bulunmadığı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