۱. مقدمه
VPC Peering روشی رایج برای تولیدکنندگان جهت ارائه خدمات به کاربرانشان است. با این حال، استفاده از VPC Peering پیچیدگیهای مسیریابی زیادی مانند VPC Peering غیرمتعدی، مصرف آدرس IP زیاد و در معرض دید قرار گرفتن بیش از حد منابع در یک VPC Peering به همراه دارد.
اتصال سرویس خصوصی (PSC) یک روش اتصال است که به تولیدکنندگان اجازه میدهد تا یک سرویس را از طریق یک نقطه پایانی واحد که یک مصرفکننده در یک VPC بار کاری فراهم میکند، در معرض نمایش قرار دهند. این امر بسیاری از مشکلاتی را که کاربران با VPC peering با آن مواجه هستند، از بین میبرد. در حالی که بسیاری از سرویسهای جدید با PSC ایجاد میشوند، هنوز سرویسهای زیادی به عنوان سرویسهای VPC Peering وجود دارند.
گوگل کلود مفتخر است که یک مسیر مهاجرت برای سرویسهایی که از طریق VPC Peering ایجاد کردهاید، به منظور انتقال به معماری مبتنی بر PSC معرفی کند. با استفاده از این روش مهاجرت، آدرس IP سرویس تولیدکننده که از طریق VPC Peering در معرض دید قرار میگیرد، تا معماری مبتنی بر PSC حفظ میشود، بنابراین حداقل تغییرات برای مصرفکننده مورد نیاز است. برای یادگیری مراحل فنی انجام این مهاجرت، با این codelab همراه باشید.
توجه: این مسیر مهاجرت فقط برای سرویسهایی است که تولیدکننده و مصرفکننده در یک سازمان Google Cloud قرار دارند. برای هرگونه سرویس Google Cloud یا سرویسهای شخص ثالث که از VPC peering استفاده میکنند، از یک روش مهاجرت مشابه استفاده خواهند کرد، اما این روش برای خود سرویس سفارشیسازی میشود. لطفاً برای اطلاع از مسیر مهاجرت برای این نوع سرویسها با طرفهای مربوطه تماس بگیرید.
آنچه یاد خواهید گرفت
- نحوه راه اندازی سرویس مبتنی بر همتاسازی VPC
- نحوه راهاندازی سرویس مبتنی بر PSC
- استفاده از API مربوط به Internal-Ranges برای انجام مهاجرت زیرشبکه از طریق VPC Peering به منظور دستیابی به مهاجرت سرویس VPC Peering به PSC.
- درک زمان لازم برای از کار افتادن سیستم برای مهاجرت سرویس
- مراحل پاکسازی مهاجرت
آنچه نیاز دارید
- پروژه گوگل کلود با مجوزهای مالک
۲. توپولوژی Codelab
برای سادگی، این آزمایشگاه کد، تمام منابع را در یک پروژه واحد متمرکز میکند. در آزمایشگاه کد، مشخص خواهد شد که در صورتی که تولیدکنندگان و مصرفکنندگان در پروژههای مختلفی باشند، چه اقداماتی باید در سمت تولیدکننده و چه اقداماتی باید در سمت مصرفکننده انجام شود.
این آزمایشگاه کد ۴ حالت خواهد داشت.

حالت ۱، حالت Peering در VPC است. دو VPC وجود خواهد داشت، consumer-vpc و producer-vpc که با هم peer میشوند. Producer-vpc یک سرویس آپاچی ساده خواهد داشت که از طریق یک Network Passthrough Load Balancer داخلی در معرض نمایش قرار میگیرد. Consumer-vpc یک consumer-vm واحد برای اهداف آزمایشی خواهد داشت.

حالت ۲، حالت آزمایشی PSC است. ما یک قانون ارسال جدید ایجاد میکنیم و از این قانون برای ارتباط با ضمیمه سرویس خود استفاده میکنیم. سپس یک نقطه پایانی PSC آزمایشی در consumer-vpc ایجاد میکنیم تا بررسی کنیم که سرویس PSC ما مطابق انتظار کار میکند.

حالت ۳ حالت مهاجرت است. ما محدوده زیرشبکه در producer-vpc را که سرویس مبتنی بر VPC Peering در آن مستقر شده بود، برای استفاده در consumer-vpc رزرو خواهیم کرد. سپس یک نقطه پایانی PSC جدید با همان آدرس IP به عنوان قانون ارسال از پیش موجود در producer-vpc ایجاد خواهیم کرد.

حالت ۴، حالت نهایی PSC است. ما نقطه پایانی PSC آزمایشی را پاکسازی کرده و اتصال VPC بین consumer-vpc و producer-vpc را حذف خواهیم کرد.
۳. تنظیمات و الزامات
تنظیم محیط خودتنظیم
- وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .



- نام پروژه، نام نمایشی برای شرکتکنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمیشود. شما همیشه میتوانید آن را بهروزرسانی کنید.
- شناسه پروژه در تمام پروژههای گوگل کلود منحصر به فرد است و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید میکند؛ معمولاً برای شما مهم نیست که چیست. در اکثر آزمایشگاههای کد، باید شناسه پروژه خود را (که معمولاً با عنوان
PROJECT_IDشناخته میشود) ارجاع دهید. اگر شناسه تولید شده را دوست ندارید، میتوانید یک شناسه تصادفی دیگر ایجاد کنید. به عنوان یک جایگزین، میتوانید شناسه خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. پس از این مرحله قابل تغییر نیست و در طول پروژه باقی میماند. - برای اطلاع شما، یک مقدار سوم، شماره پروژه ، وجود دارد که برخی از APIها از آن استفاده میکنند. برای کسب اطلاعات بیشتر در مورد هر سه این مقادیر، به مستندات مراجعه کنید.
- در مرحله بعد، برای استفاده از منابع/API های ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد هزینه زیادی نخواهد داشت، اگر اصلاً هزینهای داشته باشد. برای خاموش کردن منابع به منظور جلوگیری از پرداخت صورتحساب پس از این آموزش، میتوانید منابعی را که ایجاد کردهاید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.
شروع پوسته ابری
اگرچه میتوان از راه دور و از طریق لپتاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا میشود، استفاده خواهید کرد.
از کنسول گوگل کلود ، روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

آمادهسازی و اتصال به محیط فقط چند لحظه طول میکشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

این ماشین مجازی با تمام ابزارهای توسعهای که نیاز دارید، مجهز شده است. این ماشین مجازی یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه میدهد و روی فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود میبخشد. تمام کارهای شما در این آزمایشگاه کد را میتوان در یک مرورگر انجام داد. نیازی به نصب چیزی ندارید.
۴. قبل از شروع
فعال کردن APIها
در داخل Cloud Shell، مطمئن شوید که پروژه شما راهاندازی شده و متغیرها را پیکربندی کردهاید.
gcloud auth login gcloud config list project gcloud config set project [YOUR-PROJECT-ID] export projectid=[YOUR-PROJECT-ID] export region=us-central1 export zone=$region-a echo $projectid echo $region echo $zone
فعال کردن تمام سرویسهای لازم
gcloud services enable compute.googleapis.com gcloud services enable networkconnectivity.googleapis.com gcloud services enable dns.googleapis.com
۵. ایجاد شبکه VPC تولیدکننده (فعالیت تولیدکننده)
شبکه VPC
از پوسته ابری
gcloud compute networks create producer-vpc \
--subnet-mode=custom
ایجاد زیرشبکهها
از پوسته ابری
gcloud compute networks subnets create producer-service-subnet \
--network=producer-vpc \
--range=10.0.0.0/28 \
--region=$region
gcloud compute networks subnets create producer-fr-subnet \
--network=producer-vpc \
--range=192.168.0.0/28 \
--region=$region
ایجاد روتر ابری تولیدکننده و NAT ابری
از پوسته ابری
gcloud compute routers create $region-cr \
--network=producer-vpc \
--region=$region
gcloud compute routers nats create $region-nat \
--router=$region-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
ایجاد سیاست فایروال شبکه تولیدکننده و قوانین فایروال
از پوسته ابری
gcloud compute network-firewall-policies create producer-vpc-policy --global
gcloud compute network-firewall-policies associations create \
--firewall-policy producer-vpc-policy \
--network producer-vpc \
--name network-producer-vpc \
--global-firewall-policy
برای اینکه به IAP اجازه دهید به ماشینهای مجازی شما متصل شود، یک قانون فایروال ایجاد کنید که:
- برای تمام نمونههای ماشین مجازی که میخواهید با استفاده از IAP به آنها دسترسی داشته باشید، اعمال میشود.
- اجازه ورود ترافیک از محدوده IP 35.235.240.0/20 را میدهد. این محدوده شامل تمام آدرسهای IP است که IAP برای ارسال TCP استفاده میکند.
از پوسته ابری
gcloud compute network-firewall-policies rules create 1000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "SSH with IAP" \
--direction INGRESS \
--src-ip-ranges 35.235.240.0/20 \
--layer4-configs tcp:22 \
--global-firewall-policy
ما همچنین دو قانون دیگر ایجاد خواهیم کرد که امکان بررسی سلامت سرویس توسط Load Balancer و همچنین امکان عبور ترافیک شبکه از ماشینهای مجازی که از consumer-vpc متصل میشوند را فراهم میکند.
از پوسته ابری
gcloud compute network-firewall-policies rules create 2000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "LB healthchecks" \
--direction INGRESS \
--src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
--layer4-configs tcp:80 \
--global-firewall-policy
gcloud compute network-firewall-policies rules create 3000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow access from consumer-vpc" \
--direction INGRESS \
--src-ip-ranges 10.0.1.0/28 \
--layer4-configs tcp:80 \
--global-firewall-policy
۶. راهاندازی خدمات تولیدکننده (فعالیت تولیدکننده)
ما یک سرویس تولیدکننده با یک ماشین مجازی واحد که یک وب سرور آپاچی را اجرا میکند، ایجاد خواهیم کرد که به یک گروه نمونه مدیریت نشده (Unmanaged Instance Group) اضافه میشود و در مقابل آن یک متعادلکننده بار عبوری شبکه داخلی منطقهای (Regional Internal Network Passthrough Load Balancer) قرار دارد.
ایجاد ماشین مجازی و گروه نمونه مدیریت نشده
از پوسته ابری
gcloud compute instances create producer-service-vm \
--network producer-vpc \
--subnet producer-service-subnet \
--zone $zone \
--no-address \
--metadata startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
a2enmod ssl
sudo a2ensite default-ssl
echo "I am a Producer Service." | \
tee /var/www/html/index.html
systemctl restart apache2'
از پوسته ابری
gcloud compute instance-groups unmanaged create prod-uig \ --zone=$zone gcloud compute instance-groups unmanaged add-instances prod-uig \ --zone=$zone \ --instances=producer-service-vm
ایجاد متعادلکننده بار عبوری شبکه داخلی منطقهای
از پوسته ابری
gcloud compute health-checks create http producer-hc \
--region=$region
gcloud compute backend-services create producer-bes \
--load-balancing-scheme=internal \
--protocol=tcp \
--region=$region \
--health-checks=producer-hc \
--health-checks-region=$region
gcloud compute backend-services add-backend producer-bes \
--region=$region \
--instance-group=prod-uig \
--instance-group-zone=$zone
gcloud compute addresses create producer-fr-ip\
--region $region \
--subnet producer-fr-subnet \
--addresses 192.168.0.2
gcloud compute forwarding-rules create producer-fr \
--region=$region \
--load-balancing-scheme=internal \
--network=producer-vpc \
--subnet=producer-fr-subnet \
--address=producer-fr-ip \
--ip-protocol=TCP \
--ports=80 \
--backend-service=producer-bes \
--backend-service-region=$region
۷. ایجاد شبکه VPC مصرفکننده (فعالیت مصرفکننده)
شبکه VPC
از پوسته ابری
gcloud compute networks create consumer-vpc \
--subnet-mode=custom
ایجاد زیرشبکه
از پوسته ابری
gcloud compute networks subnets create consumer-vm-subnet \
--network=consumer-vpc \
--range=10.0.1.0/28 \
--region=$region
ایجاد سیاست و قوانین فایروال شبکه مصرفکننده
ما یک سیاست فایروال شبکه دیگر برای consumer-vpc ایجاد خواهیم کرد.
از پوسته ابری
gcloud compute network-firewall-policies create consumer-vpc-policy --global
gcloud compute network-firewall-policies associations create \
--firewall-policy consumer-vpc-policy \
--network consumer-vpc \
--name network-consumer-vpc \
--global-firewall-policy
gcloud compute network-firewall-policies rules create 1000 \
--action ALLOW \
--firewall-policy consumer-vpc-policy \
--description "SSH with IAP" \
--direction INGRESS \
--src-ip-ranges 35.235.240.0/20 \
--layer4-configs tcp:22 \
--global-firewall-policy
۸. ایجاد همتای VPC
فعالیت تولیدکننده
از پوسته ابری
gcloud compute networks peerings create producer-vpc-peering \
--network=producer-vpc \
--peer-project=$projectid \
--peer-network=consumer-vpc
فعالیت مصرفکننده
از پوسته ابری
gcloud compute networks peerings create consumer-vpc-peering \
--network=consumer-vpc \
--peer-project=$projectid \
--peer-network=producer-vpc
با بررسی لیست مسیرهای موجود در consumer-vpc، از برقراری اتصال مطمئن شوید. باید مسیرهای مربوط به consumer-vpc و producer-vpc را ببینید.
فعالیت مصرفکننده
از پوسته ابری
gcloud compute routes list --filter="network=consumer-vpc"
خروجی مورد انتظار
NAME: default-route-49dda7094977e231 NETWORK: consumer-vpc DEST_RANGE: 0.0.0.0/0 NEXT_HOP: default-internet-gateway PRIORITY: 1000 NAME: default-route-r-10d65e16cc6278b2 NETWORK: consumer-vpc DEST_RANGE: 10.0.1.0/28 NEXT_HOP: consumer-vpc PRIORITY: 0 NAME: peering-route-496d0732b4f11cea NETWORK: consumer-vpc DEST_RANGE: 192.168.0.0/28 NEXT_HOP: consumer-vpc-peering PRIORITY: 0 NAME: peering-route-b4f9d3acc4c08d55 NETWORK: consumer-vpc DEST_RANGE: 10.0.0.0/28 NEXT_HOP: consumer-vpc-peering PRIORITY: 0
۹. ایجاد DNS Zone (فعالیت مصرفکننده)
ما یک منطقه خصوصی Cloud DNS ایجاد خواهیم کرد تا سرویس تولیدکننده را از طریق DNS و نه از طریق یک آدرس IP خصوصی فراخوانی کنیم تا یک مثال واقعبینانهتر را نشان دهیم.
ما یک رکورد A به دامنه example.com که به service.example.com اشاره میکند، به آدرس IP مربوط به Network Passthrough Load Balancer Forwarding Rule که قبلاً ایجاد کردیم، اضافه خواهیم کرد. آدرس IP مربوط به Forwarding Rule، 192.168.0.2 است.
از پوسته ابری
gcloud dns managed-zones create "producer-service" \ --dns-name=example.com \ --description="producer service dns" \ --visibility=private \ --networks=consumer-vpc gcloud dns record-sets transaction start \ --zone="producer-service" gcloud dns record-sets transaction add 192.168.0.2 \ --name=service.example.com \ --ttl=300 \ --type=A \ --zone="producer-service" gcloud dns record-sets transaction execute \ --zone="producer-service"
۱۰. تست سرویس تولیدکننده روی VPC Peer (فعالیت مصرفکننده)
در این مرحله، معماری حالت ۱ ایجاد شده است.
ایجاد ماشین مجازی مشتری-مشتری
از پوسته ابری
gcloud compute instances create consumer-client \ --zone=$zone \ --subnet=consumer-vm-subnet \ --no-address
اتصال را آزمایش کنید
از پوسته ابری
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
از ماشین مجازی مشتری-مصرفکننده
curl service.example.com
خروجی مورد انتظار
I am a Producer Service.
از ماشین مجازی مشتری-مصرفکننده
exit
۱۱. آمادهسازی سرویس برای اتصال سرویس خصوصی (فعالیت تولیدکننده)
اکنون که تمام مراحل اولیه راهاندازی را انجام دادهایم، آمادهسازی سرویس VPC-Peered را برای مهاجرت به Private Service Connect آغاز خواهیم کرد. در این بخش، با پیکربندی سرویس برای نمایش از طریق یک Service Attachment، تغییراتی را در producer-vpc ایجاد خواهیم کرد. باید یک زیرشبکه جدید و یک قانون ارسال جدید در آن زیرشبکه ایجاد کنیم تا بتوانیم زیرشبکه موجود را به consumer-vpc منتقل کنیم تا آدرس IP موجود سرویس دست نخورده باقی بماند.
زیرشبکهای را ایجاد کنید که IP قانون جدید ارسال متعادلکننده بار در آن میزبانی شود.
از پوسته ابری
gcloud compute networks subnets create producer-psc-fr-subnet \
--network=producer-vpc \
--range=10.0.2.64/28 \
--region=$region
آدرس IP داخلی مربوط به قانون ارسال متعادلکننده بار را ایجاد کنید.
از پوسته ابری
gcloud compute addresses create producer-psc-ip \ --region $region \ --subnet producer-psc-fr-subnet \ --addresses 10.0.2.66
قانون جدید ارسال متعادلکننده بار را ایجاد کنید. این قانون طوری پیکربندی شده است که از همان سرویس backend و بررسیهای سلامت که قبلاً پیکربندی کردهایم، استفاده کند.
از پوسته ابری
gcloud compute forwarding-rules create psc-service-fr \ --region=$region \ --load-balancing-scheme=internal \ --network=producer-vpc \ --subnet=producer-psc-fr-subnet \ --address=producer-psc-ip \ --ip-protocol=TCP \ --ports=80 \ --backend-service=producer-bes \ --backend-service-region=$region
زیرشبکه psc-nat به منظور ترجمه آدرس شبکه با ضمیمه سرویس PSC مرتبط خواهد شد. برای موارد استفاده در محیط عملیاتی، این زیرشبکه باید به طور مناسب اندازهگذاری شود تا از تعداد نقاط انتهایی متصل پشتیبانی کند. برای اطلاعات بیشتر به مستندات تعیین اندازه زیرشبکه PSC NAT مراجعه کنید.
از پوسته ابری
gcloud compute networks subnets create psc-nat-subnet \
--network=producer-vpc \
--range=10.100.100.0/28 \
--region=$region \
--purpose=PRIVATE_SERVICE_CONNECT
ما باید یک قانون فایروال اضافی به سیاست فایروال شبکه اضافه کنیم تا اکنون ترافیک از psc-nat-subnet مجاز باشد. هنگام دسترسی به سرویس از طریق PSC، psc-nat-subnet جایی است که ترافیک از آن سرچشمه میگیرد.
از پوسته ابری
gcloud compute network-firewall-policies rules create 2001 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow PSC NAT subnet" \
--direction INGRESS \
--src-ip-ranges 10.100.100.0/28 \
--layer4-configs tcp:80 \
--global-firewall-policy
پیوست سرویس را ایجاد کنید و آدرس اینترنتی (URI) پیوست سرویس را برای پیکربندی نقطه پایانی PSC در بخش بعدی یادداشت کنید.
از پوسته ابری
gcloud compute service-attachments create producer-sa \
--region=$region \
--producer-forwarding-rule=psc-service-fr \
--connection-preference=ACCEPT_MANUAL \
--consumer-accept-list=$projectid=5 \
--nat-subnets=psc-nat-subnet
از پوسته ابری
gcloud compute service-attachments describe producer-sa --region=$region
خروجی نمونه
connectionPreference: ACCEPT_MANUAL consumerAcceptLists: - connectionLimit: 5 projectIdOrNum: $projectid creationTimestamp: '2025-04-24T11:23:09.886-07:00' description: '' enableProxyProtocol: false fingerprint: xxx id: 'xxx' kind: compute#serviceAttachment name: producer-sa natSubnets: - https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: 'xxx' low: 'xxx' reconcileConnections: false region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/serviceAttachments/producer-sa targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/forwardingRules/psc-service-fr
۱۲. اتصال نقطه پایانی PSC مصرفکننده «تست» به سرویس تولیدکننده و تست (فعالیت مصرفکننده)
معماری اکنون در وضعیت ۲ قرار دارد.
در این مرحله، سرویس تولیدکننده موجود که از طریق VPC Peering در دسترس است، هنوز در حال اجرا است و در یک سناریوی عملیاتی به درستی کار میکند. ما یک نقطه پایانی PSC "آزمایشی" ایجاد خواهیم کرد تا قبل از شروع دوره قطعی برای مهاجرت زیرشبکه فعلی VPC Peering به VPC مصرفکننده، از عملکرد صحیح ضمیمه سرویس در معرض اطمینان حاصل کنیم. اتصال حالت نهایی ما یک نقطه پایانی PSC با همان آدرس IP به عنوان قانون ارسال فعلی برای سرویس مبتنی بر VPC Peering خواهد بود.
ایجاد نقطه پایانی PSC
از پوسته ابری
gcloud compute addresses create test-psc-endpoint-ip \
--region=$region \
--subnet=consumer-vm-subnet \
--addresses 10.0.1.3
سرویس هدف زیر، URI پیوست سرویس خواهد بود که در مرحله قبل یادداشت کردید.
از پوسته ابری
gcloud compute forwarding-rules create test-psc-endpoint \ --region=$region \ --network=consumer-vpc \ --address=test-psc-endpoint-ip \ --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/producer-sa
نقطه پایانی PSC "آزمایشی" را آزمایش کنید
از پوسته ابری
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
از مصرفکننده-مشتری
curl 10.0.1.3
خروجی مورد انتظار
I am a Producer Service.
از مصرفکننده-مشتری
exit
۱۳. زیرشبکهی موجودِ قانونِ ارسالِ تولیدکننده را منتقل کنید
انجام این مراحل باعث قطع سرویس تولیدکنندهی مبتنی بر Peering و فعال VPC میشود. اکنون زیرشبکهی قانون ارسال را با استفاده از API محدودههای داخلی از تولیدکننده-vpc به مصرفکننده-vpc منتقل خواهیم کرد. این کار باعث میشود زیرشبکه در دورهی موقت که زیرشبکه را در تولیدکننده-vpc حذف میکنیم و آن را فقط برای اهداف مهاجرت و ایجاد در مصرفکننده-vpc تعیین میکنیم، قفل شود.
API محدوده داخلی مستلزم آن است که شما زیرشبکه قانون ارسال همتا VPC موجود (producer-fr-subnet, 192.168.0.0/28) را رزرو کنید و یک نام زیرشبکه هدف در consumer-vpc (consumer-psc-subnet) تعیین کنید. ما در چند مرحله یک زیرشبکه جدید با این نام در consumer-vpc ایجاد میکنیم.
زیرشبکه تولیدکننده-fr را برای مهاجرت رزرو کنید
فعالیت تولیدکننده
از پوسته ابری
gcloud network-connectivity internal-ranges create producer-peering-internal-range \
--ip-cidr-range=192.168.0.0/28 \
--network=producer-vpc \
--usage=FOR_MIGRATION \
--migration-source=projects/$projectid/regions/$region/subnetworks/producer-fr-subnet \
--migration-target=projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet
برای مشاهده وضعیت زیرشبکه، یک توصیف روی محدوده داخلی که ایجاد کردیم اجرا کنید.
فعالیت تولیدکننده
از پوسته ابری
gcloud network-connectivity internal-ranges describe producer-peering-internal-range
خروجی نمونه
createTime: '2025-04-24T19:26:10.589343291Z' ipCidrRange: 192.168.0.0/28 migration: source: projects/$projectid/regions/$region/subnetworks/producer-fr-subnet target: projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet name: projects/$projectid/locations/global/internalRanges/producer-peering-internal-range network: https://www.googleapis.com/compute/v1/projects/$project/global/networks/producer-vpc peering: FOR_SELF updateTime: '2025-04-24T19:26:11.521960016Z' usage: FOR_MIGRATION
قانون و زیرشبکه Forwarding مبتنی بر VPC Peering را حذف کنید
فعالیت تولیدکننده
از پوسته ابری
gcloud compute forwarding-rules delete producer-fr --region=$region gcloud compute addresses delete producer-fr-ip --region=$region gcloud compute networks subnets delete producer-fr-subnet --region=$region
زیرشبکه را منتقل کنید
با ایجاد یک زیرشبکه جدید با استفاده از internal-range که قبلاً ایجاد کردیم، زیرشبکه را به consumer-vpc منتقل کنید. نام این زیرشبکه باید همان نامی باشد که قبلاً هدف قرار دادیم (consumer-psc-subnet). هدف خاص PEER_MIGRATION این است که زیرشبکه برای مهاجرت زیرشبکه بین VPCهای همتا رزرو شده است. با این پرچم هدف، این زیرشبکه فقط میتواند شامل آدرسهای IP استاتیک رزرو شده و نقاط پایانی PSC باشد.
فعالیت مصرفکننده
از پوسته ابری
gcloud compute networks subnets create consumer-psc-subnet \ --purpose=PEER_MIGRATION \ --network=consumer-vpc \ --range=192.168.0.0/28 \ --region=$region
۱۴. ایجاد نقطه پایانی PSC وضعیت نهایی (فعالیت مصرفکننده)
در این مرحله، سرویس تولیدکننده هنوز از کار افتاده است. زیرشبکهای که ایجاد کردیم هنوز قفل است و فقط میتواند برای هدف خاص مهاجرت استفاده شود. میتوانید این را با تلاش برای ایجاد یک ماشین مجازی در این زیرشبکه آزمایش کنید. ایجاد ماشین مجازی با شکست مواجه خواهد شد.
از پوسته ابری
gcloud compute instances create test-consumer-vm \
--zone=$zone \
--subnet=consumer-psc-subnet \
--no-address
خروجی مورد انتظار
ERROR: (gcloud.compute.instances.create) Could not fetch resource: - Subnetwork must have purpose=PRIVATE.
ما فقط میتوانیم از این زیرشبکه برای ایجاد یک نقطه پایانی PSC استفاده کنیم. توجه داشته باشید که آدرس IP که ما ایجاد میکنیم از همان IP به عنوان قانون ارسالی که سرویس تولیدکننده ما از طریق VPC Peer استفاده میکرد، استفاده میکند.
از پوسته ابری
gcloud compute addresses create psc-endpoint-ip \
--region=$region \
--subnet=consumer-psc-subnet \
--addresses 192.168.0.2
یک بار دیگر، شما باید از همان URI پیوست سرویس که قبلاً به آن اشاره کردید و برای ایجاد نقطه پایانی PSC "آزمایشی" نیز استفاده شد، استفاده کنید.
از پوسته ابری
gcloud compute forwarding-rules create psc-endpoint \
--region=$region \
--network=consumer-vpc \
--address=psc-endpoint-ip \
--target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/producer-sa
۱۵. نقطه پایانی PSC وضعیت نهایی (فعالیت مصرفکننده) را آزمایش کنید
در این مرحله، شما در معماری حالت ۳ هستید.
از پوسته ابری
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
از ماشین مجازی مشتری-مصرفکننده
curl service.example.com
خروجی مورد انتظار
I am a Producer Service.
از ماشین مجازی مشتری-مصرفکننده
exit
در این مرحله، قطعی به پایان رسیده و سرویس دوباره فعال شده است. توجه داشته باشید که ما هیچ تغییری در DNS موجود ایجاد نکردیم. نیازی به ایجاد هیچ تغییری در سمت کلاینت نیست. برنامهها میتوانند عملیات خود را به سرویس منتقل شده از سر بگیرند.
۱۶. پاکسازی مهاجرت
برای نهایی کردن مهاجرت، چند مرحله پاکسازی وجود دارد که باید انجام دهیم. باید منابع را حذف و باز کنیم.
باز کردن قفل زیرشبکه محدوده داخلی
این کار زیرشبکهی منتقلشده را از حالت قفل خارج میکند تا بتوان هدف آن را از «PEER_MIGRATION» به «PRIVATE» تغییر داد.
فعالیت تولیدکننده
از پوسته ابری
gcloud network-connectivity internal-ranges delete producer-peering-internal-range
فعالیت مصرفکننده
از پوسته ابری
gcloud compute networks subnets update consumer-psc-subnet \
--region=$region \
--purpose=PRIVATE
gcloud compute networks subnets describe consumer-psc-subnet --region=$region
خروجی نمونه
creationTimestamp: '2025-04-24T12:29:33.883-07:00' fingerprint: xxx gatewayAddress: 192.168.0.1 id: 'xxx' ipCidrRange: 192.168.0.0/28 kind: compute#subnetwork name: consumer-psc-subnet network: https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc privateIpGoogleAccess: false privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS purpose: PRIVATE region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet
همتایان VPC را حذف کنید
فعالیت تولیدکننده
از پوسته ابری
gcloud compute networks peerings delete producer-vpc-peering \
--network=producer-vpc
فعالیت مصرفکننده
از پوسته ابری
gcloud compute networks peerings delete consumer-vpc-peering \
--network=consumer-vpc
نقطه پایانی PSC "آزمایشی" را حذف کنید
فعالیت مصرفکننده
از پوسته ابری
gcloud compute forwarding-rules delete test-psc-endpoint --region=$region gcloud compute addresses delete test-psc-endpoint-ip --region=$region
۱۷. تست نهایی پس از پاکسازی مهاجرت (فعالیت مصرفکننده)
در این مرحله، معماری حالت ۴ (حالت نهایی) حاصل شده است.
اتصال PSC Endpoint را دوباره آزمایش کنید تا مطمئن شوید که هیچ عارضه جانبی ناشی از پاکسازی مهاجرت مشاهده نشده است.
از پوسته ابری
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
از ماشین مجازی مشتری-مصرفکننده
curl service.example.com
خروجی مورد انتظار
I am a Producer Service.
از ماشین مجازی مشتری-مصرفکننده
exit
موفقیت!
۱۸. مراحل پاکسازی
از پوسته ابری
gcloud compute forwarding-rules delete psc-endpoint --region=$region -q gcloud compute addresses delete psc-endpoint-ip --region=$region -q gcloud compute instances delete consumer-client --zone=$zone --project=$projectid -q gcloud dns record-sets delete service.example.com --zone="producer-service" --type=A -q gcloud dns managed-zones delete "producer-service" -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy consumer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy --name=network-consumer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q gcloud compute networks subnets delete consumer-psc-subnet --region=$region -q gcloud compute networks subnets delete consumer-vm-subnet --region=$region -q gcloud compute networks delete consumer-vpc -q gcloud compute service-attachments delete producer-sa --region=$region -q gcloud compute forwarding-rules delete psc-service-fr --region=$region -q gcloud compute addresses delete producer-psc-ip --region=$region -q gcloud compute backend-services delete producer-bes --region=$region -q gcloud compute health-checks delete producer-hc --region=$region -q gcloud compute instance-groups unmanaged delete prod-uig --zone=$zone -q gcloud compute instances delete producer-service-vm --zone=$zone --project=$projectid -q gcloud compute network-firewall-policies rules delete 3000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute routers nats delete $region-nat --router=$region-cr --region=$region -q gcloud compute routers delete $region-cr --region=$region -q gcloud compute networks subnets delete psc-nat-subnet --region=$region -q gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q gcloud compute networks subnets delete producer-service-subnet --region=$region -q gcloud compute networks delete producer-vpc -q
۱۹. تبریک میگویم!
تبریک میگویم که آزمایشگاه کد را تمام کردی.
آنچه ما پوشش دادهایم
- نحوه راه اندازی سرویس مبتنی بر همتاسازی VPC
- نحوه راهاندازی سرویس مبتنی بر PSC
- استفاده از API مربوط به Internal-Ranges برای انجام مهاجرت زیرشبکه از طریق VPC Peering به منظور دستیابی به مهاجرت سرویس VPC Peering به PSC.
- درک زمان لازم برای از کار افتادن سیستم برای مهاجرت سرویس
- مراحل پاکسازی مهاجرت