Firebase ऐप्लिकेशन होस्टिंग को VPC नेटवर्क से कनेक्ट करना

आपका 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 प्रोजेक्ट में Redis के लिए Memorystore सेट अप करने का तरीका बताया गया है. साथ ही, डायरेक्ट वीपीसी एग्ज़िट का इस्तेमाल करके, उससे कनेक्ट करने का तरीका भी बताया गया है.

पहला चरण: Memorystore for Redis इंस्टेंस बनाना

  1. Google Cloud कंसोल में, Memorystore for Redis पेज पर जाएं.
    • पक्का करें कि आपने वही प्रोजेक्ट चुना हो जिसका इस्तेमाल Firebase App Hosting के लिए किया जा रहा है.
    • अगर आपको यह पेज ऐक्सेस करने में समस्या आ रही है, तो पक्का करें कि आपके प्रोजेक्ट के लिए बिलिंग चालू हो और आपने Memorystore API चालू किया हो.
  2. इंस्टेंस बनाएं को चुनें.
  3. अपनी पसंद की सेटिंग के साथ नए इंस्टेंस को कॉन्फ़िगर करें. यहां वैल्यू के कुछ उदाहरण दिए गए हैं, जिनका इस्तेमाल किया जा सकता है:
    • इंस्टेंस आईडी में my-redis-cache डालें.
    • डिसप्ले नेम में जाकर, Redis cache डालें.
    • टीयर सिलेक्टर में जाकर, सामान्य चुनें. स्टैंडर्ड टीयर के मुकाबले, बुनियादी टीयर में स्टैंडअलोन Redis नोड का इस्तेमाल किया जाता है. स्टैंडर्ड टीयर में, आपके डेटा का बैकअप लेने के लिए, डुप्लीकेट नोड का इस्तेमाल किया जाता है.
    • इलाका सिलेक्टर से, अपने App Hosting बैकएंड का इलाका चुनें. पक्का करें कि यह वैल्यू, आपके बैकएंड के क्षेत्र से मेल खाती हो.
    • ज़ोन सिलेक्टर से कोई भी चुनें.
    • कपैसिटी में जाकर, 5 डालें. इससे आपके इंस्टेंस की क्षमता 5 जीबी पर सेट हो जाती है.
    • वर्शन में जाकर, 5.0 चुनें (सुझाया गया).
    • अनुमति पा चुके नेटवर्क सिलेक्टर से डिफ़ॉल्ट चुनें.

पहला चरण: apphosting.yaml को अपने VPC नेटवर्क आईडी से अपडेट करना

  1. Google Cloud कंसोल में, VPC नेटवर्क पेज पर जाएं.
  2. अपने Memorystore for Redis इंस्टेंस के लिए VPC नेटवर्क आईडी ढूंढें. आम तौर पर, यह default होता है.
  3. apphosting.yaml में वीपीसी नेटवर्क आईडी का इस्तेमाल करके, सीधे वीपीसी से बाहर जाने का कॉन्फ़िगरेशन सेट करें:

    runConfig:
      vpcAccess:
        egress: PRIVATE_RANGES_ONLY # Default value
      networkInterfaces:
        - network: my-network-id
    

दूसरा चरण: ऐसे एनवायरमेंट वैरिएबल जोड़ना जो आपके ऐप्लिकेशन को Redis पर ले जाते हैं

  1. Google Cloud कंसोल में, Redis के लिए Memorystore इंस्टेंस के "कनेक्शन" टैब में जाकर, कनेक्शन की जानकारी (होस्ट और पोर्ट) देखें.
  2. REDISPORT और REDISHOST एनवायरमेंट वैरिएबल की मदद से Redis से कनेक्ट करें. Google Cloud कंसोल से होस्ट और पोर्ट की वैल्यू का इस्तेमाल करके, इन्हें apphosting.yaml में सेट करें:

    env:
      # Sample only. Use actual values provided by Memorystore
      - variable: REDISPORT
        value: 6379
      - variable: REDISHOST
        value: 10.127.16.3
    

तीसरा चरण: अपने ऐप्लिकेशन से redis का इस्तेमाल करना

  1. redis npm पैकेज इंस्टॉल करें:

    npm install redis@latest

  2. अपने कोड से 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 की वैल्यू को बदलकर, localhost पर ले जाया जा सकता है, ताकि Redis के स्थानीय इंस्टॉलेशन का इस्तेमाल करके, स्थानीय तौर पर डेवलप किया जा सके.

  1. अपने कंप्यूटर पर Redis इंस्टॉल करना
  2. अपने लोकल इंस्टेंस का रेफ़रंस देने के लिए, apphosting.emulators.yaml बनाएं या उसमें बदलाव करें:

    env:
      - variable: REDISHOST
        value: 127.0.0.1