הדרכה ל-Codelab בנושא יכולת שינוי ב-Private Service Connect

1. מבוא

‫Private Service Connect היא יכולת של רשתות Google Cloud שמאפשרת לצרכנים לגשת לשירותים מנוהלים באופן פרטי מתוך רשת ה-VPC שלהם. באופן דומה, הוא מאפשר לספקי שירותים מנוהלים לארח את השירותים האלה ברשתות VPC נפרדות משלהם ולהציע חיבור פרטי לצרכנים שלהם.

עד עכשיו, אחרי ששירותי PSC נחשפו דרך קובץ מצורף לשירות, לא היה אפשר לבצע שינויים במאזני העומסים של השירות בלי להסיר את הקובץ המצורף לשירות ולשבש את הקישוריות של נקודת הקצה של PSC לצרכן. ההשקה של שינוי ב-PSC מאפשרת ליצרנים לעדכן את מאזן העומסים שלהם תוך שמירה על החיבור לנקודת הקצה של PSC. היתרון של שמירה על החיבור של נקודת הקצה של PSC לחיבור השירות בזמן שינוי מאזן העומסים הוא שלא נדרשת פעולה מצד הלקוח.

בשלב הזה, אפשרות השינוי של PSC תתמוך ב

  • העברה לכלל העברה של מאזן עומסים מאותו סוג (למשל, העברת סיגנל ללא שינוי ברשת להעברת סיגנל ללא שינוי ברשת)
  • העברה לכלל העברה של מאזן עומסים מסוג אחר (לדוגמה, העברת סיגנל ללא שינוי ברשת למאזן עומסים של אפליקציות)

יכולת השינוי של PSC לא תומכת בעריכת כלל ההעברה במקום.

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

מה תלמדו

  • יוצרים שירות אינטרנט פשוט של Apache שנחשף כשירות בעלים של PSC.
  • יוצרים נקודת קצה של PSC.
  • יוצרים אזור פרטי ב-Cloud DNS עבור קריאות השירות של הצרכן.
  • מעדכנים את כלל ההעברה שמשויך ל-Service Attachment באמצעות PSC Mutability.

מה תצטרכו

  • פרויקט בענן של Google עם הרשאות בעלים
  • ידע בסיסי ברשתות של Google Cloud

2. סביבת בדיקה

באופן מסורתי, יצרנים וצרכנים עובדים בפרויקטים שונים. לצורך פשטות, נבצע את כל הפעולות באותו פרויקט, אבל כל אחד מהשלבים יתויג בפרויקטים של Producer או Consumer, למקרה שהמשתמש יעדיף לעבוד בפרויקטים שונים.

בשיעור ה-Lab הזה, נתחיל ביצירת רשת VPC של יצרן עם שלוש תת-רשתות: אחת לאירוח שירות היצרן ומכונת הבדיקה הווירטואלית, אחת לכללי העברת התנועה של מאזן העומסים ותת-רשת NAT של PSC. כדי להוריד חבילות של Linux, נצטרך Cloud Router ו-Cloud NAT כדי להגיע לאינטרנט. נחשוף את שירות Apache שלנו, שהוגדר באמצעות קבוצת מופעים לא מנוהלת, דרך מאזן עומסים פנימי אזורי של רשתות להעברת סיגנל ללא שינוי, ונקשר את כלל ההעברה לחיבור שירות.

בצד הצרכן, ניצור את consumer-vpc עם רשת משנה אחת לאירוח נקודת קצה של PSC ומכונה וירטואלית של לקוח לבדיקה. אנחנו נגדיר אזור פרטי של Cloud DNS כדי לגשת לשירות באמצעות שם מארח.

כדי להציג את התכונה 'שינוי של PSC', בצד היצרן נוסיף שתי רשתות משנה נוספות: אחת לאירוח ה-VM של השירות החדש, ואחת לרשת המשנה של מאזן העומסים (פרוקסי בלבד). ניצור מכונה וירטואלית חדשה שמארחת שרת אינטרנט של Apache, שוב באמצעות קבוצת מופעים לא מנוהלת, ונחשוף אותה באמצעות מאזן עומסים חדש של אפליקציות (ALB) פנימי אזורי. נעדכן את קובץ ה-service attachment כך שיצביע על כלל ההעברה החדש, ונבדוק שהקישוריות בצד הצרכן נשארת במקומה.

683e2b440a0cc07f.png

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

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

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

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

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

מפעילים את Cloud Shell

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

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

הפעלת Cloud Shell

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

צילום מסך של טרמינל Google Cloud Shell שבו מוצג שהסביבה מחוברת

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את כל העבודה ב-codelab הזה בדפדפן. לא צריך להתקין שום דבר.

4. לפני שמתחילים

הפעלת ממשקי ה-API

ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export project=[YOUR-PROJECT-NAME]
export region=us-central1
export zone=$region-a
echo $project
echo $region
echo $zone

הפעלת כל השירותים הנדרשים

gcloud services enable compute.googleapis.com
gcloud services enable dns.googleapis.com

5. יצירת רשת של ספקי שירותים [פרויקט של ספק שירותים]

יצירת רשת VPC

מ-Cloud Shell

gcloud compute networks create producer-vpc \
    --subnet-mode=custom

יצירת רשתות משנה

נתחיל בפריסה של 3 רשתות משנה ב-producer-vpc. אחד ישמש לפריסת שירות הבעלים, אחד לכללי העברה של מאזן העומסים ואחד שישויך ל-Service Attachment של PSC עבור רשת המשנה של PSC NAT.

מ-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

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --range=10.100.0.0/28 \
    --region=$region \
    --purpose=PRIVATE_SERVICE_CONNECT

יצירת Cloud NAT

כדי להתקין את החבילות המתאימות לשירותי הבעלים שלנו, צריך Cloud NAT.

מ-Cloud Shell

gcloud compute routers create $region-cr \
    --network=producer-vpc \
    --region=$region

מ-Cloud Shell

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

נתחיל עם שלושה כללים לחומת האש. אחת תאפשר גישה למכונות וירטואליות לבדיקות התקינות של מאזן העומסים (2000), אחת תאפשר גישה למכונות וירטואליות מטווח ה-NAT של PSC (3000), ואחת תאפשר קישוריות בין מכונות וירטואליות ברשת המשנה של השירות למטרות בדיקה (4000). אנחנו ניצור את כל הכללים עבור יציאה 80 כי נשתמש ביציאה הזו לשירות שלנו.

מ-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 PSC NAT subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.0.0/28 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

 gcloud compute network-firewall-policies rules create 4000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access between producer service VMs and testing client for testing purposes" \
    --direction INGRESS \
    --src-ip-ranges 10.0.0.0/28 \
    --layer4-configs tcp:80 \
    --global-firewall-policy

6. יצירת שירות מנוהל [פרויקט של הבעלים של השירות]

ניצור שירות אינטרנט פשוט של Apache באמצעות קבוצת מופעים לא מנוהלת שמציגה את הטקסט I am a Producer Service.

יצירת מכונה

מ-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 producer-uig \
  --zone=$zone

מוסיפים את producer-service-vm לקבוצת המופעים הלא מנוהלת שיצרנו.

מ-Cloud Shell

gcloud compute instance-groups unmanaged add-instances producer-uig \
  --zone=$zone \
  --instances=producer-service-vm

יצירת רכיבים של מאזן עומסים

בגרסה 1 של שירות היצרן, נחשוף את השירות באמצעות מאזן עומסים להעברת סיגנל ללא שינוי ביציאה 80.

פורסים את בדיקת התקינות ליציאה 80.

מ-Cloud Shell

gcloud compute health-checks create http producer-hc \
        --region=$region

פורסים את שירות הקצה העורפי ומוסיפים את הקצה העורפי לשירות הקצה העורפי.

מ-Cloud Shell

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=producer-uig \
  --instance-group-zone=$zone

יוצרים את כתובת ה-IP הסטטית שתשמש לכלל ההעברה של מאזן העומסים.

מ-Cloud Shell

gcloud compute addresses create producer-fr-ip\
  --region $region \
  --subnet producer-fr-subnet \
  --addresses 192.168.0.2

יוצרים את כלל ההעברה של מאזן העומסים שחושף את יציאה 80, באמצעות שירות לקצה העורפי וכתובת ה-IP שיצרנו קודם.

מ-Cloud Shell

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. בדיקת השירות של הבעלים [פרויקט הבעלים]

יוצרים מכונה וירטואלית לבדיקה ברשת המשנה של שירות הבעלים, מתחברים למכונה הווירטואלית ובודקים קריאה לשירות Apache.

מ-Cloud Shell

 gcloud compute instances create producer-test-vm \
    --zone=$zone \
    --subnet=producer-service-subnet \
    --no-address

מ-Cloud Shell

gcloud compute ssh producer-test-vm \
    --zone=$zone \
    --command="curl -s 192.168.0.2/index.html"

הפלט הצפוי

I am a Producer Service.

8. חשיפת שירות ההפקה דרך צירוף שירות [פרויקט ההפקה]

יוצרים את קובץ השירות המצורף. משייכים אותו לכלל ההעברה שיצרנו באמצעות psc-nat-subnet.

מ-Cloud Shell

gcloud compute service-attachments create producer-attachment \
    --region=$region \
    --producer-forwarding-rule=producer-fr  \
    --connection-preference=ACCEPT_AUTOMATIC \
    --nat-subnets=psc-nat-subnet

חשוב לרשום את ה-URI של Service Attachment ‏ (selfLink), כי תצטרכו אותו בשלב הבא בהגדרת נקודת הקצה של PSC. אפשר לקבל אותו על ידי הפעלת הפקודה הבאה ב-Cloud Shell.

מ-Cloud Shell

gcloud compute service-attachments describe producer-attachment --region=$region

פלט לדוגמה

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2026-02-10T07:50:04.250-08:00'
description: ''
enableProxyProtocol: false
fingerprint: xxx
id: 'xxx'
kind: compute#serviceAttachment
name: producer-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/psc-nat-subnet
pscServiceAttachmentId:
  high: 'xxx'
  low: 'xxx'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/producer-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr

מעתיקים את ה-URI החל מ-projects

דוגמה: projects/$project/regions/$region/serviceAttachments/producer-attachment

9. בניית רשת צרכנים [פרויקט צרכנים]

יצירת רשת VPC

מ-Cloud Shell

gcloud compute networks create consumer-vpc \
    --subnet-mode=custom

יצירת רשת משנה

תופעל רשת משנה אחת שבה נפרוס את נקודת הקצה של PSC ואת המכונה הווירטואלית של לקוח הבדיקה.

מ-Cloud Shell

gcloud compute networks subnets create consumer-subnet \
    --network=consumer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

יצירת מדיניות וכללים לחומת אש ברשת

מ-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

בנוסף, נגדיר את consumer-vpc כך שישתמש ב-IAP ל-SSH.

מ-Cloud Shell

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

10. יצירת נקודת קצה של Private Service Connect [פרויקט צרכן]

שומרים את כתובת ה-IP הסטטית שתשמש לנקודת הקצה של PSC.

מ-Cloud Shell

gcloud compute addresses create psc-endpoint-ip \
    --region=$region \
    --subnet=consumer-subnet \
    --addresses 10.0.0.2

יוצרים את נקודת הקצה (endpoint) של PSC באמצעות כתובת ה-IP הסטטית השמורה וכתובת ה-URI של קובץ השירות שציינו קודם.

מ-Cloud Shell

gcloud compute forwarding-rules create psc-endpoint \
  --region=$region \
  --network=consumer-vpc \
  --address=psc-endpoint-ip \
  --target-service-attachment=projects/$project/regions/$region/serviceAttachments/producer-attachment

11. הגדרת תחום DNS פרטי לנקודת הקצה של PSC [פרויקט הצרכן]

באמצעות Cloud DNS, נגדיר תחום DNS פרטי עם שם ה-DNS myservice.com, לשימוש עם נקודת הקצה (endpoint) של PSC.

מ-Cloud Shell

gcloud dns managed-zones create "consumer-service" \
    --dns-name=myservice.com \
    --description="consumer service dns" \
    --visibility=private \
    --networks=consumer-vpc

gcloud dns record-sets transaction start \
   --zone="consumer-service"

יוצרים רשומת A בשביל myservice.com ומפנים אותה לכתובת ה-IP של נקודת הקצה של PSC.

מ-Cloud Shell

gcloud dns record-sets transaction add 10.0.0.2 \
   --name=myservice.com \
   --ttl=300 \
   --type=A \
   --zone="consumer-service"

gcloud dns record-sets transaction execute \
   --zone="consumer-service"

12. בדיקת נקודת הקצה של PSC [פרויקט צרכן]

יצירת מכונה וירטואלית של לקוח

מ-Cloud Shell

gcloud compute instances create consumer-client-vm \
    --zone=$zone \
    --subnet=consumer-subnet \
    --no-address

בדיקת הקישוריות של נקודת קצה של PSC

מ-Cloud Shell

gcloud compute ssh consumer-client-vm \
    --zone=$zone \
    --command="curl -s myservice.com/index.html"

הפלט הצפוי

I am a Producer Service.

בחלק הבא של ה-codelab, ניצור את שירות היצרן החדש ונעבור אליו. נציג את התכונה 'שינוי' של PSC, שמאפשרת את העדכון החלק הזה בלי לדרוש עדכונים בהגדרות בצד הצרכן.

13. יצירת שירות מנוהל מעודכן [פרויקט של ספק שירות]

כדי לעדכן את שירות היצרן, נפרוס מכונה וירטואלית חדשה שמריצה שרת אינטרנט דומה של Apache עם ההודעה 'I am a NEW Producer service'. אנחנו נוסיף את ה-VM הזה לקבוצת מכונות חדשה לא מנוהלת, ונשתמש בקבוצת המכונות הלא מנוהלת הזו כקצה עורפי למאזן העומסים החדש שלנו. במקום להשתמש במאזן עומסים להעברת סיגנל ללא שינוי ברשת, נעדכן את מאזן העומסים למאזן עומסים פנימי אזורי של אפליקציות (ALB).

עדכון הרשת

יוצרים רשת משנה חדשה שתשמש כרשת משנה של פרוקסי בלבד עבור מאזן העומסים של האפליקציה.

מ-Cloud Shell

gcloud compute networks subnets create lb-proxy-subnet \
    --network=producer-vpc \
    --range=10.200.0.0/24 \
    --region=$region \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE

יוצרים רשת משנה חדשה שבה השירות החדש יתארח.

מ-Cloud Shell

gcloud compute networks subnets create producer-service-new-subnet \
    --network=producer-vpc \
    --range=10.0.1.0/28 \
    --region=$region

יוצרים כלל חומת אש חדש שיאפשר קישוריות לשירות ה-producer החדש שלנו מתת-הרשת של שרת ה-Proxy בלבד.

מ-Cloud Shell

 gcloud compute network-firewall-policies rules create 3001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access from proxy only subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.200.0.0/24 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

יצירת מכונה

מ-Cloud Shell

gcloud compute instances create new-producer-service-vm \
    --network producer-vpc \
    --subnet producer-service-new-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 NEW Producer Service." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

יצירת קבוצת מופעים לא מנוהלת

מ-Cloud Shell

gcloud compute instance-groups unmanaged create producer-new-uig \
  --zone=$zone

gcloud compute instance-groups unmanaged add-instances producer-new-uig \
  --zone=$zone \
  --instances=new-producer-service-vm

gcloud compute instance-groups unmanaged set-named-ports producer-new-uig \
    --named-ports=http:80 \
    --zone=$zone

יצירה של רכיבים חדשים של מאזן עומסים

יוצרים את שירות הקצה העורפי. שימו לב שאנחנו משתמשים בסכימת איזון העומסים INTERNAL_MANAGED כי אנחנו מעדכנים למאזן עומסים של אפליקציות פנימי.

מ-Cloud Shell

gcloud compute backend-services create producer-new-bes \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=http \
  --region=$region \
  --health-checks=producer-hc \
  --health-checks-region=$region

מוסיפים את קבוצת המכונות הלא מנוהלת בתור קצה עורפי לשירות הקצה העורפי.

מ-Cloud Shell

gcloud compute backend-services add-backend producer-new-bes \
  --region=$region \
  --instance-group=producer-new-uig \
  --instance-group-zone=$zone

יוצרים את מיפוי כתובות ה-URL ואת שרתי ה-proxy של HTTP.

מ-Cloud Shell

gcloud compute url-maps create producer-url-map \
  --default-service=producer-new-bes \
  --region=$region

gcloud compute target-http-proxies create http-proxy \
  --url-map=producer-url-map \
  --region=$region

יוצרים את כתובת ה-IP הסטטית שבה נשתמש בכלל ההעברה. ההודעה תגיע מאותה רשת משנה שבה השתמשנו לכלל ההעברה המקורי.

מ-Cloud Shell

gcloud compute addresses create producer-fr-new-ip\
  --region $region \
  --subnet producer-fr-subnet \
  --addresses 192.168.0.3

יוצרים את כלל ההעברה.

מ-Cloud Shell

gcloud compute forwarding-rules create new-producer-fr \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=producer-vpc \
  --subnet=producer-fr-subnet \
  --address=producer-fr-new-ip \
  --ports=80 \
  --region=$region \
  --target-http-proxy=http-proxy \
  --target-http-proxy-region=$region

14. בדיקת שירות הייצור המעודכן [פרויקט הייצור]

נשתמש באותה מכונה וירטואלית לבדיקה שיצרנו כדי לבדוק את השירות שפרסנו במקור.

מ-Cloud Shell

gcloud compute ssh producer-test-vm \
    --zone=$zone \
    --command="curl -s 192.168.0.3/index.html"

שימו לב שאנחנו מתקשרים מכתובת IP מעודכנת. ‫192.168.0.3 היא כתובת ה-IP של מאזן העומסים הפנימי האזורי של האפליקציה.

הפלט הצפוי

I am a NEW Producer Service.

15. עדכון קובץ מצורף של שירות [פרויקט של ספק שירות]

כדי להמחיש את העדכון של כלל ההעברה של Service Attachment, אפשר להריץ תיאור של Service Attachment לפני השינוי ואחריו.

מ-Cloud Shell

gcloud compute service-attachments describe producer-attachment \
    --region=$region \
    --format="value(targetService)"

הפלט הצפוי

https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr

מעדכנים את קובץ השירות.

מ-Cloud Shell

gcloud compute service-attachments update producer-attachment \
  --region=$region \
  --target-service=projects/$project/regions/$region/forwardingRules/new-producer-fr

עכשיו מריצים שוב את הפקודה describe כדי לראות את כלל ההעברה החדש.

מ-Cloud Shell

gcloud compute service-attachments describe producer-attachment \
    --region=$region \
    --format="value(targetService)"

הפלט הצפוי

https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/new-producer-fr

16. בדיקה מחדש של החיבור ל-PSC של הצרכן [פרויקט הצרכן]

מתחברים לאותו לקוח צרכן.

מ-Cloud Shell

gcloud compute ssh consumer-client-vm \
    --zone=$zone \
    --command="curl -s myservice.com/index.html"

הפלט הצפוי

 I am a NEW Producer Service.

מעולה! עדכנתם בהצלחה מאזן עומסים של שירות יצרן ב-PSC, ולא היה צורך לבצע שינויים בהגדרות בצד הצרכן.

17. שלבי ניקוי [פרויקט לצרכנים]

מחיקת רכיבי מעבדה ממסוף Cloud Shell יחיד

gcloud dns record-sets delete myservice.com --zone="consumer-service" --type=A -q

gcloud dns managed-zones delete "consumer-service" -q

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-vm --zone=$zone --project $project -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-subnet --region $region -q

gcloud compute networks delete consumer-vpc -q

18. שלבי הניקוי [פרויקט של יוצר תוכן]

מחיקת רכיבי מעבדה ממסוף Cloud Shell יחיד

gcloud compute service-attachments delete producer-attachment --region=$region -q

gcloud compute instances delete producer-test-vm --zone=$zone --project $project -q

gcloud compute forwarding-rules delete new-producer-fr --region=$region -q

gcloud compute addresses delete producer-fr-new-ip --region $region -q

gcloud compute target-http-proxies delete http-proxy --region $region -q

gcloud compute url-maps delete producer-url-map --region $region -q

gcloud compute backend-services delete producer-new-bes --region $region -q

gcloud compute instance-groups unmanaged delete producer-new-uig --zone $zone -q

gcloud compute instances delete new-producer-service-vm --zone $zone --project $project -q

gcloud compute networks subnets delete producer-service-new-subnet --region $region -q

gcloud compute networks subnets delete lb-proxy-subnet --region $region -q

gcloud compute forwarding-rules delete producer-fr --region=$region -q

gcloud compute addresses delete producer-fr-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 producer-uig --zone $zone -q

gcloud compute instances delete producer-service-vm --zone $zone --project $project -q

gcloud compute network-firewall-policies rules delete 4000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 3001 --firewall-policy producer-vpc-policy --global-firewall-policy -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 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-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.

מה נכלל

  • יוצרים שירות אינטרנט פשוט של Apache שנחשף כשירות בעלים של PSC.
  • יוצרים נקודת קצה של PSC.
  • יוצרים אזור פרטי ב-Cloud DNS עבור קריאות השירות של הצרכן.
  • מעדכנים את כלל ההעברה שמשויך ל-Service Attachment באמצעות PSC Mutability.