Firebase App Hosting arka uçunuz bir Sanal Özel Bulut (VPC) ağına bağlanabilir. Bu sayede, Firebase App Hosting arka uçunuzun Cloud SQL, Spanner, Cloud Memorystore veya Kubernetes dahili mikro hizmetler gibi herkese açık IP adresleri kullanılarak erişilemeyen arka uç hizmetlerine erişmesine izin verilir.Compute Engine
VPC erişimi yalnızca çalışma zamanında (Cloud Run kapsayıcınızdan) kullanılabilir, derleme zamanında (Cloud Build) kullanılamaz.
apphosting.yaml
'te yapılandırma
Erişimi yapılandırmak için apphosting.yaml
dosyanızdaki vpcAccess
eşlemesini kullanın.
Tam nitelikli bir ağ adı veya kimlik kullanın. Kimlikleri kullanmak, farklı bağlayıcılar/ağlar içeren hazırlık ve üretim ortamları arasında taşınabilirlik sağlar.
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
Ö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 uçunuzla aynı Google Cloud projesinde Redis için Memorystore'u nasıl ayarlayacağınız ve doğrudan VPC çıkışı kullanarak nasıl bağlanacağınız gösterilmektedir.
0. adım: Redis için Memorystore örneği oluşturun
- Google Cloud konsolunda Redis için Memorystore sayfasına gidin.
- Firebase App Hosting için kullandığınız projenin seçildiğinden emin olun.
- Bu sayfaya erişemiyorsanız projenizde faturalandırmanın etkinleştirildiğinden ve Memorystore API'yi etkinleştirdiğinizden emin olun.
- Örnek oluştur'u seçin.
- Yeni örneği tercih ettiğiniz ayarlarla yapılandırın. Kullanabileceğiniz bazı örnek değerler aşağıda verilmiştir:
- Örnek kimliği bölümüne
my-redis-cache
yazın. - Görünen ad alanına
Redis cache
yazın. - Katman seçicinin altında Temel'i seçin. Temel katman, verilerinizi yedeklemek için kopya düğüm kullanan standart katmanın aksine bağımsız bir Redis düğümünü belirtir.
- Bölge seçicisinden App Hosting arka uç sunucunuzun bölgesini seçin. Bu değeri, arka uç bölgenizle eşleşecek şekilde ayarladığınızdan emin olun.
- Bölge seçiciden herhangi birini seçin.
- Kapasite bölümüne
5
yazın. Bu işlem, örnek kapasitenizi 5 GB olarak ayarlar. - Sürüm bölümünde
5.0
simgesini seçin (önerilen). - Yetkili ağ seçicisinden varsayılan'ı seçin.
- Örnek kimliği bölümüne
1. adım: apphosting.yaml
değerini VPC ağ kimliğinizle güncelleyin
- Google Cloud konsolunda VPC ağları sayfasını ziyaret edin.
- Redis için Memorystore örneğinizin VPC ağ kimliğini bulun (genellikle
default
olur). VPC ağ kimliğini kullanarak
apphosting.yaml
'te 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 konsolundaki Redis için Memorystore örneğinizin "Bağlantılar" sekmesinde bağlantı bilgilerini (ana makine ve bağlantı noktası) bulun.
REDISPORT
veREDISHOST
ortam değişkenleriyle Redis'e bağlanın. Aşağıdakileriapphosting.yaml
konsolundaki ana makine ve bağlantı noktası değerlerini kullanarak Google Cloud'te 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ızdan redis'i kullanma
redis npm paketini yükleyin:
npm install redis@latest
Kodunuzdan redis önbelleğinize erişin. Önceki adımda yapılandırılmış ortam değişkenlerini kullanın. Örneğin, bir Next.js rota işleyicisinde önbellekten nasıl veri okuyabileceğinizi aşağıda görebilirsiniz:
src/lib/redis.js
import { 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.js
import { 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'u işaret edecek şekilde değiştirerek Redis'in yerel kurulumunu kullanarak yerel olarak geliştirme yapabilirsiniz.
- Redis'i yerel makinenize yükleme
Yerel örneğinize referans vermek için
apphosting.emulators.yaml
öğesini oluşturun veya düzenleyin:env: - variable: REDISHOST value: 127.0.0.1