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

App Hosting, kullanım kolaylığı ve az bakım için tasarlanmıştır. Çoğu kullanım alanı için optimize edilmiş varsayılan ayarlar vardır. 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 desteklediğinden kaynak kontrolüne giriş yapmayı güvenli hale getirir.

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

firebase init apphosting

Bu işlem, örnek (yorum yapılan) yapılandırmasıyla 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.appspot.com
    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 - MiB cinsinden her sunum örneğine ayrılan bellek miktarı (varsayılan 512)
  • maxInstances - Aynı anda çalıştırılabilecek maksimum container sayısı (varsayılan olarak 100'dür ve kota ile 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 üzeri için en az 6 CPU gerekir
  • 24 GiB üzeri için en az 8 CPU gerekir

Benzer şekilde, cpu değeri eşzamanlılık ayarlarını etkiler. 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ırmaya ihtiyacınız olur. 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.appspot.com

Next.js uygulamalarında, 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 ürününde, availability özelliğini kullanarak hangi işlemlerin ortam değişkeninize erişebileceğini 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 taraf da kullanılabilir.

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

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

env:
-   variable: NEXT_PUBLIC_STORAGE_BUCKET
    value: mybucket.appspot.com
    availability:
    -   BUILD
    -   RUNTIME

Geçerli değişken anahtarları A-Z karakter 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 anahtar parametrelerini depolama ve bunlara erişme

API anahtarları gibi hassas bilgiler gizli anahtar olarak saklanmalıdır. Hassas bilgilerin kaynak denetiminde 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 anahtar parametreleri, değeri doğrudan türetmek yerine, Cloud Secret Manager'daki mevcut olup olmadıkları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 anahtarlar 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'ın tüm işlevlerinden yararlanmak için Cloud Secret Manager konsolunu kullanabilirsiniz. Bunu yaparsanız firebase apphosting:secrets:grantaccess CLI komutunu kullanarak App Hosting arka ucunuza izin vermeniz gerekir.

Firebase Auth durumunu senkronize etme

Firebase Auth kullanan uygulamalar, kimlik doğrulama durumunun istemci ve sunucu arasında senkronize edilmesine yardımcı olmak için Firebase Web SDK'sını kullanmayı düşünmelidir. 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 tarafından Web uygulamanızı derlemek ve çalıştırmak için oluşturulan yönetilen kaynakların koleksiyonudur. Firebase konsolunu veya Firebase KSA'yı kullanarak App Hosting arka uçları oluşturup listeleyebilirsiniz.

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

KSA: (Sürüm 13.15.4 veya sonrası) Bir arka uç oluşturmak için yerel proje dizininizin kökünden aşağıdaki komutu çalıştırın. proje kimliğinizi ve tercih ettiğiniz bölgeyi bağımsız değişken olarak sağlayın:

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 /)

    package.json dosyanız genellikle burada bulunur.

  • 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 işlemleri 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 adında "apphosting" (uygulama barındırma) 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.