1. מבוא
קישור בין רשתות שכנות (peering) של VPC הוא שיטה נפוצה שבה יצרנים מציעים צריכת שירות למשתמשים שלהם. עם זאת, השימוש בקישור בין רשתות שכנות (peering) של VPC כרוך במורכבות בניתוב, כמו קישור בין רשתות שכנות (peering) שלא עולות בין רשתות שכנות (peering), צריכה של כתובות IP גדולות וחשיפת יתר של משאבים ב-VPC מקושר.
Private Service Connect (PSC) היא שיטת קישוריות שמאפשרת למפיקים לחשוף שירות באמצעות נקודת קצה אחת, שצרכן מקצה ב-VPC של עומס עבודה. כך ניתן למנוע בעיות רבות שבהן משתמשים מתמודדים עם קישור בין רשתות שכנות (peering) ב-VPC. הרבה שירותים חדשים נוצרים באמצעות PSC, אבל עדיין יש שירותים רבים שקיימים שירותי קישור בין רשתות שכנות (peering) של VPC.
אנחנו שמחים להציג ב-Google Cloud נתיב העברה לשירותים שיצרתם באמצעות קישור בין רשתות שכנות (peering) של VPC, לצורך מעבר לארכיטקטורה מבוססת-PSC. בשיטת ההעברה הזו, כתובת ה-IP של השירות היצרן שנחשפת באמצעות קישור בין רשתות שכנות (peering) של VPC נשמרת באמצעות הארכיטקטורה המבוססת על PSC כך שהצרכן יידרש לבצע שינויים מזעריים לפחות. בעקבות ה-codelab הזה אפשר ללמוד על השלבים הטכניים לביצוע ההעברה הזו.
הערה: נתיב ההעברה הזה מיועד רק לשירותים שבהם היצרן והצרכן קיימים באותו ארגון ב-Google Cloud. כל שירות של Google Cloud או שירות צד שלישי שמשתמשים בקישור בין רשתות שכנות (peering) של VPC ישתמש בשיטת העברה דומה, אבל היא תותאם אישית לשירות עצמו. צריך לפנות לגורמים המתאימים כדי לברר לגבי נתיב ההעברה של שירותים מהסוגים האלה.
מה תלמדו
- איך מגדירים שירות שמבוסס על קישור בין רשתות שכנות (peering) של VPC
- איך להגדיר שירות מבוסס-PSC
- שימוש ב- Internal-Ranges API לביצוע העברה של רשת משנה דרך קישור בין רשתות שכנות (peering) של VPC, במטרה לבצע קישור בין רשתות שכנות (peering) של VPC לשירות PSC.
- להבין מתי צריך להתרחש זמן השבתה לצורך העברת שירות
- השלבים להסרת התוכן בהעברה
מה צריך להכין
- פרויקט ב-Google Cloud עם הרשאות בעלים
2. טופולוגיה של Codelab
כדי לשמור על פשטות, ה-Codelab הזה מרכז את כל המשאבים בפרויקט אחד. יצוין ב-Codelab אילו פעולות צריך לבצע בצד המפיק ואילו פעולות צריך לבצע בצד הצרכן במקרה שהיצרנים והצרכנים נמצאים בפרויקטים שונים.
ל-Codelab הזה יהיו 4 מצבים.
מצב 1 הוא מצב הקישור בין רשתות שכנות (peering) של VPC. יהיו שתי רשתות VPC: הלקוח – vpc ו-Producer-vpc, שיקובצו יחד. ל-Producer-vpc יהיה שירות Apache פשוט שייחשף דרך מאזן עומסים פנימי של Network Passthrough. לצרכנים ב-vpc יהיה VM יחיד למטרות בדיקה.
מצב 2 הוא מצב הבדיקה של PSC. אנחנו ניצור כלל העברה חדש ונשתמש בכלל הזה כדי לשייך אותו לקובץ המצורף לשירות שלנו. לאחר מכן ניצור נקודת קצה (endpoint) מסוג PSC ב-consumer-vpc, כדי לבדוק ששירות PSC שלנו פועל כמו שצריך.
מצב 3 הוא מצב ההעברה. אנחנו נשמור את טווח רשת המשנה ב-Producer-vpc, שבו נפרס השירות שמבוסס על קישור בין רשתות שכנות (peering) של VPC, כדי שאפשר יהיה להשתמש בו ב-consumer-vpc. לאחר מכן ניצור נקודת קצה חדשה מסוג PSC עם אותה כתובת IP כמו כלל ההעברה הקיים ב-Producer-vpc.
מצב 4 הוא מצב PSC הסופי. נמחק את נקודת הקצה (endpoint) של PSC ומוחקים את הקישור בין רשתות שכנות (peering) של ה-VPC בין Consumer-vpc ו-Producer-vpc.
3. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- שם הפרויקט הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן אותו.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שמגדירים אותו. מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל מזהים אותו בתור
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות כתובת משלכם ולבדוק אם היא זמינה. לא ניתן לשנות אותו אחרי השלב הזה, והוא יישאר למשך כל פרק הזמן של הפרויקט. - לידיעתך, יש ערך שלישי, מספר פרויקט, שמשתמשים בו בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא, כדי להשתמש במשאבים או ב-API של Cloud, תצטרכו להפעיל את החיוב במסוף Cloud. השלמת הקודלאב הזה לא תעלה הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.
הפעלת Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.
במסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:
ההקצאה והחיבור לסביבת העבודה אמורים להימשך רק כמה רגעים. בסיום, אמור להופיע משהו כזה:
המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, משפרת מאוד את ביצועי הרשת ואת האימות. אתם יכולים לבצע את כל העבודה בקודלאב הזה בדפדפן. אין צורך להתקין שום דבר.
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
יצירת Producer 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
יצירת מדיניות חומת אש ברשת של Producer וכללי חומת אש
מ-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 להתחבר למכונות הווירטואליות, יוצרים כלל של חומת אש:
- המדיניות חלה על כל מכונות וירטואליות שרוצים לגשת אליהן באמצעות IAP.
- תעבורת נתונים נכנסת (ingress) מטווח ה-IP 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות להעברת TCP באמצעות IAP.
מ-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
בנוסף, ניצור שני כללים נוספים שיאפשרו בדיקות תקינות של מאזן העומסים לשירות, וכן נאפשר תעבורת נתונים ברשת ממכונות וירטואליות יתחברו מ-צרכן-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. הגדרת שירות של Producer (פעילות של מפיק)
אנחנו ניצור שירות בעלים עם מכונה וירטואלית יחידה שמפעילה שרת אינטרנט של Apache. השירות יתווסף לקבוצת מכונות לא מנוהלת שבחזית שלה עם מאזן עומסים אזורי של תהליכי מעבר רשת אזוריים.
יצירת VM וקבוצת מכונות לא מנוהלות
מ-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
הפעילות של המפיק
מ-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. אתם אמורים לראות מסלולים גם לצרכנים 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 דרך עמית ב-VPC (פעילות צרכנית)
בשלב הזה נוצרה הארכיטקטורה של State 1.
יצירת מכונה וירטואלית (VM) של לקוח צרכן
מ-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
מ-VM של הצרכן-לקוח
curl service.example.com
הפלט הצפוי:
I am a Producer Service.
מ-VM של הצרכן-לקוח
exit
11. הכנת השירות ל-Private Service Connect (פעילות של המפיק)
אחרי שסיימנו את כל שלבי ההגדרה הראשונית, נתחיל להכין את השירות שמבוסס על VPC-Peered להעברה ל-Private Service Connect. בקטע הזה נבצע שינויים ב-Producer-vpc על ידי הגדרת השירות לחשיפת השירות דרך קובץ מצורף לשירות. נצטרך ליצור רשת משנה חדשה וכלל העברה חדש בתוך אותה רשת משנה, כדי שנוכל להעביר את רשת המשנה הקיימת אל Consumer-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 לצורך תרגום כתובת הרשת. בתרחישים לדוגמה בסביבת הייצור, צריך להתאים את הגודל של רשת המשנה הזו למספר נקודות הקצה שמצורפות אליה. למידע נוסף, ראו מסמכי התיעוד בנושא מידות רשת משנה של PSC NAT.
מ-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. קישור של נקודת הקצה (endpoint) של Consumer PSC ל-Producer Service ובדיקה (פעילות צרכנים)
הארכיטקטורה נמצאת עכשיו במצב 2.
בשלב הזה, השירות הקיים של היצרן שנחשף דרך קישור בין רשתות שכנות (peering) של VPC עדיין פעיל ופועל כראוי בתרחיש ייצור. אנחנו ניצור נקודת קצה (endpoint) מסוג PSC 'בדיקה' כדי לוודא שהקובץ המצורף של השירות שנחשפה פועל כראוי לפני שאנחנו מתחילים תקופה של הפסקה זמנית בשירות לצורך העברת תת-הרשת הנוכחית של רשתות שכנות (peering) של VPC אל ה-VPC של הצרכן. הקישוריות במצב הקצה שלנו תהיה נקודת קצה (endpoint) של PSC עם אותה כתובת IP כמו כלל ההעברה הנוכחי של השירות שמבוסס על קישור בין רשתות שכנות (peering) של VPC.
יצירה של נקודת קצה (endpoint) של 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
בודקים את נקודת הקצה (endpoint) של 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. כתוצאה מכך, לא ניתן יהיה להשתמש ברשת המשנה בתקופת הביניים שבה נמחק את רשת המשנה ב-Producer-vpc, ונקצה אותה רק למטרות העברה לחשבון הצרכן ב-vpc.
כדי להשתמש ב-API של הטווח הפנימי, צריך לשמור את רשת המשנה הקיימת של כלל קישור בין רשתות שכנות (peering) ב-VPC (Producer-fr-subnet, 192.168.0.0/28) ולציין שם של תת-רשת יעד ב- Consumer-vpc (consumer-psc-subnet). אנחנו יוצרים תת-רשת חדשה ב-KPC בשם זה, בכמה שלבים.
שמירת רשת התת-רשת של Producer-fr-subnet להעברה
הפעילות של המפיק
מ-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
מריצים תיאור של הטווח הפנימי שיצרנו כדי להציג את המצב של רשת המשנה.
הפעילות של המפיק
מ-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
מחיקת כלל ההעברה והתת-רשת של קישור בין רשתות שכנות (peering) של VPC
הפעילות של המפיק
מ-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. יצירת נקודת הקצה (endpoint) של PSC במצב הקצה (פעילות צרכנים)
בשלב זה, השירות Producer עדיין מושבת. רשת המשנה שיצרנו עכשיו עדיין נעולה ואפשר להשתמש בה רק למטרה הספציפית של ההעברה. אפשר לבדוק זאת על ידי ניסיון ליצור VM ברשת המשנה הזו. יצירת ה-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.
אנחנו יכולים להשתמש ברשת המשנה הזו רק כדי ליצור נקודת קצה (endpoint) של PSC. שימו לב שכתובת ה-IP שאנחנו יוצרים משתמשת באותה כתובת IP כמו כלל ההעברה שבו נעשה שימוש בשירות המפיק שלנו דרך הרשת השכנה ב-VPC.
מ-Cloud Shell
gcloud compute addresses create psc-endpoint-ip \ --region=$region \ --subnet=consumer-psc-subnet \ --addresses 192.168.0.2
שוב, צריך להשתמש באותו URI של קובץ מצורף לשירות שציינת קודם ושהשתמשת בו גם כדי ליצור את נקודת הקצה (endpoint) של 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. בדיקת נקודת הקצה (endpoint) של PSC במצב הקצה (פעילות צרכנים)
בשלב הזה אתם נמצאים בארכיטקטורה של מדינת 3.
מ-Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
מ-VM של הצרכן-לקוח
curl service.example.com
הפלט הצפוי:
I am a Producer Service.
מ-VM של הצרכן-לקוח
exit
בשלב הזה הסתיימה ההפסקה והשירות פועל שוב. חשוב לציין שלא היינו צריכים לבצע שינויים ב-DNS הקיים. אין צורך לבצע שינויים בלקוח בצד הצרכן. האפליקציות יכולות פשוט להמשיך את הפעולות לשירות שהועבר.
16. ניקוי ההעברה
כדי להשלים את ההעברה, יש כמה פעולות פשוטות שעלינו לבצע. אנחנו צריכים למחוק משאבים ולבטל את הנעילה שלהם.
ביטול הנעילה של רשת המשנה של הטווח הפנימי
הפעולה הזו תבטל את הנעילה של רשת המשנה שהועברה כך שאפשר יהיה לשנות את המטרה שלה מ-'PEER_MIGRATION' ל-'Individual'.
הפעילות של המפיק
מ-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
הפעילות של המפיק
מ-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
פעילות צרכנים
מ-Cloud Shell
gcloud compute forwarding-rules delete test-psc-endpoint --region=$region gcloud compute addresses delete test-psc-endpoint-ip --region=$region
17. בדיקה אחרונה לאחר הסרת הנתונים מההעברה (פעילות צרכנים)
בשלב הזה, ניתן ליצור את הארכיטקטורה של State 4 (המצב הסופי).
כדאי לבדוק שוב את הקישוריות של נקודת הקצה של PSC כדי לוודא שלא זוהו השפעות שליליות בעקבות ניקוי ההעברה.
מ-Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
מ-VM של הצרכן-לקוח
curl service.example.com
הפלט הצפוי:
I am a Producer Service.
מ-VM של הצרכן-לקוח
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, במטרה לבצע קישור בין רשתות שכנות (peering) של VPC לשירות PSC.
- להבין מתי צריך להתרחש זמן השבתה לצורך העברת שירות
- השלבים להסרת התוכן בהעברה