आपका Firebase App Hosting बैकएंड, वर्चुअल प्राइवेट क्लाउड (VPC) नेटवर्क से कनेक्ट हो सकता है. इससे आपका Firebase App Hosting बैकएंड, उन बैकएंड सेवाओं को ऐक्सेस कर पाता है जिन्हें सार्वजनिक आईपी पतों का इस्तेमाल करके ऐक्सेस नहीं किया जा सकता. जैसे, Cloud SQL, Spanner, Cloud Memorystore, Compute Engine या Kubernetes की इंटरनल माइक्रोसेवाएं.
वीपीसी ऐक्सेस सिर्फ़ रनटाइम (आपके Cloud Run कंटेनर से) के दौरान उपलब्ध होता है, न कि बिल्ड टाइम (Cloud Build) के दौरान.
apphosting.yaml
में कॉन्फ़िगर करें
ऐक्सेस कॉन्फ़िगर करने के लिए, अपनी apphosting.yaml
फ़ाइल में vpcAccess
मैपिंग का इस्तेमाल करें.
पूरी तरह क्वालिफ़ाइड नेटवर्क नेम या आईडी का इस्तेमाल करें. आईडी का इस्तेमाल करने से, अलग-अलग कनेक्टर/नेटवर्क के साथ, स्टेजिंग और प्रोडक्शन एनवायरमेंट के बीच पोर्टेबिलिटी की अनुमति मिलती है.
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
उदाहरण: Next.js ऐप्लिकेशन से Memorystore for Redis से कनेक्ट करना
Redis या Memcached जैसे कैशिंग सिस्टम का इस्तेमाल, ऐप्लिकेशन के लिए डेटा को तेज़ी से कैश करने वाली लेयर बनाने के लिए किया जाता है. इस उदाहरण में, आपको यह दिखाया गया है कि Firebase App Hosting बैकएंड वाले Google Cloud प्रोजेक्ट में Memorystore for Redis को कैसे सेट अप करें. साथ ही, Direct VPC egress का इस्तेमाल करके इससे कैसे कनेक्ट करें.
सबसे पहले: Memorystore for Redis इंस्टेंस बनाना
- Google Cloud कंसोल में, Memorystore for Redis पेज पर जाएं.
- पक्का करें कि आपने वही प्रोजेक्ट चुना हो जिसका इस्तेमाल Firebase App Hosting के लिए किया जा रहा है.
- अगर आपको इस पेज को ऐक्सेस करने में समस्या आ रही है, तो पक्का करें कि आपके प्रोजेक्ट के लिए बिलिंग चालू हो. साथ ही, आपने Memorystore API चालू किया हो.
- Create Instance को चुनें.
- अपनी पसंद के मुताबिक सेटिंग का इस्तेमाल करके, नया इंस्टेंस कॉन्फ़िगर करें. यहां उदाहरण के तौर पर कुछ वैल्यू दी गई हैं, जिनका इस्तेमाल किया जा सकता है:
- इंस्टेंस आईडी में जाकर,
my-redis-cache
डालें. - डिसप्ले नेम में जाकर
Redis cache
डालें. - टियर सिलेक्टर में जाकर, Basic चुनें. बेसिक टियर में, स्टैंडअलोन Redis नोड होता है. वहीं, स्टैंडर्ड टियर में रेप्लिका नोड होता है, जिसका इस्तेमाल आपके डेटा का बैकअप लेने के लिए किया जाता है.
- Region सिलेक्टर से, अपने App Hosting बैकएंड का क्षेत्र चुनें. इस वैल्यू को अपने बैकएंड के क्षेत्र से मेल खाने के लिए सेट करना न भूलें.
- ज़ोन सिलेक्टर से कोई भी चुनें.
- कपैसिटी में जाकर,
5
डालें. इससे आपके इंस्टेंस की क्षमता 5 जीबी पर सेट हो जाएगी. - वर्शन (सुझाया गया) में जाकर,
5.0
को चुनें. - अनुमति पा चुके नेटवर्क चुनने वाले टूल से डिफ़ॉल्ट चुनें.
- इंस्टेंस आईडी में जाकर,
पहला चरण: apphosting.yaml
को अपने वीपीसी नेटवर्क आईडी से अपडेट करें
- Google Cloud कंसोल में, वीपीसी नेटवर्क पेज पर जाएं.
- अपने Memorystore for Redis इंस्टेंस के लिए वीपीसी नेटवर्क आईडी ढूंढें. यह अक्सर
default
होता है. वीपीसी नेटवर्क आईडी का इस्तेमाल करके,
apphosting.yaml
में वीपीसी से सीधे बाहर निकलने का कॉन्फ़िगरेशन सेट अप करें:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
दूसरा चरण: ऐसे एनवायरमेंट वैरिएबल जोड़ें जो आपके ऐप्लिकेशन को Redis पर रीडायरेक्ट करते हों
- Google Cloud कंसोल में, अपने Memorystore for Redis इंस्टेंस के "कनेक्शन" टैब में कनेक्शन की जानकारी (होस्ट और पोर्ट) ढूंढें.
REDISPORT
औरREDISHOST
एनवायरमेंट वैरिएबल का इस्तेमाल करके, Redis से कनेक्ट करें.apphosting.yaml
कंसोल से होस्ट और पोर्ट वैल्यू का इस्तेमाल करके, इन्हेंapphosting.yaml
में सेट करें:Google Cloudenv: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
तीसरा चरण: अपने ऐप्लिकेशन में Redis का इस्तेमाल करना
redis npm पैकेज इंस्टॉल करें:
npm install redis@latest
अपने कोड से Redis कैश मेमोरी को ऐक्सेस करें. पिछले चरण में कॉन्फ़िगर किए गए एनवायरमेंट वैरिएबल का इस्तेमाल करें. उदाहरण के लिए, यहां बताया गया है कि 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 }); }
चौथा चरण (ज़रूरी नहीं): ऐप्लिकेशन को स्थानीय डेवलपमेंट के लिए कॉन्फ़िगर करना
Firebase App Hosting एम्युलेटर, apphosting.emulator.yaml
का इस्तेमाल करके वैल्यू बदल सकता है. यहां, REDISHOST
की वैल्यू को बदलकर लोकलहोस्ट पर पॉइंट किया जा सकता है, ताकि Redis के लोकल इंस्टॉलेशन का इस्तेमाल करके स्थानीय तौर पर डेवलपमेंट किया जा सके.
- अपने कंप्यूटर पर Redis इंस्टॉल करना
अपने लोकल इंस्टेंस को रेफ़रंस देने के लिए,
apphosting.emulators.yaml
बनाएं या उसमें बदलाव करें:env: - variable: REDISHOST value: 127.0.0.1