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 मैपिंग का इस्तेमाल करें. पूरी तरह से क्वालिफ़ाइड नेटवर्क/कनेक्टर के नाम या आईडी का इस्तेमाल करें. आईडी का इस्तेमाल करने से, अलग-अलग कनेक्टर/नेटवर्क वाले स्टेजिंग और प्रोडक्शन एनवायरमेंट के बीच पोर्टेबिलिटी की सुविधा मिलती है.

डायरेक्ट वीपीसी इग्रेस का कॉन्फ़िगरेशन (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 जैसे कैशिंग सिस्टम का इस्तेमाल आम तौर पर, किसी ऐप्लिकेशन के लिए तेज़ डेटा कैशिंग लेयर बनाने के लिए किया जाता है. इस उदाहरण में, आपको यह दिखाया गया है कि Memorystore for Redis को उसी Google Cloud प्रोजेक्ट में कैसे सेट अप किया जाए जिसमें आपका Firebase App Hosting बैकएंड है. साथ ही, Direct VPC egressका इस्तेमाल करके, इससे कैसे कनेक्ट किया जाए.

शून्यवां चरण: Memorystore for Redis इंस्टेंस बनाना

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

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

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

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

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

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

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

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

    env:
      - variable: REDISHOST
        value: 127.0.0.1