Private Service Connect: העברת קישור בין רשתות שכנות (peering) של VPC ל-Private Service Connect

מידע על Codelab זה
schedule74 דקות
subjectהעדכון האחרון: 28 באפריל 2025
account_circleנכתב על ידי Lorin Price

קישור בין רשתות שכנות (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 מצבים.

7dbf27cf215f9703.png

מצב 1 הוא מצב הקישור בין רשתות שכנות (peering) של VPC. יהיו שתי רשתות VPC: הלקוח – vpc ו-Producer-vpc, שיקובצו יחד. ל-Producer-vpc יהיה שירות Apache פשוט שייחשף דרך מאזן עומסים פנימי של Network Passthrough. לצרכנים ב-vpc יהיה VM יחיד למטרות בדיקה.

7f64427c0e59d417.png

מצב 2 הוא מצב הבדיקה של PSC. אנחנו ניצור כלל העברה חדש ונשתמש בכלל הזה כדי לשייך אותו לקובץ המצורף לשירות שלנו. לאחר מכן ניצור נקודת קצה (endpoint) מסוג PSC ב-consumer-vpc, כדי לבדוק ששירות PSC שלנו פועל כמו שצריך.

98c324c59c1fbf68.png

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

a64ab7b69132c722.png

מצב 4 הוא מצב PSC הסופי. נמחק את נקודת הקצה (endpoint) של PSC ומוחקים את הקישור בין רשתות שכנות (peering) של ה-VPC בין Consumer-vpc ו-Producer-vpc.

3. הגדרה ודרישות

הגדרת סביבה בקצב אישי

  1. נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

הפעלת Cloud Shell

אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.

במסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 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.
  • להבין מתי צריך להתרחש זמן השבתה לצורך העברת שירות
  • השלבים להסרת התוכן בהעברה