Uygulama Barındırma arka uçlarını yapılandırma ve yönetme

App Hosting, kullanım kolaylığı ve düşük bakım maliyeti için tasarlanmıştır. Varsayılan ayarlar, çoğu kullanım alanı için optimize edilmiştir. Aynı zamanda App Hosting, arka uçları özel ihtiyaçlarınıza göre yönetmenizi ve yapılandırmanızı sağlayan araçlar sunar. Bu kılavuzda bu araçlar ve süreçler açıklanmaktadır.

Arka uç yapılandırma

Çevre değişkenleri veya eşzamanlılık, CPU ve bellek sınırları gibi çalışma zamanı ayarları gibi gelişmiş yapılandırmalar için uygulamanızın kök dizininde apphosting.yaml dosyasını oluşturup düzenlemeniz gerekir. Bu dosya, Cloud Secret Manager ile yönetilen gizli anahtarlara yapılan referansları da destekler. Bu sayede, kaynak denetimine eklemek güvenli olur.

apphosting.yaml oluşturmak için aşağıdaki komutu çalıştırın:

firebase init apphosting

Bu işlem, örnek yapılandırma (yorumlu) içeren temel bir başlangıç apphosting.yaml dosyası oluşturur. Düzenleme sonrasında, arka uçtaki Cloud Run hizmetinin ayarları, bazı ortam değişkenleri ve Cloud Secret Manager tarafından yönetilen gizli bilgilere yönelik bazı referanslar içeren tipik bir apphosting.yaml dosyası aşağıdaki gibi görünebilir:

# 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

Bu kılavuzun geri kalanında, bu örnek ayarlarla ilgili daha fazla bilgi ve bağlam sağlanmaktadır.

Cloud Run hizmet ayarlarını yapılandırın

apphosting.yaml ayarlarıyla, Cloud Run hizmetinizin nasıl temel hazırlığının yapılacağını yapılandırabilirsiniz. Cloud Run hizmeti için kullanılabilen ayarlar runConfig nesnesinde sağlanır:

  • cpu: Her sunma örneği için kullanılan CPU sayısı (varsayılan 0).
  • memoryMiB: Her bir sunma örneği için MiB cinsinden ayrılan bellek miktarı (varsayılan 512)
  • maxInstances: Aynı anda çalıştırılacak maksimum container sayısı (varsayılan olarak 100'dür ve kotaya göre yönetilir)
  • minInstances: Her zaman etkin kalacak kapsayıcı sayısı (varsayılan 0).
  • concurrency: Her sunma örneğinin alabileceği maksimum istek sayısı (varsayılan 80).

cpu ile memoryMiB arasındaki önemli ilişkiye dikkat edin. Bellek, 128 ile 32.768 arasında herhangi bir tam sayı değerine ayarlanabilir ancak bellek sınırını artırmak için CPU sınırlarını da artırmanız gerekebilir:

  • 4 GiB'den fazlası için en az 2 CPU gerekir
  • 8 GiB'den fazlası için en az 4 CPU gerekir
  • 16 GiB'den fazlası için en az 6 CPU gerekir
  • 24 GiB'den fazlası için en az 8 CPU gerekir

Benzer şekilde, cpu değerinin eşzamanlılık ayarlarını etkilediği de unutulmamalıdır. 1 CPU'dan az bir değer ayarlarsanız eşzamanlılığı 1 olarak ayarlamanız gerekir ve CPU yalnızca istek işleme sırasında ayrılır.

Derleme ortamını yapılandırma

Bazen derleme işleminiz için üçüncü taraf API anahtarları veya ayarlanabilir ayarlar gibi ek yapılandırmalara ihtiyacınız olabilir. App Hosting, projeniz için bu tür verileri depolamak ve almak üzere apphosting.yaml'te ortam yapılandırması sunar.

env:
-   variable: STORAGE_BUCKET
    value: mybucket.firebasestorage.app

Next.js uygulamaları için ortam değişkenleri içeren dotenv dosyaları da App Hosting ile çalışır. Herhangi bir çerçeveyle ayrıntılı ortam değişkeni kontrolü için apphosting.yaml kullanmanızı öneririz.

apphosting.yaml dosyasında, availability özelliğini kullanarak hangi işlemlerin ortam değişkeninize erişimi olduğunu belirtebilirsiniz. Bir ortam değişkenini yalnızca derleme ortamında veya yalnızca çalışma ortamında kullanılabilir olacak şekilde kısıtlayabilirsiniz. Varsayılan olarak her iki kullanıcı da bu özelliği kullanabilir.

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

Next.js uygulamaları için, bir değişkeni tarayıcıda erişilebilir hale getirmek amacıyla dotenv dosyanızda yaptığınız gibi NEXT_PUBLIC_ ön ekini de kullanabilirsiniz.

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

Geçerli değişken anahtarları A-Z karakterlerinden veya alt çizgilerden oluşur. Bazı ortam değişkeni anahtarları dahili kullanım için ayrılmıştır. Yapılandırma dosyalarınızda aşağıdaki anahtarlardan hiçbirini kullanmayın:

  • X_FIREBASE_ ile başlayan tüm değişkenler
  • PORT
  • K_SERVICE
  • K_REVISION
  • K_CONFIGURATION

Gizli parametreleri depolama ve bunlara erişme

API anahtarları gibi hassas bilgiler gizli anahtar olarak saklanmalıdır. Hassas bilgilerin kaynak denetimine kontrol edilmesini önlemek için apphosting.yaml içindeki gizli bilgileri referans olarak kullanabilirsiniz.

secret türündeki parametreler, Cloud Secret Manager'da depolanan bir değeri olan dize parametrelerini temsil eder. Gizli parametreler, değeri doğrudan türetmek yerine Cloud Secret Manager'da varlığını kontrol eder ve değerleri kullanıma sunma sırasında yükler.

  -   variable: API_KEY
      secret: myApiKeySecret

Cloud Secret Manager'daki gizli anahtarların birden fazla sürümü olabilir. Varsayılan olarak, canlı arka uçunuzda kullanılabilen bir gizli anahtar parametresinin değeri, arka uç oluşturulduğu sırada gizli anahtarın mevcut olan en son sürümüne sabitlenir. Parametrelerin sürüm oluşturma ve yaşam döngüsü yönetimiyle ilgili şartlarınız varsa Cloud Secret Manager ile belirli sürümlere sabitleyebilirsiniz. Örneğin, 5. sürüme sabitlemek için:

  - variable: PINNED_API_KEY
    secret: myApiKeySecret@5

firebase apphosting:secrets:set komutunu kullanarak gizli anahtar oluşturabilirsiniz. Bu durumda, gerekli izinleri eklemeniz istenir. Bu akış, gizli referansı apphosting.yaml'e otomatik olarak ekleme seçeneği sunar.

Cloud Secret Manager işlevlerinin tamamını kullanmak için Cloud Secret Manager konsolunu kullanabilirsiniz. Bunu yaparsanız firebase apphosting:secrets:grantaccess CLI komutunu kullanarak App Hosting arka uçunuza izin vermeniz gerekir.

Firebase Auth durumunu senkronize etme

Firebase Auth kullanan uygulamalar, kimlik doğrulama durumunun istemci ile sunucu arasında senkronize kalmasına yardımcı olmak için Firebase Web SDK'sını kullanmalıdır. Bu, FirebaseServerApp'ü bir hizmet çalışanıyla uygulayarak kolaylaştırılabilir. Temel görev akışı şu şekildedir:

  1. Sunucuya yapılan isteklerde uygulamanız için doğru üstbilgileri ekleyen bir hizmet çalışanı uygulayın.
  2. Sunucudaki istekteki üstbilgileri alın ve FirebaseServerApp ile kimlik doğrulama kullanıcısına dönüştürün.

Arka uçları yönetme

App Hosting arka uçlarının temel yönetimi için komutlar Firebase CLI'de sağlanır. Bazı işlemler Firebase konsolunda da kullanılabilir. Bu bölümde, arka uç oluşturma ve silme dahil olmak üzere daha yaygın yönetim görevlerinden bazıları açıklanmaktadır.

Arka uç oluşturma

App Hosting arka ucu, App Hosting'nin web uygulamanızı oluşturmak ve çalıştırmak için oluşturduğu yönetilen kaynaklar koleksiyonudur. Tüm proje sahipleri, Firebase konsolunu veya Firebase KSA'yı kullanarak bir proje için ilk App Hosting arka ucunu oluşturabilir. Bu ilk kurulumdan sonra App Hosting yöneticileri ek arka uçlar da oluşturup yönetebilir. Ayrıntılar için Firebase App Hosting IAM rolleri başlıklı makaleyi inceleyin.

Firebase konsolu: Derleme menüsünden Uygulama Barındırma'yı, ardından Başlayın'ı seçin.

KSA: (13.15.4 veya sonraki sürümler) Arka uç oluşturmak için yerel proje dizininizin kökünden aşağıdaki komutu çalıştırın. Komutla birlikte projectID ve tercih ettiğiniz bölge parametrelerini belirtin:

firebase apphosting:backends:create --project PROJECT_ID --location us-central1

Hem konsolda hem de KSA'da, arka uçunuza bir ad atamak, GitHub bağlantısı oluşturmak ve aşağıdaki temel dağıtım ayarlarını yapılandırmak için talimatları uygulayın:

  • Uygulamanızın kök dizinini ayarlayın (varsayılan olarak /)

    Bu genellikle package.json dosyanızı bulacağınız yerdir.

  • Canlı şubeyi ayarlama

    Bu, GitHub deponuzun canlı URL'nize dağıtılan dalıdır. Genellikle özellik şubelerinin veya geliştirme şubelerinin birleştirildiği şubedir.

  • Otomatik kullanıma sunma işlemlerini kabul etme veya reddetme

    Otomatik kullanıma sunma özelliği varsayılan olarak etkindir. Arka uç oluşturma işlemi tamamlandığında, uygulamanızın App Hosting'e hemen dağıtılmasını seçebilirsiniz.

Arka uç silin

Bir arka uç hizmetini tamamen kaldırmak için önce Firebase CLI'yi kullanın, ardından diğer arka uç hizmetleri veya Firebase projenizin diğer yönleri tarafından kullanılabilecek kaynakları silmemek için özellikle dikkatli olarak ilgili öğeleri manuel olarak kaldırın.

  1. App Hosting arka uç hizmetini silmek için aşağıdaki komutu çalıştırın. Bu işlem, arka uç alanlarınızın tümünü devre dışı bırakır ve ilişkili Cloud Run hizmetini siler:

    firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID --location us-central1
    
  2. (İsteğe bağlı) Artifact Registry için Google Cloud Console sekmesinde, "firebaseapphosting-images" bölümünde arka uçunuzun resmini silin.

  3. Cloud Secret Manager'da, gizli anahtar adında "apphosting" bulunan tüm gizli anahtarları silin. Bu gizli anahtarların diğer arka uçlar veya Firebase projenizin diğer yönleri tarafından kullanılmadığından emin olmak için özel dikkat gösterin.