Backend Firebase App Hosting Anda dapat terhubung ke jaringan Virtual Private Cloud (VPC). Hal ini memungkinkan backend Firebase App Hosting Anda mengakses layanan backend yang tidak dapat diakses menggunakan alamat IP publik, seperti Cloud SQL, Spanner, Cloud Memorystore, Compute Engine, atau microservice internal Kubernetes.
Akses VPC hanya tersedia saat runtime (dari penampung Cloud Run Anda), bukan pada waktu build (Cloud Build).
Mengonfigurasi di apphosting.yaml
Gunakan pemetaan vpcAccess
di file apphosting.yaml
untuk mengonfigurasi akses.
Gunakan nama jaringan atau ID yang sepenuhnya memenuhi syarat. Penggunaan ID memungkinkan
portabilitas antara lingkungan staging dan produksi dengan konektor/jaringan
yang berbeda.
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
Contoh: terhubung ke Memorystore for Redis dari aplikasi Next.js
Sistem penyimpanan cache seperti Redis atau Memcached biasanya digunakan untuk membuat lapisan penyimpanan cache data yang cepat untuk aplikasi. Contoh ini menunjukkan cara menyiapkan Memorystore for Redis dalam project Google Cloud yang sama dengan backend Firebase App Hosting Anda dan terhubung ke sana menggunakan Egress VPC langsung.
Langkah 0: Buat instance Memorystore for Redis
- Buka
halaman Memorystore for Redis
di konsol Google Cloud.
- Pastikan project yang sama dengan yang Anda gunakan untuk Firebase App Hosting dipilih.
- Jika Anda tidak dapat mengakses halaman ini, pastikan penagihan diaktifkan untuk project Anda dan Anda telah mengaktifkan Memorystore API.
- Pilih Create Instance.
- Konfigurasikan instance baru dengan setelan yang Anda pilih. Berikut beberapa
contoh nilai yang dapat Anda gunakan:
- Masukkan
my-redis-cache
di bagian Instance ID. - Masukkan
Redis cache
di bagian Nama tampilan. - Pilih Dasar di bagian pemilih tingkat. Tingkat dasar menetapkan node Redis mandiri, tidak seperti tingkat standar, yang menggunakan node replika untuk mencadangkan data Anda.
- Pilih region backend App Hosting dari pemilih Region. Pastikan untuk menetapkan nilai ini agar cocok dengan region backend Anda.
- Pilih any dari pemilih zona.
- Masukkan
5
di bagian Capacity. Tindakan ini akan menetapkan kapasitas instance Anda ke 5 GB. - Pilih
5.0
di bagian Version (direkomendasikan). - Pilih default dari pemilih Authorized network.
- Masukkan
Langkah 1: Perbarui apphosting.yaml
dengan ID jaringan VPC Anda
- Buka halaman jaringan VPC di konsol Google Cloud.
- Temukan ID jaringan VPC untuk instance Memorystore for Redis Anda (biasanya
default
). Tetapkan konfigurasi traffic keluar VPC langsung di
apphosting.yaml
menggunakan ID jaringan VPC:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
Langkah 2: Tambahkan variabel lingkungan yang mengarahkan aplikasi Anda ke Redis
- Temukan informasi koneksi (host dan port) di tab "Connections" pada instance Memorystore for Redis di Google Cloud console.
Menghubungkan ke Redis dengan variabel lingkungan
REDISPORT
danREDISHOST
. Tetapkan nilai ini diapphosting.yaml
menggunakan nilai host dan port dari konsol Google Cloud:env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
Langkah 3: Gunakan redis dari aplikasi Anda
Instal paket npm redis:
npm install redis@latest
Akses cache redis dari kode Anda. Gunakan variabel lingkungan yang dikonfigurasi pada langkah sebelumnya. Misalnya, berikut adalah cara membaca dari cache di pengendali rute Next.js:
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 }); }
Langkah 4 (opsional): Konfigurasikan aplikasi Anda untuk pengembangan lokal
Emulator Firebase App Hosting dapat mengganti nilai menggunakan
apphosting.emulator.yaml
. Di sini, Anda dapat mengubah nilai REDISHOST
agar mengarah ke localhost sehingga Anda dapat mengembangkan secara lokal menggunakan penginstalan Redis lokal.
- Menginstal Redis di komputer lokal
Buat atau edit
apphosting.emulators.yaml
untuk mereferensikan instance lokal Anda:env: - variable: REDISHOST value: 127.0.0.1