Dinamik içeriklerinizi oluşturmak ve yayınlamak ya da REST API'leri mikro hizmet olarak oluşturmak için Cloud Run'ü Firebase Hosting ile eşleyin.
Cloud Run kullanarak, container görüntüsüne paketlenmiş bir uygulama dağıtabilirsiniz. Ardından Firebase Hosting kullanarak HTTPS isteklerini, container mimarisine alınmış uygulamanızı tetiklemeye yönlendirebilirsiniz.
- Cloud Run, Go, Node.js, Python ve Java dahil olmak üzere çeşitli dilleri destekler. Böylece, dilediğiniz programlama dilini ve çerçevesini kullanma esnekliği elde edersiniz.
- Cloud Run Kapsayıcı resminizi, gelen istekleri işlemek için otomatik ve yatay olarak ölçeklendirir, ardından talep azaldığında ölçeği düşürür.
- Yalnızca istek işleme sırasında tüketilen CPU, bellek ve ağ iletişimi için ödeme yaparsınız.
Firebase Hosting ile entegre Cloud Run için örnek kullanım alanları ve örnekler için sunucusuz hizmetlere genel bakış sayfamızı ziyaret edin.
Bu kılavuzda aşağıdakiler açıklanmaktadır:
- Basit bir Hello World uygulaması yazma
- Uygulamayı kapsayıcıya alma ve Container Registry'a yükleme
- Container görüntüsünü Cloud Run'e dağıtma
- Hosting isteklerini kapsayıcı uygulamanıza yönlendirme
Dinamik içerik yayınlamanın performansını artırmak için isteğe bağlı olarak önbellek ayarlarınızı düzenleyebileceğinizi unutmayın.
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ırma ayarlarını yapın
Cloud Run, ücretsiz kullanım kotası sunar ancak Cloud Run'ü kullanmak veya denemek için Firebase projenizle ilişkilendirilmiş bir Cloud Billing hesabınız olmalıdır.
API'yi etkinleştirme ve SDK'yı yükleme
Google API Konsolu'nda Cloud Run API'yi etkinleştirin:
Google API Konsolu'nda Cloud Run API sayfasını açın.
İstendiğinde Firebase projenizi seçin.
Cloud Run API sayfasında Etkinleştir'i tıklayın.
Cloud SDK'yı yükleyip başlatın.
gcloud
aracının doğru proje için yapılandırıldığından emin olun:gcloud config list
1. Adım: Örnek uygulamayı yazın
Cloud Run dilinin, aşağıdaki örnekte gösterilen dillerin yanı sıra diğer birçok dili desteklediğini unutmayın.
Go
helloworld-go
adlı yeni bir dizin oluşturun ve ardından dizini şu şekilde değiştirin:mkdir helloworld-go
cd helloworld-go
helloworld.go
adında yeni bir dosya oluşturun, ardından aşağıdaki kodu ekleyin:Bu kod,
PORT
ortam değişkeni tarafından tanımlanan bağlantı noktasında dinleme yapan temel bir web sunucusu oluşturur.
Uygulamanız tamamlandı ve kapsayıcıya yerleştirilip Container Registry'e yüklenmeye hazır.
Node.js
helloworld-nodejs
adlı yeni bir dizin oluşturun ve ardından dizin olarak değiştirin:mkdir helloworld-nodejs
cd helloworld-nodejs
Aşağıdaki içerikleri içeren bir
package.json
dosyası oluşturun:index.js
adında yeni bir dosya oluşturun, ardından aşağıdaki kodu ekleyin:Bu kod,
PORT
ortam değişkeni tarafından tanımlanan bağlantı noktasında dinleme yapan temel bir web sunucusu oluşturur.
Uygulamanız tamamlandı ve kapsayıcıya yerleştirilip Container Registry'e yüklenmeye hazır.
Python
helloworld-python
adlı yeni bir dizin oluşturun ve ardından dizin olarak değiştirin:mkdir helloworld-python
cd helloworld-python
app.py
adlı 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ında dinleme yapan temel bir web sunucusu oluşturur.
Uygulamanız tamamlandı ve kapsayıcıya yerleştirilip Container Registry'e yüklenmeye hazır.
Java
Java SE 8 veya sonraki bir JDK ile CURL'i yükleyin.
Bunu yalnızca bir sonraki adımda yeni web projesini oluşturmak için yapmamız gerektiğini unutmayın. Daha sonra açıklanacak olan Dockerfile, tüm bağımlılıkları kapsayıcıya yükler.
Konsolda, 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 işlem, bir SpringBoot projesi oluşturur.
/
eşlemesini işlemek için bir@RestController
veTARGET
ortam değişkenini sağlamak için bir@Value
alanı ekleyereksrc/main/java/com/example/helloworld/HelloworldApplication.java
içindekiSpringBootApplication
sınıfını güncelleyin:Bu kod,
PORT
ortam değişkeni tarafından tanımlanan bağlantı noktasında dinleme yapan temel bir web sunucusu oluşturur.
Uygulamanız tamamlandı ve kapsayıcıya yerleştirilip Container Registry'e yüklenmeye hazır.
2. Adım: Bir uygulamayı container mimarisine alın ve Container Registry hizmetine 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.Go
Node.js
Python
Java
Dockerfile'inizi içeren dizinden aşağıdaki komutu çalıştırarak Cloud Build kullanarak container görüntünüzü oluşturun:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
İşlem başarılı olduğunda, resim adını
(gcr.io/PROJECT_ID/helloworld
) içeren bir BAŞARI mesajı görürsünüz.
Container görüntüsü artık Container Registry konumunda depolanıyor ve istenirse yeniden kullanılabilir.
Kapsayıcınızı yerel olarak derlemek için Cloud Build yerine yerel olarak yüklü bir Docker sürümünü kullanabileceğinizi unutmayın.
3. Adım: Container görüntüsünü Cloud Run ürününe dağıtın
Şu komutu kullanarak dağıtın:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
İstendiğinde:
- Bölge seçin (örneğin
us-central1
) - Hizmet adını onaylayın (örneğin,
helloworld
) - Kimliği doğrulanmayan çağrılara izin vermek için
Y
yanıtını verin.
- Bölge seçin (örneğin
En iyi performans için Cloud Run hizmetinizi aşağıdaki bölgeleri kullanarak Hosting ile birlikte barındırın:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Hosting'dan Cloud Run'e 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. İşlem başarılı olursa komut satırı hizmet URL'sini gösterir. Örneğin:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Hizmet URL'sini bir web tarayıcısında açarak dağıtılan kapsayıcınızı ziyaret edin.
Bir sonraki adımda, bu kapsayıcı uygulamaya Firebase Hosting URL'sinden nasıl erişeceğiniz açıklanmaktadır. Böylece, Firebase'de barındırılan siteniz için dinamik içerik oluşturabilir.
4. adım: Barındırma isteklerini kapsayıcı uygulamanıza yönlendirin
Yeniden yazma kuralları sayesinde, belirli kalıplarla eşleşen istekleri tek bir hedefe yönlendirebilirsiniz.
Aşağıdaki örnekte, Hosting sitenizdeki /helloworld
sayfasından gelen tüm isteklerin helloworld
kapsayıcı örneğinizin başlatılmasını ve çalışmasını tetiklemek için nasıl yönlendirileceği gösterilmektedir.
Aşağıdaki koşulların karşılandığından emin olun:
Firebase İTŞ'nin en son sürümüne sahip olmalısınız.
Firebase Hosting öğesini başlattınız.
CLI'yi yükleme ve Hosting'ü başlatma hakkında ayrıntılı talimatlar için Hosting için Başlangıç Kılavuzu'na bakın.
firebase.json
dosyanızı açın.hosting
bölümü 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
Kapsayıcınıza artık aşağıdaki URL'lerden erişilebilir:
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 bilgi için Hosting yapılandırma sayfasını ziyaret edin. Çeşitli Hosting yapılandırmaları için yanıtların öncelik sırası hakkında da bilgi edinebilirsiniz.
Yerel olarak test et
Geliştirme sırasında container görüntünüzü yerel olarak çalıştırıp test edebilirsiniz. Ayrıntılı talimatlar için Cloud Run belgelerini inceleyin.
Sonraki adımlar
Dinamik içeriğinizin küresel bir CDN'de önbelleğe alınmasını ayarlayın.
Firebase Admin SDK'sını kullanarak diğer Firebase hizmetleriyle etkileşim kurun.
Cloud Run hakkında daha fazla bilgi edinin. Kapsayıcıların oluşturulması, yönetilmesi ve yapılandırılması ile ilgili ayrıntılı "Nasıl Yapılır?" kılavuzları da bu bilgiler arasında yer alıyor.
Cloud Run için fiyatlandırmayı ve kotaları ve sınırları inceleyin.