Phần phụ trợ Firebase App Hosting của bạn có thể kết nối với mạng Virtual Private Cloud (VPC). Điều này cho phép phần phụ trợ Firebase App Hosting của bạn truy cập vào các dịch vụ phụ trợ không thể truy cập bằng địa chỉ IP công khai, chẳng hạn như Cloud SQL, Spanner, Cloud Memorystore, Compute Engine hoặc các dịch vụ vi mô nội bộ của Kubernetes.
Bạn chỉ có thể truy cập vào VPC trong thời gian chạy (từ vùng chứa Cloud Run của bạn), chứ không thể truy cập trong thời gian xây dựng (Cloud Build).
Chọn cách kết nối với mạng VPC
- Lưu lượng truy cập ra trực tiếp của VPC: Đơn giản hơn, nhanh hơn và ít tốn kém hơn. Sử dụng một địa chỉ IP cho mỗi vùng chứa. Nên dùng cho hầu hết các trường hợp sử dụng.
- Trình kết nối không máy chủ: Gộp các địa chỉ IP cho các ứng dụng lớn hơn. Yêu cầu thanh toán cho máy ảo cơ bản. Hãy xem phần "Quyền truy cập không máy chủ vào VPC" trên trang giá của VPC để biết thông tin chi tiết về giá.
Định cấu hình trong apphosting.yaml
Sử dụng mối liên kết vpcAccess trong tệp apphosting.yaml để định cấu hình quyền truy cập.
Sử dụng tên mạng/trình kết nối đủ điều kiện hoặc mã nhận dạng. Việc sử dụng mã nhận dạng cho phép
khả năng di chuyển giữa môi trường thử nghiệm và môi trường thực tế bằng các
đầu nối/mạng khác nhau.
Cấu hình lưu lượng truy cập ra trực tiếp của 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
Cấu hình trình kết nối không máy chủ (apphosting.yaml):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Ví dụ: kết nối với Memorystore cho Redis từ một ứng dụng Next.js
Các hệ thống lưu vào bộ nhớ đệm như Redis hoặc Memcached thường được dùng để xây dựng một lớp lưu dữ liệu vào bộ nhớ đệm nhanh cho ứng dụng. Ví dụ này cho bạn biết cách thiết lập Memorystore cho Redis trong cùng một dự án Google Cloud với phần phụ trợ Firebase App Hosting và kết nối với dự án đó bằng Lưu lượng truy cập trực tiếp ra ngoài VPC.
Bước 0: Tạo một phiên bản Memorystore cho Redis
- Chuyển đến trang Memorystore cho Redis trong bảng điều khiển Google Cloud.
- Đảm bảo rằng bạn đã chọn cùng một dự án mà bạn đang dùng cho Firebase App Hosting.
- Nếu bạn không thể truy cập vào trang này, hãy đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án của mình và đã bật Memorystore API.
- Chọn Create Instance (Tạo thực thể).
- Định cấu hình phiên bản mới bằng chế độ cài đặt bạn muốn. Dưới đây là một số
giá trị mẫu mà bạn có thể sử dụng:
- Nhập
my-redis-cachetrong Instance ID (Mã phiên bản). - Nhập
Redis cachetrong mục Tên hiển thị. - Chọn Cơ bản trong bộ chọn cấp. Cấp cơ bản chỉ định một nút Redis độc lập, trái ngược với cấp tiêu chuẩn, sử dụng một nút bản sao để sao lưu dữ liệu của bạn.
- Chọn khu vực của phần phụ trợ App Hosting trong bộ chọn Region (Khu vực). Hãy nhớ đặt giá trị này khớp với khu vực của phần phụ trợ.
- Chọn bất kỳ trong bộ chọn vùng.
- Nhập
5trong mục Capacity (Dung lượng). Thao tác này sẽ đặt dung lượng của thực thể thành 5 GB. - Chọn
7.0(hoặc phiên bản được đề xuất mặc định) trong phần Phiên bản. - Chọn mặc định trong bộ chọn Mạng được uỷ quyền.
- Nhập
Bước 1: Cập nhật apphosting.yaml bằng mã mạng VPC của bạn
- Truy cập vào trang mạng VPC trong bảng điều khiển Google Cloud.
- Tìm mã mạng VPC cho phiên bản Memorystore for Redis (thường là
default). Đặt cấu hình truyền dữ liệu trực tiếp ra khỏi VPC trong
apphosting.yamlbằng mã mạng VPC:runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
Bước 2: Thêm các biến môi trường hướng ứng dụng của bạn đến Redis
- Tìm thông tin kết nối (máy chủ và cổng) trong thẻ "Connections" (Kết nối) của thực thể Memorystore for Redis trong bảng điều khiển Google Cloud.
Kết nối với Redis bằng các biến môi trường
REDISPORTvàREDISHOST. Đặt các giá trị này trongapphosting.yamlbằng cách sử dụng các giá trị máy chủ lưu trữ và cổng từ bảng điều khiển Google Cloud:env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
Bước 3: Sử dụng Redis trong ứng dụng
Cài đặt gói npm redis:
npm install redis@latestTruy cập vào bộ nhớ đệm Redis từ mã của bạn. Sử dụng các biến môi trường được định cấu hình ở bước trước. Ví dụ: dưới đây là cách bạn có thể đọc từ bộ nhớ đệm trong trình xử lý tuyến 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({ socket: { host: REDISHOST, port: Number(REDISPORT), }, }) .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 }); }
Bước 4 (không bắt buộc): Định cấu hình ứng dụng để phát triển cục bộ
Trình mô phỏng Firebase App Hosting có thể ghi đè các giá trị bằng cách sử dụng apphosting.emulator.yaml. Tại đây, bạn có thể thay đổi giá trị của REDISHOST để trỏ đến máy chủ cục bộ, nhờ đó, bạn có thể phát triển cục bộ bằng cách cài đặt Redis trên máy cục bộ.
- Cài đặt Redis trên máy cục bộ
Tạo hoặc chỉnh sửa
apphosting.emulator.yamlđể tham chiếu thực thể cục bộ của bạn:env: - variable: REDISHOST value: 127.0.0.1