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 container Cloud Run), bukan saat waktu build (Cloud Build).
Konfigurasi di apphosting.yaml
Gunakan pemetaan vpcAccess
dalam file apphosting.yaml
untuk mengonfigurasi akses.
Gunakan nama jaringan yang sepenuhnya memenuhi syarat atau ID. 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: menghubungkan ke Memorystore for Redis dari aplikasi Next.js
Sistem penyimpanan cache seperti Redis atau Memcached umumnya digunakan untuk membangun lapisan penyimpanan cache data yang cepat untuk aplikasi. Contoh ini menunjukkan cara menyiapkan Memorystore for Redis di project Google Cloud yang sama dengan backend Firebase App Hosting Anda dan terhubung ke sana menggunakan keluar 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.
- Konfigurasi instance baru dengan setelan pilihan Anda. Berikut beberapa contoh nilai yang dapat Anda gunakan:
- Masukkan
my-redis-cache
di bagian ID Instance. - Masukkan
Redis cache
di bagian Nama tampilan. - Pilih Dasar di bagian pemilih paket. Tingkat dasar menetapkan node Redis mandiri, berbeda dengan tingkat standar, yang menggunakan node replika untuk mencadangkan data Anda.
- Pilih region backend App Hosting Anda dari pemilih Region. Pastikan untuk menyetel nilai ini agar sesuai 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 Versi (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.
Hubungkan ke Redis dengan variabel lingkungan
REDISPORT
danREDISHOST
. Tetapkan 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 cara Anda dapat 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): Konfigurasi 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 melakukan pengembangan secara lokal menggunakan penginstalan Redis lokal.
- Instal Redis di komputer lokal Anda
Buat atau edit
apphosting.emulators.yaml
untuk merujuk instance lokal Anda:env: - variable: REDISHOST value: 127.0.0.1