Dinamik içeriğinizi oluşturup sunmak veya REST API'lerini mikro hizmetler olarak oluşturmak için Cloud Run'ı Firebase Hosting ile eşleştirin.
Cloud Run'ı kullanarak konteyner görüntüsünde paketlenmiş bir uygulamayı dağıtabilirsiniz. Ardından, Firebase Hosting'i kullanarak konteynerli uygulamanızı tetiklemek için HTTPS isteklerini yönlendirebilirsiniz.
- Cloud Run, çeşitli dilleri (Go, Node.js, Python ve Java dahil) destekleyerek size istediğiniz programlama dilini ve çerçeveyi kullanma esnekliği sunar.
- Cloud Run, alınan istekleri işlemek için kapsayıcı görüntünüzü otomatik ve yatay olarak ölçeklendirir , ardından talep azaldığında ölçeği küçültür.
- Yalnızca istek işleme sırasında tüketilen CPU, bellek ve ağ iletişimi için ödeme yaparsınız.
Örneğin, Firebase Hosting ile entegre Cloud Run için kullanım senaryoları ve örnekleri için sunucusuz genel bakış sayfamızı ziyaret edin.
Bu kılavuz size aşağıdakileri nasıl yapacağınızı gösterir:
- Basit bir Merhaba Dünya uygulaması yazın
- Bir uygulamayı kapsayıcıya alın ve Container Registry'ye yükleyin
- Container görüntüsünü Cloud Run'a dağıtın
- Barındırma isteklerini konteynerli uygulamanıza yönlendirin
Dinamik içerik sunma performansını artırmak için isteğe bağlı olarak önbellek ayarlarınızı ayarlayabileceğinizi unutmayın.
Sen başlamadan önce
Cloud Run'ı kullanmadan önce Cloud Billing hesabı oluşturma, Cloud Run API'yi etkinleştirme ve gcloud
komut satırı aracını yükleme gibi bazı başlangıç görevlerini tamamlamanız gerekir.
Projeniz için faturalandırmayı ayarlayın
Cloud Run ücretsiz kullanım kotası sunar ancak Cloud Run'ı kullanmak veya denemek için yine de Firebase projenizle ilişkili bir Cloud Billing hesabınızın olması gerekir.
API'yi etkinleştirin ve SDK'yı yükleyin
Google API konsolunda Cloud Run API'yi etkinleştirin:
Google API konsolunda Cloud Run API sayfasını açın.
İstendiğinde Firebase projenizi seçin.
Cloud Run API sayfasında Etkinleştir'e tıklayın.
Cloud SDK'yı yükleyin ve başlatın .
gcloud
aracının doğru proje için yapılandırıldığını kontrol edin:gcloud config list
Adım 1 : Örnek uygulamayı yazın
Cloud Run'ın aşağıdaki örnekte gösterilen dillere ek olarak başka birçok dili de desteklediğini unutmayın.
Gitmek
helloworld-go
adında yeni bir dizin oluşturun, ardından dizini bu dizinle değiştirin:mkdir helloworld-go
cd helloworld-go
helloworld.go
adında yeni bir dosya oluşturun ve ardından aşağıdaki kodu ekleyin:Bu kod,
PORT
ortam değişkeni tarafından tanımlanan bağlantı noktasını dinleyen temel bir web sunucusu oluşturur.
Uygulamanız tamamlandı ve konteynere alınmaya ve Container Registry'ye yüklenmeye hazır.
Node.js
helloworld-nodejs
adında yeni bir dizin oluşturun, ardından dizini bu dizinle değiştirin:mkdir helloworld-nodejs
cd helloworld-nodejs
Aşağıdaki içeriklere sahip bir
package.json
dosyası oluşturun:index.js
adında yeni bir dosya oluşturun ve ardından aşağıdaki kodu ekleyin:Bu kod,
PORT
ortam değişkeni tarafından tanımlanan bağlantı noktasını dinleyen temel bir web sunucusu oluşturur.
Uygulamanız tamamlandı ve konteynere alınmaya ve Container Registry'ye yüklenmeye hazır.
Python
helloworld-python
adında yeni bir dizin oluşturun, ardından dizini bu dizinle değiştirin:mkdir helloworld-python
cd helloworld-python
app.py
adında yeni bir dosya oluşturun ve ardından aşağıdaki kodu ekleyin:Bu kod,
PORT
ortam değişkeni tarafından tanımlanan bağlantı noktasını dinleyen temel bir web sunucusu oluşturur.
Uygulamanız tamamlandı ve konteynere alınmaya ve Container Registry'ye yüklenmeye hazır.
Java
Java SE 8 veya üzeri JDK ve CURL'yi yükleyin.
Bunu yalnızca bir sonraki adımda yeni web projesini oluşturmak için yapmamız gerektiğini unutmayın. Daha sonra anlatılacak olan Dockerfile, tüm bağımlılıkları konteynere yükleyecektir.
Konsoldan cURL'yi kullanarak yeni bir boş web projesi oluşturun ve ardından komutları açın:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Bu bir SpringBoot projesi oluşturur.
/ eşlemesini işlemek için bir
@RestController
ekleyerek ve ayrıcaTARGET
ortam değişkenini sağlamak için bir@Value
alanı ekleyereksrc/main/java/com/example/helloworld/HelloworldApplication.java
SpringBootApplication
sınıfını güncelleyin/
Bu kod,
PORT
ortam değişkeni tarafından tanımlanan bağlantı noktasını dinleyen temel bir web sunucusu oluşturur.
Uygulamanız tamamlandı ve konteynere alınmaya ve Container Registry'ye yüklenmeye hazır.
Adım 2 : Bir uygulamayı kapsayıcıya alın ve Container Registry'ye yükleyin
Kaynak dosyalarla aynı dizinde
Dockerfile
adlı yeni bir dosya oluşturarak örnek uygulamayı kapsayıcıya alın. Aşağıdaki içeriği dosyanıza kopyalayın.Gitmek
Node.js
Python
Java
Docker dosyanızı içeren dizinden aşağıdaki komutu çalıştırarak Cloud Build'i kullanarak konteyner görüntünüzü oluşturun:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Başarı üzerine, resim adını içeren bir BAŞARI mesajı göreceksiniz
(gcr.io/ PROJECT_ID /helloworld
).
Kapsayıcı görüntüsü artık Container Registry'de depolanıyor ve istenirse yeniden kullanılabilir.
Kapsayıcınızı yerel olarak oluşturmak için Cloud Build yerine Docker'ın yerel olarak yüklenmiş bir sürümünü kullanabileceğinizi unutmayın.
3. Adım : Container görüntüsünü Cloud Run'a dağıtın
Aşağıdaki komutu kullanarak dağıtın:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
İstendiğinde:
- Bir bölge seçin (örneğin
us-central1
) - Hizmet adını onaylayın (örneğin,
helloworld
) - Kimliği doğrulanmamış çağrılara izin vermek için
Y
yanıtını verin
- Bir bölge seçin (örneğin
En iyi performansı elde etmek için aşağıdaki bölgeleri kullanarak Cloud Run hizmetinizi Barındırma ile birlikte konumlandırın:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
Hosting'den Cloud Run'a yeniden yazma işlemleri aşağıdaki bölgelerde desteklenir:
-
asia-east1
-
asia-east2
-
asia-northeast1
-
asia-northeast2
-
asia-northeast3
-
asia-south1
-
asia-south2
-
asia-southeast1
-
asia-southeast2
-
australia-southeast1
-
australia-southeast2
-
europe-central2
-
europe-north1
-
europe-southwest1
-
europe-west1
-
europe-west12
-
europe-west2
-
europe-west3
-
europe-west4
-
europe-west6
-
europe-west8
-
europe-west9
-
me-central1
-
me-west1
-
northamerica-northeast1
-
northamerica-northeast2
-
southamerica-east1
-
southamerica-west1
-
us-central1
-
us-east1
-
us-east4
-
us-east5
-
us-south1
-
us-west1
-
us-west2
-
us-west3
-
us-west4
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
Dağıtımın tamamlanması için birkaç dakika bekleyin. Başarı durumunda komut satırı hizmet URL'sini görüntüler. Örneğin:
https://helloworld- RANDOM_HASH -us-central1.a.run.appHizmet URL'sini bir web tarayıcısında açarak dağıtılan kapsayıcınızı ziyaret edin.
Bir sonraki adım, Firebase tarafından barındırılan siteniz için dinamik içerik oluşturabilmesi amacıyla kapsayıcıya alınmış bu uygulamaya bir Firebase Barındırma URL'sinden nasıl erişeceğiniz konusunda size yol gösterir.
4. Adım: Barındırma isteklerini konteynerli uygulamanıza yönlendirin
Yeniden yazma kurallarıyla , belirli kalıplarla eşleşen istekleri tek bir hedefe yönlendirebilirsiniz.
Aşağıdaki örnek, helloworld
konteyner örneğinizin başlatılmasını ve çalıştırılmasını tetiklemek için Hosting sitenizdeki /helloworld
sayfasından gelen tüm istekleri nasıl yönlendireceğinizi gösterir.
Emin olun:
Firebase CLI'nin en son sürümüne sahipsiniz.
Firebase Hosting'i başlattınız.
CLI'yi yükleme ve Barındırma'yı başlatma hakkında ayrıntılı talimatlar için Barındırma için Başlangıç kılavuzuna bakın.
firebase.json
dosyanızı açın.hosting
bölümünün altına aşağıdakirewrite
yapılandırmasını ekleyin:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/helloworld", "run": { "serviceId": "helloworld", // "service name" (from when you deployed the container image) "region": "us-central1", // optional (if omitted, default is us-central1) "pinTag": true // optional (see note below) } } ] }
Proje dizininizin kökünden aşağıdaki komutu çalıştırarak barındırma yapılandırmanızı sitenize dağıtın:
firebase deploy --only hosting
Bu özellik sayesinde, sitenizin dinamik içeriğini oluşturmak için Cloud Run hizmetinizin revizyonunun statik Hosting kaynaklarınızla ve Hosting yapılandırmanızla senkronize olmasını sağlayabilirsiniz. Ayrıca bu özellik, Hosting önizleme kanallarında Cloud Run'a yeniden yazma işlemlerinizi önizlemenize olanak tanır.
hosting.rewrites
yapılandırmasının birrun
bloğuna"pingTag": true
eklerseniz statik Barındırma kaynaklarınız ve yapılandırmanız, dağıtım sırasında Cloud Run hizmetinin en son revizyonuna sabitlenir. Sitenizin bir sürümünü geri alırsanız "sabitlenmiş" Cloud Run hizmetinin revizyonu da geri alınır.Bu özellik, hizmet başına 1000 etiket ve bölge başına 2000 etiket sınırına sahip Cloud Run etiketlerini temel alır. Bu, yüzlerce dağıtımdan sonra bir sitenin en eski sürümlerinin çalışmayı durdurabileceği anlamına gelir.
Kapsayıcınıza artık aşağıdaki URL'ler aracılığıyla ulaşılabilir:
Firebase alt alan adlarınız:
PROJECT_ID .web.app/
vePROJECT_ID .firebaseapp.com/
Bağlı tüm özel alanlar :
CUSTOM_DOMAIN /
Yeniden yazma kuralları hakkında daha fazla ayrıntı için Barındırma yapılandırma sayfasını ziyaret edin. Ayrıca çeşitli Barındırma yapılandırmalarına yönelik yanıtların öncelik sırası hakkında da bilgi edinebilirsiniz.
Yerel olarak test edin
Geliştirme sırasında kapsayıcı görüntünüzü yerel olarak çalıştırabilir ve test edebilirsiniz. Ayrıntılı talimatlar için Cloud Run belgelerini ziyaret edin.
Sonraki adımlar
Dinamik içeriğinizin küresel bir CDN'de önbelleğe alınmasını ayarlayın .
Firebase Admin SDK'yı kullanarak diğer Firebase hizmetleriyle etkileşim kurun.
Container'ları kurmaya, yönetmeye ve yapılandırmaya yönelik ayrıntılı nasıl yapılır kılavuzları da dahil olmak üzere Cloud Run hakkında daha fazla bilgi edinin.
Cloud Run'ın fiyatlandırmasını , kotalarını ve sınırlarını inceleyin.