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, belirli ihtiyaçlarınız için arka uçları yönetip yapılandırmanıza olanak tanıyan araçlar sunar. Bu kılavuzda söz konusu araçlar ve süreçler açıklanmaktadır.
apphosting.yaml
oluşturma ve düzenleme
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ırma 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 nedenle, kaynak kontrolüne güvenli bir şekilde eklenebilir.
apphosting.yaml
oluşturmak için aşağıdaki komutu çalıştırın:
firebase init apphosting
Bu işlem, örnek (yorumlanmış) yapılandırmayla temel bir başlangıç apphosting.yaml
dosyası oluşturur. Düzenlendikten sonra, tipik bir apphosting.yaml
dosyası, arka uçtaki Cloud Run hizmetinin ayarları, bazı ortam değişkenleri ve Cloud Secret Manager tarafından yönetilen gizli dizilere yapılan bazı referanslarla birlikte 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 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 nasıl sağlanacağını 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
– Her sunum örneği için ayrılan bellek miktarı (MiB) (varsayılan 512)maxInstances
– Aynı anda çalıştırılacak maksimum container sayısı (varsayılan olarak 100'dür ve kota tarafından yönetilir)minInstances
: Her zaman etkin tutulacak kapsayıcı sayısı (varsayılan 0).concurrency
: Her sunum örneğinin alabileceği maksimum istek sayısı (varsayılan 80).
cpu
ve 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ın artırılması, CPU sınırlarının artırılmasını gerektirebilir:
- 4 GiB'den fazla için en az 2 CPU gerekir
- 8 GB'tan fazla bellek için en az 4 CPU gerekir.
- 16 GiB'den fazla bellek için en az 6 CPU gerekir.
- 24 GiB'den fazla bellek için en az 8 CPU gerekir.
Benzer şekilde, cpu
değeri eşzamanlılık ayarlarını etkiler. 1 CPU'dan daha düşük bir değer ayarlarsanız eşzamanlılığı 1 olarak ayarlamanız gerekir ve CPU yalnızca istek işleme sırasında tahsis edilir.
Ortamı yapılandırma
Bazen derleme süreciniz için ek yapılandırma yapmanız gerekir. Örneğin, üçüncü taraf API anahtarları veya ayarlanabilir ayarlar. App Hosting, projeniz için bu tür verileri depolamak ve almak üzere apphosting.yaml
içinde ortam yapılandırması sunar.
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
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
içinde, availability
özelliğini kullanarak hangi işlemlerin ortam değişkeninize erişebileceğini belirtebilirsiniz. Bir ortam değişkeninin yalnızca derleme ortamında veya yalnızca çalışma zamanı ortamında kullanılabilir olmasını kısıtlayabilirsiniz. Varsayılan olarak her ikisi için de kullanılabilir.
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- BUILD
- RUNTIME
Next.js uygulamalarında, bir değişkene tarayıcıdan erişilebilmesini sağlamak için NEXT_PUBLIC_
önekini dotenv dosyanızda yaptığınız gibi 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şkenlerPORT
K_SERVICE
K_REVISION
K_CONFIGURATION
Derleme ve çalıştırma komut dosyalarını geçersiz kılma
App Hosting, algılanan çerçeveye göre uygulamanızın derleme ve başlatma komutunu çıkarır. Özel bir derleme veya başlatma komutu kullanmak istiyorsanız App Hosting'nın varsayılanlarını apphosting.yaml
'da geçersiz kılabilirsiniz.
scripts:
buildCommand: next build --no-lint
runCommand: node dist/index.js
Derleme komutu geçersiz kılma, diğer tüm derleme komutlarından önceliklidir. Bu komut, uygulamanızı çerçeve bağdaştırıcılarının dışında bırakır ve App Hosting tarafından sağlanan çerçeveye özgü tüm optimizasyonları devre dışı bırakır. Uygulama özellikleriniz adaptörler tarafından iyi desteklenmediğinde kullanılması önerilir. Derleme komutunuzu değiştirmek ancak sağladığımız bağdaştırıcıları kullanmaya devam etmek istiyorsanız package.json
içindeki derleme komut dosyanızı App Hosting framework bağdaştırıcıları bölümünde açıklandığı gibi ayarlayın.
Uygulamanızı başlatmak için kullanmak istediğiniz belirli bir komut, App Hosting-inferred komutundan farklı olduğunda çalıştırma komutunu geçersiz kılma özelliğini kullanın.
Derleme çıkışını yapılandırma
App Hosting, çerçeve tarafından belirtilen kullanılmayan çıkış dosyalarını silerek uygulama dağıtımlarınızı varsayılan olarak optimize eder. Uygulama dağıtım boyutunuzu daha fazla optimize etmek veya varsayılan optimizasyonları yoksaymak istiyorsanız bu ayarı apphosting.yaml
bölümünde geçersiz kılabilirsiniz.
outputFiles:
serverApp:
include: [dist, server.js]
include
parametresi, uygulamanızı dağıtmak için gereken ve uygulama kök dizinine göre olan dizin ve dosyaların listesini alır. Tüm dosyaların saklandığından emin olmak istiyorsanız include değerini [.]
olarak ayarlayın. Bu durumda tüm dosyalar dağıtılır.
Gizli parametreleri depolama ve bunlara erişme
API anahtarları gibi hassas bilgiler gizli anahtar olarak saklanmalıdır. Hassas bilgilerin kaynak kontrolüne işlenmesini önlemek için apphosting.yaml
içindeki sırları referans olarak kullanabilirsiniz.
secret
türündeki parametreler, Cloud Secret Manager'da depolanan bir değere sahip dize parametrelerini temsil eder.
Gizli parametreler, değeri doğrudan türetmek yerine Cloud Secret Manager'da var olup olmadığı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 gizli bir parametrenin 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 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
KSA komutuyla gizli anahtarlar oluşturabilirsiniz. Gerekli izinleri eklemeniz istenir. Bu akış, gizli referansı apphosting.yaml
'ya otomatik olarak ekleme seçeneği sunar.
Cloud Secret Manager işlevlerinin tümünü kullanmak için Cloud Secret Manager konsolunu kullanabilirsiniz. Bu işlemi yaparsanız App Hosting arka ucunuza firebase
apphosting:secrets:grantaccess
CLI komutuyla izin vermeniz gerekir.
VPC erişimini yapılandırma
App Hosting arka uçunuz bir Sanal Özel Bulut (VPC) ağına bağlanabilir. Daha fazla bilgi ve örnek için Firebase App Hosting'ı bir VPC ağına bağlama başlıklı makaleyi inceleyin.
Erişimi yapılandırmak için vpcAccess
dosyanızdaki apphosting.yaml
eşlemeyi kullanın.
Tam alan adı veya kimlik kullanın. Kimlikler kullanıldığında, farklı bağlayıcılar/ağlar içeren hazırlık ve üretim ortamları arasında taşınabilirlik sağlanır.
runConfig:
vpcAccess:
egress: PRIVATE_RANGES_ONLY # Default value
networkInterfaces:
# Specify at least one of network and/or subnetwork
- network: my-network-id
subnetwork: my-subnetwork-id
Arka uçları yönetme
App Hosting arka uçlarının temel yönetimi için komutlar Firebase CLI ve Firebase konsolunda sağlanır. Bu bölümde, arka uç oluşturma ve silme gibi daha yaygın yönetim görevlerinden bazıları açıklanmaktadır.
Arka uç oluşturma
App HostingArka uçApp Hosting, web uygulamanızı oluşturmak ve çalıştırmak için App Hosting tarafından oluşturulan yönetilen kaynaklar topluluğudur.
Firebase konsolu: Derleme menüsünden Uygulama Hosting'i ve 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 ve projectID değerini bağımsız değişken olarak girin:
firebase apphosting:backends:create --project PROJECT_ID
Hem konsol hem de CLI için istemleri uygulayarak bir bölge seçin, GitHub bağlantısı oluşturun ve aşağıdaki temel dağıtım ayarlarını yapılandırın:
Uygulamanızın kök dizinini ayarlayın (varsayılan olarak
/
ayarlanır).Bu genellikle
package.json
dosyanızın bulunduğu yerdir.
Canlı dalı ayarlama
Bu, GitHub deponuzun canlı URL'nize dağıtılan dalıdır. Genellikle özellik dallarının veya geliştirme dallarının birleştirildiği daldır.
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ıktan sonra uygulamanızın hemen App Hosting'ya dağıtılmasını seçebilirsiniz.
Arka uçunuza bir ad atayın.
Arka uç silin
Bir arka ucu tamamen kaldırmak için önce Firebase CLI'yı veya Firebase konsolunu kullanarak arka ucu silin. Ardından, diğer arka uçlar ya da Firebase projenizin diğer yönleri tarafından kullanılabilecek kaynakları silmemeye özen göstererek ilgili öğeleri manuel olarak kaldırın.
Firebase konsolu: Ayarlar menüsünden Arka ucu sil'i seçin.
CLI: (13.15.4 veya sonraki sürümler)
App Hosting Backend'i silmek için aşağıdaki komutu çalıştırın. Bu işlem, arka uçunuzdaki tüm alanları devre dışı bırakır ve ilişkili Cloud Run hizmetini siler:
firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID
(İsteğe bağlı) Artifact Registry için Google Cloud Console sekmesinde, "firebaseapphosting-images" bölümündeki arka uç resminizi silin.
Cloud Secret Manager'da, gizli anahtar adında "apphosting" ifadesi 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.