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

1. מבוא

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

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

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

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

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

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

מה תלמדו

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

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

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

683e2b440a0cc07f.png

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

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

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

295004821bab6a87.png37d264871000675d.png96d86d3d5655cdbe.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. Build Producer Network [Producer Project]

יצירת רשת VPC

מ-Cloud Shell

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

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

נתחיל בפריסה של 3 רשתות משנה ב-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.
  • מאפשר תעבורת נתונים נכנסת (ingress) מטווח כתובות ה-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 של שירות היצרן, נחשוף את השירות באמצעות מאזן עומסים מסוג Network Passthrough ביציאה 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 ואת מכונת ה-VM של לקוח הבדיקה.

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

יוצרים את נקודת הקצה של 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

יוצרים כלל חומת אש חדש שיאפשר קישוריות לשירות החדש שלנו ליצירת נתונים מתת-הרשת של שרת ה-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 של מאזן העומסים של אפליקציות (ALB) הפנימי האזורי שלנו.

הפלט הצפוי

I am a NEW Producer Service.

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

כדי להבין טוב יותר את העדכון של כלל ההעברה של קובץ מצורף לשירות, אפשר להריץ 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/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.