Il tuo backend Firebase App Hosting può connettersi a una rete Virtual Private Cloud (VPC). In questo modo, il tuo backend Firebase App Hosting può accedere ai servizi di backend non accessibili utilizzando indirizzi IP pubblici, come Cloud SQL, Spanner, Cloud Memorystore, Compute Engine o i microservizi interni di Kubernetes.
L'accesso VPC è disponibile solo in fase di runtime (dal container Cloud Run), non in fase di build (Cloud Build).
Scegli come connetterti a una rete VPC
- VPC diretto in uscita: più semplice, più veloce e meno costoso. Utilizza un indirizzo IP per container. Consigliato per la maggior parte dei casi d'uso.
- Connettori serverless: raggruppa gli indirizzi IP per le applicazioni più grandi. Richiede il pagamento per la VM sottostante. Per i dettagli sui prezzi, consulta "Accesso VPC serverless" nella pagina dei prezzi di VPC.
Configura in apphosting.yaml
Utilizza la mappatura vpcAccess nel file apphosting.yaml per configurare l'accesso.
Utilizza un nome di rete/connettore completo o un ID. L'utilizzo degli ID consente la portabilità tra ambienti di gestione temporanea e di produzione con connettori/reti diversi.
Configurazione del traffico VPC diretto in uscita (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
Configurazione del connettore serverless (apphosting.yaml):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Esempio: connettiti a Memorystore for Redis da un'app Next.js
I sistemi di memorizzazione nella cache come Redis o Memcached sono di uso comune per creare un livello di memorizzazione nella cache dei dati veloce per un'app. Questo esempio mostra come configurare Memorystore for Redis nello stesso progetto Google Cloud del tuo backend Firebase App Hosting e connetterti utilizzando il traffico in uscita VPC diretto.
Passaggio 0: crea un'istanza Memorystore for Redis
- Vai alla pagina Memorystore for Redis nella console Google Cloud.
- Assicurati che sia selezionato lo stesso progetto che utilizzi per Firebase App Hosting.
- Se non riesci ad accedere a questa pagina, assicurati che la fatturazione sia abilitata per il tuo progetto e di aver abilitato l'API Memorystore.
- Seleziona Crea istanza.
- Configura la nuova istanza con le impostazioni che preferisci. Ecco alcuni valori di esempio che puoi utilizzare:
- Inserisci
my-redis-cachein ID istanza. - Inserisci
Redis cachein Nome visualizzato. - Scegli Base nel selettore del livello. Il livello base indica un nodo Redis autonomo, a differenza del livello standard, che utilizza un nodo di replica per eseguire il backup dei dati.
- Scegli la regione del backend App Hosting dal selettore Regione. Assicurati di impostare questo valore in modo che corrisponda alla regione del tuo backend.
- Scegli Qualsiasi dal selettore delle zone.
- Inserisci
5in Capacità. In questo modo, la capacità dell'istanza viene impostata su 5 GB. - Seleziona
7.0(o la versione consigliata predefinita) in Versione. - Scegli default dal selettore Rete autorizzata.
- Inserisci
Passaggio 1: aggiorna apphosting.yaml con l'ID della tua rete VPC
- Visita la pagina Reti VPC nella console Google Cloud.
- Trova l'ID della rete VPC per l'istanza Memorystore for Redis (spesso sarà
default). Imposta la configurazione del VPC diretto in uscita in
apphosting.yamlutilizzando l'ID della rete VPC:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
Passaggio 2: aggiungi variabili di ambiente che indirizzano l'app a Redis
- Trova le informazioni di connessione (host e porta) nella scheda "Connessioni" dell'istanza Memorystore for Redis nella console Google Cloud.
Connettiti a Redis con le variabili di ambiente
REDISPORTeREDISHOST. Impostali inapphosting.yamlutilizzando i valori di host e porta della console Google Cloud:env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
Passaggio 3: utilizza Redis dalla tua app
Installa il pacchetto npm redis:
npm install redis@latestAccedi alla cache Redis dal tuo codice. Utilizza le variabili di ambiente configurate nel passaggio precedente. Ad esempio, ecco come potresti leggere da una cache in un gestore di route Next.js:
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({ socket: { host: REDISHOST, port: Number(REDISPORT), }, }) .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 }); }
(Facoltativo) Passaggio 4: configura l'app per lo sviluppo locale
L'emulatore Firebase App Hosting può eseguire l'override dei valori utilizzando
apphosting.emulator.yaml. Qui puoi modificare il valore di REDISHOST in modo che punti a localhost, così puoi sviluppare localmente utilizzando un'installazione locale di Redis.
- Installa Redis sulla tua macchina locale
Crea o modifica
apphosting.emulator.yamlper fare riferimento alla tua istanza locale:env: - variable: REDISHOST value: 127.0.0.1