הקצה העורפי Firebase App Hosting יכול להתחבר לרשת ענן וירטואלי פרטי (VPC). כך אפשר לאפליקציית ה-Firebase App Hosting backend לגשת לשירותי backend שלא נגישים באמצעות כתובות IP ציבוריות, כמו Cloud SQL, Spanner, Cloud Memorystore, Compute Engine או מיקרו-שירותים פנימיים של Kubernetes.
הגישה ל-VPC זמינה רק בזמן הריצה (מתוך מאגר Cloud Run), ולא בזמן הבנייה (Cloud Build).
הגדרה ב-apphosting.yaml
כדי להגדיר גישה, משתמשים במיפוי vpcAccess
בקובץ 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
דוגמה: התחברות ל-Memorystore for Redis מאפליקציית Next.js
מערכות שמירה במטמון כמו Redis או Memcached משמשות בדרך כלל ליצירת שכבת שמירה במטמון נתונים מהירה לאפליקציה. בדוגמה הזו מוסבר איך להגדיר את Memorystore for Redis באותו פרויקט Google Cloud כמו קצה העורפי (backend) של Firebase App Hosting, ואיך להתחבר אליו באמצעות יציאה ישירה מ-VPC.
שלב 0: יצירת מכונה של Memorystore for Redis
- עוברים אל הדף Memorystore for Redis במסוף Google Cloud.
- מוודאים שבחרתם באותו פרויקט שבו אתם משתמשים ב-Firebase App Hosting.
- אם אין לכם גישה לדף הזה, צריך לוודא שהחיוב מופעל בפרויקט ושהפעלתם את Memorystore API.
- בוחרים באפשרות Create Instance (יצירת מופע).
- מגדירים את המופע החדש עם ההגדרות המועדפות. הנה כמה דוגמאות לערכים שאפשר להשתמש בהם:
- מזינים
my-redis-cache
בשדה Instance ID (מזהה מכונה). - מזינים
Redis cache
בשדה שם לתצוגה. - בבורר הרמות, בוחרים באפשרות Basic. בדרגת Basic מוגדר צומת Redis עצמאי, בניגוד לדרגת Standard שבה נעשה שימוש בצומת משוכפל לגיבוי הנתונים.
- בוחרים את האזור של ה-backend של App Hosting מבורר Region (אזור). חשוב להגדיר את הערך הזה כך שיתאים לאזור של ה-Backend.
- בוחרים באפשרות כל בבורר האזורים.
- מזינים
5
בקטע קיבולת. הפעולה הזו מגדירה את קיבולת המופע ל-5GB. - בוחרים באפשרות
5.0
בקטע גרסה (מומלץ). - בוחרים באפשרות ברירת מחדל מתוך בורר הרשת המורשית.
- מזינים
שלב 1: מעדכנים את apphosting.yaml
עם מזהה רשת ה-VPC
- נכנסים לדף רשתות ה-VPC במסוף Google Cloud.
- מחפשים את מזהה רשת ה-VPC של מכונת Memorystore for Redis (לרוב זה יהיה
default
). מגדירים יציאה ישירה מ-VPC ב-
apphosting.yaml
באמצעות מזהה רשת ה-VPC:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
שלב 2: מוסיפים משתני סביבה שמפנים את האפליקציה אל Redis
- אפשר למצוא את פרטי החיבור (המארח והיציאה) בכרטיסייה 'חיבורים' של מופע Memorystore for Redis במסוף Google Cloud.
מתחברים ל-Redis באמצעות משתני הסביבה
REDISPORT
ו-REDISHOST
. מגדירים את הערכים האלה ב-apphosting.yaml
באמצעות ערכי המארח והיציאה ממסוף Google Cloud:env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
שלב 3: שימוש ב-Redis מהאפליקציה
מתקינים את חבילת npm redis:
npm install redis@latest
ניגשים למטמון redis מהקוד. משתמשים במשתני הסביבה שהוגדרו בשלב הקודם. לדוגמה, כך אפשר לקרוא ממאגר מטמון ב-Next.js handler של נתיב:
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 (אופציונלי): הגדרת האפליקציה לפיתוח מקומי
אפשר להשתמש ב-Firebase App Hosting כדי לשנות ערכים באמצעות apphosting.emulator.yaml
. כאן אפשר לשנות את הערך של REDISHOST
כך שיצביע על המארח המקומי, כדי שתוכלו לפתח באופן מקומי באמצעות התקנה מקומית של Redis.
- התקנת Redis במחשב המקומי
יוצרים או עורכים את
apphosting.emulators.yaml
כדי להפנות למופע המקומי:env: - variable: REDISHOST value: 127.0.0.1