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 yönlendirerek kapsayıcı uygulamanızı tetikleyebilirsiniz.
- 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 Artifact 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ırmayı ayarlama
Cloud Run, ücretsiz kullanım kotası sunar ancak Cloud Run'ü kullanmak veya denemek için Firebase projenizle ilişkili 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'ün aşağıdaki örnekte gösterilen dillerin yanı sıra 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
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 Artifact 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
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 Artifact 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 Artifact 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 ve ardından unzip komutlarını kullanarak yeni bir boş web projesi oluşturun:
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
ekleyerek 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 Artifact Registry'e yüklenmeye hazır.
2. Adım: Uygulamayı kapsayıcıya alın ve Artifact 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.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.
Kapsayıcı resmi artık Artifact Registry içinde depolanır 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: Kapsayıcı görüntüsünü Cloud Run'ye 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ğrulanmayan çağrılara izin vermek için
Y
ile yanıt verin.
- Bir bölge seçin (örneğin,
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 CLI'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üne 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'ler üzerinden erişebilirsiniz:
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. Ayrıca, çeşitli Hosting yapılandırmaları için yanıtların öncelik sırası hakkında bilgi edinebilirsiniz.
Yerel olarak test etme
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.
Kapsayıcıları ayarlama, yönetme ve yapılandırmayla ilgili ayrıntılı kullanım kılavuzları da dahil olmak üzere Cloud Run hakkında daha fazla bilgi edinin.
Cloud Run için fiyatlandırmayı ve kotaları ve sınırları inceleyin.