1. מבוא
VPC Peering היא שיטה נפוצה שבעלי שירותים מנוהלים משתמשים בה כדי להציע למשתמשים שלהם לצרוך שירותים. עם זאת, השימוש ב-VPC peering מביא איתו הרבה מורכבויות בניתוב, כמו VPC peering לא טרנזיטיבי, צריכה גדולה של כתובות IP וחשיפת יתר של משאבים ב-VPC שעבר peering.
Private Service Connect (PSC) היא שיטת קישוריות שמאפשרת לספקים לחשוף שירות דרך נקודת קצה יחידה שצרכן מקצה ב-VPC של עומס העבודה. כך נמנעות הרבה בעיות שמשתמשים נתקלים בהן ב-VPC Peering. הרבה שירותים חדשים נוצרים עם PSC, אבל עדיין יש הרבה שירותים שקיימים כשירותי VPC Peering.
אנחנו שמחים להציג ב-Google Cloud נתיב מיגרציה לשירותים שיצרתם באמצעות VPC Peering, כדי לעבור לארכיטקטורה שמבוססת על PSC. בשיטה הזו להעברה, כתובת ה-IP של שירות הבעלים שנחשפת דרך VPC peering נשמרת עד לארכיטקטורה מבוססת PSC, כך שנדרשים שינויים מינימליים אצל צרכן השירות. כדי ללמוד את השלבים הטכניים לביצוע המיגרציה הזו, אפשר לעיין ב-codelab הזה.
הערה: נתיב ההעברה הזה מיועד רק לשירותים שבהם היצרן והצרכן נמצאים באותו ארגון ב-Google Cloud. לכל שירות Google Cloud או שירות צד שלישי שמשתמש ב-VPC peering, תהיה שיטת העברה דומה, אבל היא תותאם לשירות עצמו. כדי לברר לגבי נתיב ההעברה של סוגי השירותים האלה, צריך לפנות לצדדים המתאימים.
מה תלמדו
- איך מגדירים שירות שמבוסס על קישור בין רשתות שכנות (peering) של VPC
- איך מגדירים שירות שמבוסס על PSC
- שימוש ב-Internal-Ranges API כדי לבצע העברה של תת-רשתות באמצעות קישור בין רשתות שכנות (peering) של VPC, כדי להשיג העברה של שירות מקישור בין רשתות שכנות של VPC ל-PSC.
- הסבר על המקרים שבהם נדרשת השבתה לצורך העברת שירות
- שלבים לניקוי אחרי ההעברה
מה תצטרכו
- פרויקט ב-Google Cloud עם הרשאות בעלים
2. טופולוגיית Codelab
כדי לפשט את הדברים, ב-Codelab הזה כל המשאבים מרוכזים בפרויקט אחד. ב-codelab יצוינו הפעולות שצריך לבצע בצד המפיק והפעולות שצריך לבצע בצד הצרכן במקרה שהמפיקים והצרכנים נמצאים בפרויקטים שונים.
ב-Codelab הזה יהיו 4 מצבים.

מצב 1 הוא מצב ה-VPC Peering. יהיו שני VPC, consumer-vpc ו-producer-vpc, שיקושרו יחד. ברשת producer-vpc יהיה שירות Apache פשוט שייחשף דרך מאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי. ל-Consumer-vpc תהיה מכונה וירטואלית אחת של צרכן למטרות בדיקה.

מצב 2 הוא מצב הבדיקה של PSC. ניצור כלל העברה חדש ונשתמש בו כדי לשייך אותו ל-Service Attachment. לאחר מכן ניצור נקודת קצה לבדיקה של PSC ב-consumer-vpc כדי לבדוק ששירות ה-PSC שלנו פועל כמצופה.

מצב 3 הוא מצב ההעברה. אנחנו נשמור את טווח רשת המשנה ב-producer-vpc שבו נפרס השירות שמבוסס על קישור בין רשתות שכנות (peering), כדי להשתמש בו ב-consumer-vpc. לאחר מכן ניצור נקודת קצה חדשה של PSC עם אותה כתובת IP כמו כלל ההעברה שקיים מראש ב-producer-vpc.

מצב 4 הוא המצב הסופי של PSC. ננקה את נקודת הקצה של ה-PSC לבדיקה ונמחק את הקישור בין רשתות ה-VPC של הצרכן והספק.
3. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים ל-מסוף Google Cloud ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



- שם הפרויקט הוא השם המוצג של הפרויקט הזה למשתתפים. זו מחרוזת תווים שלא נמצאת בשימוש ב-Google APIs. תמיד אפשר לעדכן את המיקום.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שהוא מוגדר. מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית, ובדרך כלל לא צריך לדעת מה היא. ברוב ה-Codelabs, תצטרכו להפנות למזהה הפרויקט (בדרך כלל מסומן כ-
PROJECT_ID). אם אתם לא אוהבים את המזהה שנוצר, אתם יכולים ליצור מזהה אקראי אחר. אפשר גם לנסות שם משתמש משלכם ולבדוק אם הוא זמין. אי אפשר לשנות את ההגדרה הזו אחרי השלב הזה, והיא תישאר לאורך הפרויקט. - לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. במאמרי העזרה מפורט מידע נוסף על שלושת הערכים האלה.
- בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API של Cloud. השלמת ה-codelab הזה לא תעלה לכם הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים נוספים אחרי שתסיימו את המדריך הזה, תוכלו למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
מפעילים את Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-codelab הזה תשתמשו ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.
ב-מסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

יחלפו כמה רגעים עד שההקצאה והחיבור לסביבת העבודה יושלמו. בסיום התהליך, אמור להופיע משהו כזה:

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את כל העבודה ב-codelab הזה בדפדפן. לא צריך להתקין שום דבר.
4. לפני שמתחילים
הפעלת ממשקי ה-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
5. יצירת רשת VPC של Producer (פעילות של Producer)
רשת VPC
מ-Cloud Shell
gcloud compute networks create producer-vpc \
--subnet-mode=custom
יצירת תת-רשתות
מ-Cloud Shell
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
יצירת Cloud Router ו-Cloud NAT בפרויקט של הספק
מ-Cloud Shell
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
יצירת מדיניות חומת אש וכללים לחומת האש ברשת של התוכן
מ-Cloud Shell
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 להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש ש:
- רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
- מאפשר תנועה נכנסת מטווח כתובות ה-IP 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.
מ-Cloud Shell
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
בנוסף, ניצור עוד שני כללים שיאפשרו בדיקות תקינות של מאזן העומסים בשירות, וגם יאפשרו תעבורת נתונים ברשת ממכונות וירטואליות שיתחברו מ-consumer-vpc.
מ-Cloud Shell
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
6. הגדרת שירות ההפקה (פעילות ההפקה)
ניצור שירות יצרן עם מכונה וירטואלית אחת שמריצה שרת אינטרנט של Apache, שתוסף לקבוצת מכונות לא מנוהלת עם מאזן עומסים אזורי פנימי של רשתות להעברת סיגנל ללא שינוי.
יצירת המכונה הווירטואלית וקבוצת המופעים הלא מנוהלת
מ-Cloud Shell
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'
מ-Cloud Shell
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
יצירת מאזן עומסי רשת פנימי אזורי להעברת סיגנל ללא שינוי
מ-Cloud Shell
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
7. יצירת רשת VPC של צרכן (פעילות של צרכן)
רשת VPC
מ-Cloud Shell
gcloud compute networks create consumer-vpc \
--subnet-mode=custom
יצירת רשת משנה
מ-Cloud Shell
gcloud compute networks subnets create consumer-vm-subnet \
--network=consumer-vpc \
--range=10.0.1.0/28 \
--region=$region
יצירת מדיניות חומת אש וכללים לחומת אש ברשת של צרכנים
ניצור עוד מדיניות של חומת אש ברשת עבור ה-VPC של הצרכן.
מ-Cloud Shell
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
8. יצירת קישור בין רשתות VPC שכנות (peering)
Producer Activity
מ-Cloud Shell
gcloud compute networks peerings create producer-vpc-peering \
--network=producer-vpc \
--peer-project=$projectid \
--peer-network=consumer-vpc
פעילות צרכנית
מ-Cloud Shell
gcloud compute networks peerings create consumer-vpc-peering \
--network=consumer-vpc \
--peer-project=$projectid \
--peer-network=producer-vpc
כדי לוודא שהקישור בין רשתות שכנות (peering) נוצר, בודקים את רשימת המסלולים ב-consumer-vpc. אמורות להופיע לכם נתיבים גם ל-consumer-vpc וגם ל-producer-vpc.
פעילות צרכנית
מ-Cloud Shell
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
9. יצירת תחום DNS (פעילות צרכנית)
כדי להציג דוגמה מציאותית יותר, ניצור תחום פרטי ב-Cloud DNS כדי לקרוא לשירות היצרן דרך DNS ולא דרך כתובת IP פרטית.
נוסיף רשומת A לדומיין example.com שמפנה את service.example.com לכתובת ה-IP של כלל ההעברה של מאזן העומסים של העברת נתונים ברשת שיצרנו קודם. כתובת ה-IP של כלל ההעברה היא 192.168.0.2.
מ-Cloud Shell
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"
10. Test Producer Service Over VPC Peer (Consumer Activity)
בשלב הזה, הארכיטקטורה של מצב 1 נוצרה.
יצירת מכונה וירטואלית של לקוח צרכן
מ-Cloud Shell
gcloud compute instances create consumer-client \ --zone=$zone \ --subnet=consumer-vm-subnet \ --no-address
בדיקת הקישוריות
מ-Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
ממכונה וירטואלית של לקוח צרכני
curl service.example.com
הפלט הצפוי
I am a Producer Service.
ממכונה וירטואלית של לקוח צרכני
exit
11. הכנת שירות ל-Private Service Connect (פעילות של בעלי השירות)
אחרי שסיימנו את כל שלבי ההגדרה הראשונית, נתחיל להכין את השירות המקושר ל-VPC להעברה ל-Private Service Connect. בקטע הזה נבצע שינויים ב-producer-vpc על ידי הגדרת השירות כך שייחשף דרך Service Attachment. נצטרך ליצור תת-רשת חדשה וכלל העברה חדש בתוך תת-הרשת הזו, כדי שנוכל להעביר את תת-הרשת הקיימת ל-VPC של הצרכן ולשמור על כתובת ה-IP הקיימת של השירות.
יוצרים את רשת המשנה שבה תתארח כתובת ה-IP של כלל ההעברה החדש במאזן העומסים.
מ-Cloud Shell
gcloud compute networks subnets create producer-psc-fr-subnet \
--network=producer-vpc \
--range=10.0.2.64/28 \
--region=$region
יוצרים את כתובת ה-IP הפנימית של כלל ההעברה של מאזן העומסים.
מ-Cloud Shell
gcloud compute addresses create producer-psc-ip \ --region $region \ --subnet producer-psc-fr-subnet \ --addresses 10.0.2.66
יוצרים את כלל ההעברה החדש במאזן העומסים. הכלל הזה מוגדר להשתמש באותו שירות קצה עורפי ובאותן בדיקות תקינות שהגדרנו קודם.
מ-Cloud Shell
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-subnet תשויך ל-PSC Service Attachment לצורך תרגום כתובות רשת (NAT). לתרחישי שימוש בסביבת ייצור, צריך להגדיר את גודל רשת המשנה בצורה מתאימה כדי לתמוך במספר נקודות הקצה שמצורפות אליה. מידע נוסף זמין במאמרי העזרה בנושא קביעת גודל של רשת משנה של NAT ב-PSC.
מ-Cloud Shell
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.
מ-Cloud Shell
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 בקטע הבא.
מ-Cloud Shell
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
מ-Cloud Shell
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
12. חיבור נקודת קצה לצרכן ב-PSC בשם 'test' לשירות של היצרן ובדיקה (פעילות הצרכן)
הארכיטקטורה נמצאת עכשיו במצב 2.
בשלב הזה, שירות הבעלים הקיים שחשוף דרך VPC Peering עדיין פעיל ועובד בצורה תקינה בתרחיש ייצור. ניצור נקודת קצה של PSC ל'בדיקה' כדי לוודא ש-Service Attachment שנחשף פועל בצורה תקינה לפני שנתחיל תקופת הפסקה זמנית בשירות להעברת רשת המשנה הנוכחית של VPC Peering אל צרכן ה-VPC. הקישוריות במצב הסופי תהיה נקודת קצה של PSC עם אותה כתובת IP כמו כלל ההעברה הנוכחי לשירות שמבוסס על קישור בין רשתות שכנות של VPC.
יצירת נקודת קצה של PSC
מ-Cloud Shell
gcloud compute addresses create test-psc-endpoint-ip \
--region=$region \
--subnet=consumer-vm-subnet \
--addresses 10.0.1.3
שירות היעד שמופיע בהמשך יהיה ה-URI של קובץ השירות שרשמתם בשלב האחרון.
מ-Cloud Shell
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 'בדיקה'
מ-Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
מלקוח צרכני
curl 10.0.1.3
הפלט הצפוי
I am a Producer Service.
מלקוח צרכני
exit
13. העברת רשת המשנה של כלל ההעברה הקיים של היצרן
ביצוע השלבים האלה יגרום להפסקה זמנית בשירות Producer שמבוסס על קישור בין רשתות שכנות (peering) של VPC בשידור חי. עכשיו נעביר את רשת המשנה של כלל ההעברה מ-producer-vpc ל-consumer-vpc באמצעות Internal Ranges API. הפעולה הזו תנעל את רשת המשנה כך שלא יהיה אפשר להשתמש בה בתקופת הביניים שבה אנחנו מוחקים את רשת המשנה ב-VPC של היצרן ומייעדים אותה רק למטרות העברה ליצירה ב-VPC של הצרכן.
ה-API של הטווח הפנימי מחייב אתכם לשריין את רשת המשנה הקיימת של כלל ההעברה של ה-VPC (producer-fr-subnet, 192.168.0.0/28) ולהגדיר שם של רשת משנה יעד ב-VPC של הלקוח (consumer-psc-subnet). בכמה שלבים ניצור תת-רשת חדשה ב-consumer-vpc עם השם הזה.
שמירת רשת המשנה producer-fr-subnet להעברה
Producer Activity
מ-Cloud Shell
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
מריצים תיאור בטווח הפנימי שיצרנו כדי לראות את מצב רשת המשנה.
Producer Activity
מ-Cloud Shell
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
מחיקת כלל ההעברה ורשת המשנה שמבוססים על VPC Peering
Producer Activity
מ-Cloud Shell
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
העברת תת-הרשת
מעבירים את תת-הרשת אל ה-VPC של הצרכן על ידי יצירת תת-רשת חדשה באמצעות הטווח הפנימי שיצרנו קודם. השם של רשת המשנה הזו צריך להיות זהה לשם שציינו קודם (consumer-psc-subnet). הייעוד הספציפי של PEER_MIGRATION מציין שרשת המשנה שמורה להעברת רשתות משנה בין רשתות VPC מקושרות. כשמגדירים את הדגל הזה, רשת המשנה יכולה להכיל רק כתובות IP סטטיות שמורות ונקודות קצה של PSC.
פעילות צרכנית
מ-Cloud Shell
gcloud compute networks subnets create consumer-psc-subnet \ --purpose=PEER_MIGRATION \ --network=consumer-vpc \ --range=192.168.0.0/28 \ --region=$region
14. יצירת נקודת קצה מסוג PSC של מצב סופי (פעילות צרכנית)
בשלב הזה, שירות ה-Producer עדיין מושבת. רשת המשנה שיצרנו הרגע עדיין נעולה, ואפשר להשתמש בה רק למטרה הספציפית של העברה. כדי לבדוק את זה, אפשר לנסות ליצור מכונת VM ברשת המשנה הזו. יצירת המכונה הווירטואלית תיכשל.
מ-Cloud Shell
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.
מ-Cloud Shell
gcloud compute addresses create psc-endpoint-ip \
--region=$region \
--subnet=consumer-psc-subnet \
--addresses 192.168.0.2
שוב, צריך להשתמש באותו URI של Service Attachment שרשמתם קודם וששימש גם ליצירת נקודת הקצה 'test' של PSC.
מ-Cloud Shell
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
15. בדיקת נקודת הקצה של PSC במצב הסופי (פעילות הצרכן)
בשלב הזה, אתם נמצאים בארכיטקטורה של מצב 3.
מ-Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
ממכונה וירטואלית של לקוח צרכני
curl service.example.com
הפלט הצפוי
I am a Producer Service.
ממכונה וירטואלית של לקוח צרכני
exit
בשלב הזה, ההשבתה הסתיימה והשירות פעיל שוב. חשוב לציין שלא נדרשו שינויים ב-DNS הקיים. לא צריך לבצע שינויים בצד הלקוח. האפליקציות יכולות פשוט להמשיך לפעול בשירות שאליו הן הועברו.
16. ניקוי אחרי העברה
כדי להשלים את ההעברה, צריך לבצע כמה פעולות ניקוי. אנחנו צריכים למחוק ולבטל את הנעילה של משאבים.
ביטול הנעילה של תת-הרשת Internal Range
הפעולה הזו תבטל את הנעילה של רשת המשנה שהועברה, כך שאפשר יהיה לשנות את הייעוד שלה מ-PEER_MIGRATION ל-PRIVATE.
Producer Activity
מ-Cloud Shell
gcloud network-connectivity internal-ranges delete producer-peering-internal-range
פעילות צרכנית
מ-Cloud Shell
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 המקושרות
Producer Activity
מ-Cloud Shell
gcloud compute networks peerings delete producer-vpc-peering \
--network=producer-vpc
פעילות צרכנית
מ-Cloud Shell
gcloud compute networks peerings delete consumer-vpc-peering \
--network=consumer-vpc
מחיקת נקודת הקצה של PSC 'test'
Consumer-Activity
מ-Cloud Shell
gcloud compute forwarding-rules delete test-psc-endpoint --region=$region gcloud compute addresses delete test-psc-endpoint-ip --region=$region
17. בדיקה סופית אחרי ניקוי המיגרציה (פעילות צרכנים)
בשלב הזה, הארכיטקטורה של מצב 4 (המצב הסופי) הושלמה.
בודקים שוב את הקישוריות של נקודת הקצה של PSC כדי לוודא שלא נצפו השפעות שליליות כתוצאה מהניקוי של ההעברה.
מ-Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
ממכונה וירטואלית של לקוח צרכני
curl service.example.com
הפלט הצפוי
I am a Producer Service.
ממכונה וירטואלית של לקוח צרכני
exit
בוצע בהצלחה!
18. שלבי הניקוי
מ-Cloud Shell
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
19. מעולה!
כל הכבוד, סיימתם את ה-Codelab.
מה נכלל
- איך מגדירים שירות שמבוסס על קישור בין רשתות שכנות (peering) של VPC
- איך מגדירים שירות שמבוסס על PSC
- שימוש ב-Internal-Ranges API כדי לבצע העברה של תת-רשתות באמצעות קישור בין רשתות שכנות (peering) של VPC, כדי להשיג העברה של שירות מקישור בין רשתות שכנות של VPC ל-PSC.
- הסבר על המקרים שבהם נדרשת השבתה לצורך העברת שירות
- שלבים לניקוי אחרי ההעברה