Ortam 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.
Arka ucun Cloud Run hizmeti ayarlarını, bazı ortam değişkenlerini ve Cloud Secret Manager tarafından yönetilen gizli anahtar referanslarını içeren tipik bir apphosting.yaml
dosyası aşağıdaki gibi görünür:
# 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 ayarlar hakkında daha fazla bilgi ve bağlam sağlanmaktadır.
Cloud Run hizmet ayarlarını yapılandırma
apphosting.yaml
ayarlarıyla Cloud Run hizmetinizin sağlanma şeklini yapılandırabilirsiniz. Cloud Run hizmeti için kullanılabilen ayarlar runConfig
nesnesinde sağlanır:
cpu
- Her sunum ö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 olarak 80).
cpu
ile memoryMiB
arasındaki önemli ilişkiye dikkat edin. Bellek, 128 ile 32768 arasında herhangi bir tam sayı değerine ayarlanabilir ancak bellek sınırını artırmak CPU sınırlarını artırmayı gerektirebilir:
- 4GiB üzeri bir hız için en az 2 CPU gerekir
- 8GiB üzeri bir hız 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'den düşük bir CPU değeri ayarlarsanız eşzamanlılığı 1 olarak ayarlamanız gerekir. CPU yalnızca istek işleme sırasında tahsis edilir.
Derleme ortamını yapılandırma
Bazen derleme işleminiz için üçüncü taraf API anahtarları veya ayarlanabilir ayarlar gibi ek yapılandırmalar kullanmanız gerekir. App Hosting, projenizde bu tür verileri depolamak ve almak için apphosting.yaml
uygulamasında ortam yapılandırması sunar.
env:
- variable: STORAGE_BUCKET
value: mybucket.appspot.com
Next.js uygulamalarında, ortam değişkenleri içeren alanv dosyaları da Uygulama Barındırma 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ı veya yalnızca çalışma zamanı ortamı tarafından kullanılabilecek ş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ında, bir değişkeni tarayıcıda erişilebilir hale getirmek için NEXT_PUBLIC_
önekini, dotenv dosyanızda kullandığınız şekilde 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 şu anahtarların hiçbirini kullanmayın:
X_FIREBASE_
ile başlayan tüm değişkenlerPORT
K_SERVICE
K_REVISION
K_CONFIGURATION
Gizli anahtar parametrelerini depolama ve bunlara erişme
API anahtarları gibi hassas bilgiler, gizli anahtar olarak depolanmalıdır. Hassas bilgilerin kaynak kontrolünde kontrol edilmesini önlemek için apphosting.yaml
içindeki gizli anahtarlara referans verebilirsiniz.
secret
türündeki parametreler, Cloud Secret Manager'da depolanan bir değere sahip 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 ucunuz tarafından kullanılabilen bir gizli parametrenin değeri, arka uç oluşturulduğu sırada gizli anahtarın mevcut en son sürümüne sabitlenir. Parametrelerin sürüm oluşturma ve yaşam döngüsü yönetimiyle ilgili gereksinimleriniz 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
CLI komutuyla gizli anahtar oluşturabilirsiniz. Gerekli izinleri eklemeniz istenir. Bu akışta, gizli anahtar referansını apphosting.yaml
öğesine otomatik olarak ekleme seçeneği sunulur.
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 Uygulama Barındırma arka ucunuza izin vermeniz gerekir.
Firebase Auth durumunu senkronize et
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 işlemi, bir Service Worker ile FirebaseServerApp
uygulayarak kolaylaştırabilirsiniz. Temel görev akışı şöyledir:
- Sunucuya yapılan isteklerde uygulamanız için doğru başlıkları ekleyen bir hizmet çalışanı uygulayın.
- Sunucudaki istekten üstbilgileri alın ve
FirebaseServerApp
ile bunu yetkili bir kullanıcıya dönüştürün.