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 Cloud Run container Anda), bukan saat waktu build (Cloud Build).
Memilih cara terhubung ke jaringan VPC
- Traffic Keluar VPC Langsung: Lebih sederhana, lebih cepat, dan lebih murah. Menggunakan satu alamat IP per container. Direkomendasikan untuk sebagian besar kasus penggunaan.
- Konektor Tanpa Server: Menggabungkan alamat IP untuk aplikasi yang lebih besar. Memerlukan pembayaran untuk VM yang mendasarinya. Lihat "Akses VPC Tanpa Server" di halaman harga VPC untuk mengetahui detail harga.
Mengonfigurasi di apphosting.yaml
Gunakan pemetaan vpcAccess di file apphosting.yaml untuk mengonfigurasi akses.
Gunakan nama/konektor jaringan yang sepenuhnya memenuhi syarat atau ID. Penggunaan ID memungkinkan portabilitas antara lingkungan staging dan produksi dengan konektor/jaringan yang berbeda.
Konfigurasi Traffic Keluar VPC Langsung (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
Konfigurasi Konektor Tanpa Server (apphosting.yaml):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Contoh: menghubungkan ke Memorystore for Redis dari aplikasi Next.js
Sistem caching seperti Redis atau Memcached biasanya digunakan untuk membuat lapisan caching data cepat untuk aplikasi. Contoh ini menunjukkan cara menyiapkan Memorystore for Redis di project Google Cloud yang sama dengan backend Firebase App Hosting Anda dan menghubungkannya menggunakan traffic keluar VPC Langsung.
Langkah 0: Membuat instance Memorystore for Redis
- Buka halaman
Memorystore for Redis
di konsol.Google Cloud
- Pastikan project yang sama 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.
- Konfigurasi instance baru dengan setelan pilihan Anda. Berikut beberapa contoh nilai yang dapat Anda gunakan:
- Masukkan
my-redis-cachedi bagian Instance ID. - Masukkan
Redis cachedi bagian Display name. - Pilih Basic di bagian pemilih paket. Paket dasar menetapkan node Redis mandiri, berbeda dengan paket standar, yang menggunakan node replika untuk mencadangkan data Anda.
- Pilih region backend App Hosting Anda dari pemilih Region. Pastikan untuk menetapkan nilai ini agar sesuai dengan region backend Anda.
- Pilih any dari pemilih zona.
- Masukkan
5di bagian Capacity. Tindakan ini akan menetapkan kapasitas instance Anda ke 5 GB. - Pilih
5.0di bagian Version (direkomendasikan). - Pilih default dari pemilih Authorized network.
- Masukkan
Langkah 1: Mengupdate 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.yamlmenggunakan ID jaringan VPC:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
Langkah 2: Menambahkan variabel lingkungan yang mengarahkan aplikasi Anda ke Redis
- Temukan informasi koneksi (host dan port) di tab "Connections" instance Memorystore for Redis Anda di konsol Google Cloud.
Hubungkan ke Redis dengan variabel lingkungan
REDISPORTdanREDISHOST. Tetapkan variabel ini diapphosting.yamlmenggunakan nilai host dan port dari Google Cloud konsol:env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
Langkah 3: Menggunakan redis dari aplikasi Anda
Instal paket npm redis:
npm install redis@latestAkses cache redis dari kode Anda. Gunakan variabel lingkungan yang dikonfigurasi pada langkah sebelumnya. Misalnya, berikut cara Anda dapat membaca dari cache di pengendali rute 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(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 }); }
Langkah 4 (opsional): Mengonfigurasi aplikasi Anda untuk pengembangan lokal
Emulator Firebase App Hosting dapat mengganti nilai menggunakan
apphosting.emulator.yaml. Di sini, Anda dapat mengubah nilai REDISHOST untuk mengarah ke localhost sehingga Anda dapat mengembangkan secara lokal menggunakan penginstalan Redis lokal.
- Instal Redis di komputer lokal Anda
Buat atau edit
apphosting.emulators.yamluntuk mereferensikan instance lokal Anda:env: - variable: REDISHOST value: 127.0.0.1