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