Ваш бэкэнд Firebase App Hosting может подключаться к сети виртуальной частной сети (VPC) . Это позволяет вашему бэкэнду Firebase App Hosting получать доступ к серверным службам, недоступным по публичным IP-адресам, таким как Cloud SQL, Spanner, Cloud Memorystore, Compute Engine или внутренние микросервисы Kubernetes.
Доступ к VPC возможен только во время выполнения (из вашего контейнера Cloud Run ), а не во время сборки ( Cloud Build ).
Выберите способ подключения к сети VPC.
- Прямой исходящий трафик VPC : проще, быстрее и дешевле. Использует один IP-адрес на контейнер. Рекомендуется для большинства сценариев использования.
- Бессерверные коннекторы : объединяют IP-адреса для более крупных приложений. Требует оплаты за базовую виртуальную машину. Подробную информацию о ценах см. в разделе «Доступ к VPC без серверов» на странице цен VPC .
Настройте в файле apphosting.yaml
Используйте сопоставление vpcAccess в файле apphosting.yaml для настройки доступа. Используйте либо полное имя сети/коннектора, либо идентификатор. Использование идентификаторов обеспечивает переносимость между тестовой и производственной средами с различными коннекторами/сетями.
Прямая настройка исходящего трафика VPC ( 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
Пример: подключение к Memorystore для Redis из приложения Next.js
Системы кэширования, такие как Redis или Memcached, широко используются для создания быстрого уровня кэширования данных для приложения. В этом примере показано, как настроить Memorystore для Redis в том же проекте Google Cloud , что и бэкенд Firebase App Hosting , и подключиться к нему с помощью прямого исходящего трафика VPC .
Шаг 0: Создайте экземпляр Memorystore для Redis.
- Перейдите на страницу Memorystore for Redis в консоли Google Cloud .
- Убедитесь, что выбран тот же проект, который вы используете для Firebase App Hosting .
- Если у вас нет доступа к этой странице, убедитесь, что для вашего проекта включена оплата и что вы активировали API Memorystore .
- Выберите «Создать экземпляр» .
- Настройте новый экземпляр, указав желаемые параметры. Вот несколько примеров значений, которые вы можете использовать:
- В поле "Идентификатор экземпляра" укажите
my-redis-cache. - Введите
Redis cacheв поле «Отображаемое имя» . - Выберите «Базовый» в селекторе уровней. Базовый уровень обозначает автономный узел Redis, в отличие от стандартного уровня, который использует реплицированный узел для резервного копирования данных.
- Выберите регион вашей серверной части App Hosting в селекторе регионов . Убедитесь, что это значение соответствует региону вашей серверной части.
- Выберите любую из зон в селекторе.
- В поле «Емкость» введите
5Это установит емкость вашего экземпляра на 5 ГБ. - В поле «Версия» выберите
5.0(рекомендуется). - Выберите «По умолчанию» в селекторе авторизованных сетей .
- В поле "Идентификатор экземпляра" укажите
Шаг 1: Обновите файл apphosting.yaml , указав идентификатор вашей VPC-сети.
- Перейдите на страницу сетей VPC в консоли Google Cloud .
- Найдите сетевой идентификатор VPC для вашего экземпляра Memorystore for Redis (часто это будет
default). Настройте конфигурацию прямого исходящего трафика VPC в файле
apphosting.yaml, используя идентификатор сети VPC:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
Шаг 2: Добавьте переменные среды, которые будут направлять ваше приложение к Redis.
- Информацию о подключении (хост и порт) можно найти на вкладке «Подключения» вашего экземпляра Memorystore for Redis в консоли Google Cloud .
Подключитесь к Redis, используя переменные среды
REDISPORTиREDISHOST. Задайте их вapphosting.yaml, используя значения хоста и порта из консоли Google Cloud :env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
Шаг 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 }); }
Шаг 4 (необязательный): Настройте приложение для локальной разработки.
Эмулятор Firebase App Hosting может переопределять значения с помощью apphosting.emulator.yaml . Здесь вы можете изменить значение параметра REDISHOST , чтобы оно указывало на localhost, что позволит вам разрабатывать приложения локально, используя локальную установку Redis.
- Установите Redis на свой локальный компьютер.
Создайте или отредактируйте
apphosting.emulators.yaml, чтобы указать ссылку на ваш локальный экземпляр:env: - variable: REDISHOST value: 127.0.0.1