میزبانی برنامه Firebase را به یک شبکه VPC متصل کنید

باطن Firebase App Hosting شما می تواند به یک شبکه مجازی خصوصی Cloud (VPC) متصل شود. این به پشتیبان Firebase App Hosting شما اجازه می‌دهد به خدمات باطنی که با استفاده از آدرس‌های 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

مثال: از برنامه Next.js به Memorystor for Redis متصل شوید

سیستم‌های ذخیره‌سازی مانند Redis یا Memcached معمولاً برای ایجاد یک لایه ذخیره سریع داده برای یک برنامه استفاده می‌شوند. این مثال به شما نشان می‌دهد که چگونه می‌توانید Memorystore را برای Redis در همان پروژه Google Cloud به عنوان باطن Firebase App Hosting خود راه‌اندازی کنید و با استفاده از Direct VPC egress به آن متصل شوید.

مرحله 0: یک Memorystor برای نمونه Redis ایجاد کنید

  1. به صفحه Memorystore for Redis در کنسول Google Cloud بروید.
    • مطمئن شوید که همان پروژه ای که برای Firebase App Hosting استفاده می کنید انتخاب شده است.
    • اگر نمی توانید به این صفحه دسترسی پیدا کنید، مطمئن شوید که صورتحساب برای پروژه شما فعال است و Memorystore API را فعال کرده اید.
  2. Create Instance را انتخاب کنید.
  3. نمونه جدید را با تنظیمات دلخواه خود پیکربندی کنید. در اینجا چند نمونه از مقادیر است که می توانید استفاده کنید:
    • my-redis-cache در Instance ID وارد کنید.
    • Redis cache در قسمت نمایش نام وارد کنید.
    • Basic را در زیر انتخابگر ردیف انتخاب کنید. سطح پایه یک گره Redis مستقل را مشخص می کند، برخلاف لایه استاندارد، که از یک گره مشابه برای پشتیبان گیری از داده های شما استفاده می کند.
    • منطقه باطن App Hosting خود را از انتخابگر منطقه انتخاب کنید. مطمئن شوید که این مقدار را برای مطابقت با منطقه باطن خود تنظیم کنید.
    • از انتخاب منطقه هر کدام را انتخاب کنید.
    • 5 را زیر ظرفیت وارد کنید. این ظرفیت نمونه شما را روی 5 گیگابایت تنظیم می کند.
    • 5.0 در نسخه (توصیه می شود) انتخاب کنید.
    • پیش فرض را از انتخابگر شبکه مجاز انتخاب کنید.

مرحله 1: apphosting.yaml با شناسه شبکه VPC خود به روز کنید

  1. از صفحه شبکه های VPC در کنسول Google Cloud دیدن کنید.
  2. شناسه شبکه VPC را برای مثال Memorystore برای Redis پیدا کنید (اغلب default خواهد بود).
  3. با استفاده از شناسه شبکه VPC، پیکربندی خروج مستقیم VPC را در apphosting.yaml تنظیم کنید:

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

مرحله 2: متغیرهای محیطی را اضافه کنید که برنامه شما را به Redis هدایت می کند

  1. اطلاعات اتصال (میزبان و پورت) را در برگه «اتصالات» نمونه Memorystore برای Redis در کنسول Google Cloud پیدا کنید.
  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
    

مرحله 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 });
      }
      

مرحله 4 (اختیاری): برنامه خود را برای توسعه محلی پیکربندی کنید

شبیه‌ساز Firebase App Hosting می‌تواند مقادیر را با استفاده از apphosting.emulator.yaml لغو کند. در اینجا، می توانید مقدار REDISHOST را تغییر دهید تا به localhost اشاره کند تا بتوانید با استفاده از نصب محلی Redis به صورت محلی توسعه دهید.

  1. Redis را روی دستگاه محلی خود نصب کنید
  2. برای ارجاع به نمونه محلی خود apphosting.emulators.yaml ایجاد یا ویرایش کنید:

    env:
      - variable: REDISHOST
        value: 127.0.0.1