Firebase App Hosting arka ucunuz bir Sanal Özel Bulut (VPC) ağına bağlanabilir. Bu sayede Firebase App Hostingarka uç, Cloud SQL, Spanner, Cloud Memorystore, Compute Engine veya Kubernetes'in dahili mikro hizmetleri gibi herkese açık IP adresleri kullanılarak erişilemeyen arka uç hizmetlerine erişebilir.
VPC erişimi yalnızca derleme zamanında (Cloud Build) değil, çalışma zamanında (Cloud Run kapsayıcınızdan) kullanılabilir.
VPC ağına nasıl bağlanacağınızı seçme
- Doğrudan VPC Çıkışı: Daha basit, daha hızlı ve daha ucuzdur. Kapsayıcı başına bir IP adresi kullanılır. Çoğu kullanım alanı için önerilir.
- Sunucusuz bağlayıcılar: Daha büyük uygulamalar için IP adreslerini havuzda toplar. Temel alınan sanal makine için ödeme yapılması gerekir. Fiyatlandırma ayrıntıları için VPC fiyatlandırma sayfasındaki "Sunucusuz VPC erişimi" bölümüne bakın.
apphosting.yaml'da yapılandırma
Erişimi yapılandırmak için apphosting.yaml dosyanızdaki vpcAccess eşlemesini kullanın.
Tam nitelikli bir ağ/bağlayıcı adı veya kimlik kullanın. Kimliklerin kullanılması, farklı bağlayıcılar/ağlar içeren hazırlama ve üretim ortamları arasında taşınabilirliğe olanak tanır.
Doğrudan VPC Çıkış Yapılandırması (apphosting.yaml):
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
Sunucusuz Bağlayıcı Yapılandırması (apphosting.yaml):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Örnek: Next.js uygulamasından Memorystore for Redis'e bağlanma
Redis veya Memcached gibi önbelleğe alma sistemleri, bir uygulama için hızlı bir veri önbelleğe alma katmanı oluşturmak amacıyla yaygın olarak kullanılır. Bu örnekte, Firebase App Hosting arka ucunuzla aynı Google Cloud projesinde Memorystore for Redis'i nasıl ayarlayacağınız ve Direct VPC egress kullanarak nasıl bağlanacağınız gösterilmektedir.
0. adım: Memorystore for Redis örneği oluşturun
- Google Cloud konsolunda Memorystore for Redis sayfasına gidin.
- Firebase App Hosting için kullandığınız projenin seçildiğinden emin olun.
- Bu sayfaya erişemiyorsanız projeniz için faturalandırmanın etkinleştirildiğinden ve Memorystore API'yi etkinleştirdiğinizden emin olun.
- Create Instance'ı (Örnek oluştur) seçin.
- Yeni örneği tercih ettiğiniz ayarlarla yapılandırın. Kullanabileceğiniz bazı örnek değerler:
- Instance ID (Örnek kimliği) alanına
my-redis-cachegirin. - Görünen ad bölümüne
Redis cachegirin. - Katman seçicinin altında Basic'i (Temel) seçin. Temel katman, verilerinizi yedeklemek için bir kopya düğümü kullanan standart katmanın aksine bağımsız bir Redis düğümünü ifade eder.
- Bölge seçiciden App Hosting arka uçunuzun bölgesini seçin. Bu değeri, arka uçunuzun bölgesine uyacak şekilde ayarladığınızdan emin olun.
- Bölge seçiciden herhangi birini seçin.
- Kapasite bölümüne
5yazın. Bu işlem, örnek kapasitenizi 5 GB olarak ayarlar. - Sürüm (önerilir) bölümünde
5.0'yı seçin. - Yetkili ağ seçiciden varsayılan'ı seçin.
- Instance ID (Örnek kimliği) alanına
1. adım: apphosting.yaml öğesini VPC ağınızın kimliğiyle güncelleyin
- Google Cloud konsolunda VPC ağları sayfasını ziyaret edin.
- Redis için Memorystore örneğinizin VPC ağı kimliğini bulun (genellikle
defaultolur). VPC ağ kimliğini kullanarak
apphosting.yamlbölümünde doğrudan VPC çıkış yapılandırmasını ayarlayın:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
2. adım: Uygulamanızı Redis'e yönlendiren ortam değişkenleri ekleyin
- Google Cloud konsolunda Memorystore for Redis örneğinizin "Bağlantılar" sekmesinde bağlantı bilgilerini (ana makine ve bağlantı noktası) bulun.
REDISPORTveREDISHOSTortam değişkenleriyle Redis'e bağlanın.apphosting.yamlkonsolundaki ana makine ve bağlantı noktası değerlerini kullanarak bunları Google Cloud içinde ayarlayın:env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
3. adım: Uygulamanızda Redis'i kullanın
redis npm paketini yükleyin:
npm install redis@latestKodunuzdan Redis önbelleğinize erişin. Önceki adımda yapılandırılan ortam değişkenlerini kullanın. Örneğin, Next.js rota işleyicisinde bir önbellekten okuma işlemi şu şekilde yapılabilir:
src/lib/redis.jsimport { createClient } from "redis"; // Set these environment variables in apphosting.yaml const REDISHOST = process.env.REDISHOST; const REDISPORT = process.env.REDISPORT; let redisClient; export async function getClient(req, res) { // Only connect if a connection isn't already available if (!redisClient) { redisClient = await createClient(REDISPORT, REDISHOST) .on("error", (err) => console.error("Redis Client Error", err)) .connect(); } return redisClient; }src/app/counter/route.jsimport { getClient } from "@/lib/redis.js"; export async function GET(request) { const redisClient = await getClient(); const count = await redisClient.get("counter"); return Response.json({ count }); } export async function POST(request) { const redisClient = await getClient(); const count = await redisClient.incr("counter"); return Response.json({ count }); }
4. adım (isteğe bağlı): Uygulamanızı yerel geliştirme için yapılandırın
Firebase App Hosting Emülatör, apphosting.emulator.yaml kullanarak değerleri geçersiz kılabilir. Burada, REDISHOST değerini localhost'a yönlendirecek şekilde değiştirebilirsiniz. Böylece Redis'in yerel bir kurulumunu kullanarak yerel olarak geliştirebilirsiniz.
- Redis'i yerel makinenize yükleme
Yerel örneğinize referans vermek için
apphosting.emulators.yamloluşturun veya düzenleyin:env: - variable: REDISHOST value: 127.0.0.1