1. מבוא
Private Service Connect מאפשר לספקי שירותים לחשוף שירותים באופן פרטי מרשת VPC אחת לרשת VPC אחרת. צרכנים יכולים לגשת לשירותים של בעלי השירות באמצעות נקודות קצה של PSC או עורפי PSC.
ה-Codelab הזה מתמקד ב-PSC Backends. קצה עורפי מסוג PSC משמש בשילוב עם מאזני עומסים של שרת proxy ב-Google Cloud (מאזן עומסים של אפליקציות או של רשת). שימוש ב-PSC Backends מספק אמצעי בקרה מפורטים יותר בצד הלקוח, כמו:
- ניראות ורישום ביומן מעמיקים יותר
- שילוב עם Cloud Armor
- כתובות URL מותאמות אישית
- ניהול מתקדם של תעבורת נתונים
- אישורי TLS בהתאמה אישית
ב-Codelab זה תלמדו איך ליצור בק-אנד מסוג Private Service Connect באמצעות מאזן העומסים החיצוני הגלובלי של אפליקציות, כדי לגשת באופן פרטי לשירות Production ברשת אחרת.
מה תלמדו
- יצירה והגדרה של קצה עורפי מסוג PSC שמשויך למאזן עומסים גלובלי חיצוני של אפליקציות
- הגדרת שירות אינטרנט מנוהל של Apache וחשיפתו כשירות PSC באמצעות Service Attachment
- יצירת אישורי SSL לסיום SSL במאזני עומסים פנימיים וחיצוניים של אפליקציות
- הגדרת אזור ציבורי של Cloud DNS לגישה לשירות PSC
מה תצטרכו
- פרויקט בענן של Google עם הרשאות בעלים
2. סביבת בדיקה
הסביבה שתיווצר תכלול VPC צרכני ו-VPC יצרני. ב-VPC של הספק, תפרסו קבוצת מופעי מכונה מנוהלים מתבנית של הגדרות מכונה שיוצרת שירות אינטרנט של Apache בקוד פתוח. תפרסו גם מכונה וירטואלית לבדיקה כדי לוודא שהפונקציונליות המקומית של השירות תקינה. תחשפו את שירות Apache כשירות PSC Producer באמצעות Service Attachment.
ברשת ה-VPC של הצרכן, תפרסו מאזן עומסים חיצוני גלובלי של אפליקציות (ALB) עם שירות לקצה העורפי של PSC שמפנה לשירות Apache. לאחר מכן תגדירו תחום DNS ציבורי כדי לגשת לשירות PSC באינטרנט הציבורי.

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



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

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

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את כל העבודה ב-codelab הזה בדפדפן. לא צריך להתקין שום דבר.
4. לפני שמתחילים
הפעלת ממשקי ה-API
ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export project=YOUR-PROJECT-NAME export region=us-central1 echo $project echo $region
הפעלת כל השירותים הנדרשים
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
5. הגדרה של VPC של Producer
יצירת רשת VPC
מ-Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
יצירת רשתות משנה
שתי תת-רשתות לשימוש כללי ייפרסו ב-producer-vpc. רשת המשנה של השירות תשמש לפריסת המכונות הווירטואליות של שירות האינטרנט של Apache, וגם לכלל העברת התנועה של מאזן העומסים. רשת המשנה של לקוח הבדיקה תהיה באזור אחר ותשמש לפריסת מכונה וירטואלית כדי לבדוק את שירות Apache עם גישה גלובלית מופעלת.
מ-Cloud Shell
gcloud compute networks subnets create service-subnet \
--network=producer-vpc \
--range=10.0.0.0/28 \
--region=$region
מ-Cloud Shell
gcloud compute networks subnets create test-client-subnet \
--network=producer-vpc \
--range=10.0.1.0/28 \
--region=us-east4
בנוסף, צריך לפרוס רשת משנה של שרת proxy בלבד לשימוש עם מאזן עומסים פנימי אזורי של אפליקציות (ALB).
מ-Cloud Shell
gcloud compute networks subnets create central-proxy-subnet \
--network=producer-vpc \
--range=10.100.101.0/24 \
--region=$region \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE
כשפורסים שירות PSC, כל שירות ייחודי צריך להיות משויך לתת-רשת NAT של PSC תואמת לחיבור השירות. גודל רשת המשנה צריך להיות מתאים למספר נקודות הקצה שמצפים שיתחברו.
מ-Cloud Shell
gcloud compute networks subnets create psc-nat-subnet \
--network=producer-vpc \
--region=$region \
--range=10.100.100.0/24 \
--purpose=PRIVATE_SERVICE_CONNECT
יצירת Cloud NAT
כדי להתקין את החבילות המתאימות לשירותי הבעלים שלנו, צריך Cloud NAT.
מ-Cloud Shell
gcloud compute routers create central-cr \
--network=producer-vpc \
--region=$region
מ-Cloud Shell
gcloud compute routers nats create central-nat \
--router=central-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
יהיה צורך בשני כללי חומת אש נוספים כדי לאפשר תעבורת נתונים נכנסת לשרתים העורפיים של מאזן העומסים שמגיעה מתת-הרשת של שרת ה-proxy של מאזן העומסים בלבד (2000), וגם בכלל שיאפשר בדיקות תקינות של מאזן העומסים בשרתים העורפיים (2001).
מ-Cloud Shell
gcloud compute network-firewall-policies rules create 2000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow traffic from load balancer proxy subnet" \
--direction INGRESS \
--src-ip-ranges 10.100.101.0/24 \
--layer4-configs tcp:443 \
--global-firewall-policy
gcloud compute network-firewall-policies rules create 2001 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow load balancer health checks" \
--direction INGRESS \
--src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
--layer4-configs tcp:443 \
--global-firewall-policy
6. יצירת שירות אינטרנט של Apache
ניצור שירות אינטרנט פשוט של Apache שמציג את ההודעה 'שירות PSC'.
יצירת תבנית מכונה
מ-Cloud Shell
gcloud compute instance-templates create apache-service-template \
--network producer-vpc \
--subnet service-subnet \
--region $region \
--no-address \
--metadata startup-script='#! /bin/bash
sudo apt-get update
apt-get install apache2 -y
a2enmod ssl
sudo a2ensite default-ssl
echo "PSC Service" | \
tee /var/www/html/index.html
systemctl restart apache2'
יצירת בדיקת תקינות לקבוצת מופעי מכונה מנוהלים (MIG)
מ-Cloud Shell
gcloud compute health-checks create https service-mig-healthcheck \
--port=443 \
--global
יצירת קבוצת מופעי מכונה מנוהלים
מ-Cloud Shell
gcloud compute instance-groups managed create psc-service-mig \
--region $region \
--size=2 \
--template=apache-service-template \
--health-check=service-mig-healthcheck
gcloud compute instance-groups managed set-named-ports psc-service-mig \
--named-ports=https:443 \
--region=$region
7. יצירת אישור בחתימה עצמית
כדי ליצור אישור עם חתימה עצמית, צריך להשלים את שלב 1 בהוראות שמופיעות כאן. אפשר להריץ את כל הפקודות ב-Cloud Shell. אחרי שמסיימים את שלב 1, חוזרים לכאן. השם הנפוץ שלכם צריך להיות מוגדר עם EXAMPLE.COM.
יוצרים משאב אישור לשיוך למאזן העומסים. מחליפים את הפרמטרים של האישור והמפתח הפרטי בשמות הקבצים הספציפיים שלכם.
מ-Cloud Shell
gcloud compute ssl-certificates create producer-service-cert \
--certificate=<your-producer-certfile.cert> \
--private-key=<your-producer-keyfile.pem> \
--region=$region
8. יצירת מאזן עומסים פנימי אזורי של אפליקציות (ALB)
בשלב הבא ניצור את רכיבי מאזן העומסים בשביל השירות. אנחנו משתמשים במאזן עומסים פנימי אזורי של אפליקציות (ALB), אבל אתם יכולים להשתמש בכל מאזן עומסים פנימי של Google Cloud. פועלים לפי התיעוד המתאים של מאזן העומסים לטיפול ב-TLS.
יוצרים את כתובת ה-IP הפנימית שתשמש לכלל ההעברה של מאזן העומסים, ורושמים את כתובת ה-IP כדי להשתמש בה בהמשך כשמבצעים שיחת בדיקה לשירות.
מ-Cloud Shell
gcloud compute addresses create apache-service-ip \ --region=$region \ --subnet=service-subnet gcloud compute addresses describe apache-service-ip \ --format="get(address)" \ --region=$region
יוצרים את בדיקת התקינות של מאזן העומסים.
מ-Cloud Shell
gcloud compute health-checks create https lb-apache-service-hc \
--region=$region \
--port-name=https
יוצרים את שירות הקצה העורפי.
מ-Cloud Shell
gcloud compute backend-services create apache-bes\ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --port-name=https \ --health-checks=lb-apache-service-hc \ --health-checks-region=$region \ --region=$region gcloud compute backend-services add-backend apache-bes \ --balancing-mode=UTILIZATION \ --instance-group=psc-service-mig \ --region=$region
יוצרים את מיפוי כתובות ה-URL.
מ-Cloud Shell
gcloud compute url-maps create producer-url-map \ --default-service=apache-bes \ --region=$region
יוצרים את שרתי ה-proxy של HTTPS ביעד.
מ-Cloud Shell
gcloud compute target-https-proxies create https-proxy \ --url-map=producer-url-map \ --region=$region \ --ssl-certificates=producer-service-cert
יוצרים את כלל ההעברה.
מ-Cloud Shell
gcloud compute forwarding-rules create apache-fr \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=producer-vpc \ --subnet=service-subnet \ --address=apache-service-ip \ --ports=443 \ --region=$region \ --target-https-proxy=https-proxy \ --target-https-proxy-region=$region \ --allow-global-access
9. יצירת מכונה וירטואלית לבדיקה ובדיקת השירות באופן מקומי
לפני שיוצרים את Service Attachment, יוצרים מכונת VM של לקוח לבדיקה באזור אחר כדי לבדוק שמאזן העומסים מוגדר בצורה נכונה עם גישה גלובלית ו-TLS.
מ-Cloud Shell
gcloud compute instances create vm-client \
--zone=us-east4-a \
--subnet=test-client-subnet \
--no-address
ממתינים כדקה עד לסיום הקצאת ההרשאות ואז מתחברים למופע באמצעות SSH.
מ-Cloud Shell
gcloud compute ssh \
--zone "us-east4-a" "vm-client" \
--tunnel-through-iap \
--project $project
בודקים את שירות Apache על ידי התחברות דרך מאזן העומסים בפורט 443. כתובת ה-IP הפנימית היא הכתובת ששמרתם ורשמתם קודם.
curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443
התוצאה הצפויה
PSC Service
יוצאים מה-VM.
מ-vm-client
exit
10. יצירת צירוף שירות
בדוגמה הזו, אנחנו מגדירים את Service Attachment כך שיאפשר רק חיבורי PSC מהפרויקט הזה. אפשר להגדיר את זה כך שיתקבלו פרויקט או רשת ספציפיים, אבל לא שניהם. הגדרנו את מגבלת החיבורים המקסימלית ל-5 חיבורים. צריך להגדיר מגבלה לכל פרויקט או רשת.
מ-Cloud Shell
gcloud compute service-attachments create apache-service-attachment \
--region=$region \
--producer-forwarding-rule=apache-fr \
--connection-preference=ACCEPT_MANUAL \
--consumer-accept-list=$project=5 \
--nat-subnets=psc-nat-subnet
חשוב לרשום את מזהה ה-URI של קובץ ה-Service Attachment (selfLink), כי תצטרכו אותו בשלב הבא להגדרת ה-Backend של PSC. אפשר לקבל אותו על ידי הפעלת הפקודה הבאה ב-Cloud Shell.
מ-Cloud Shell
gcloud compute service-attachments describe apache-service-attachment \
--region $region
מעתיקים את ה-URI החל מ-projects
דוגמה: projects/$project/regions/$region/serviceAttachments/apache-service-attachment
11. הגדרה של VPC לצרכנים
יצירת רשת VPC
מ-Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
יצירת רשת משנה
צריך רשת משנה בצד הצרכן, שבה תתבצע הפריסה של קבוצת נקודות הקצה ברשת (NEG) מסוג Private Service Connect.
מ-Cloud Shell
gcloud compute networks subnets create consumer-subnet \
--network=consumer-vpc \
--region=$region \
--range=10.0.0.0/28
12. שמירת כתובת IP חיצונית ויצירת אישור בחתימה עצמית בצד הצרכן
כתובת IP חיצונית
יוצרים את כתובת ה-IP החיצונית הסטטית שתשמש בהמשך לכלל ההעברה של מאזן העומסים, ושומרים את כתובת ה-IP במשתנה Cloud Shell.
מ-Cloud Shell
gcloud compute addresses create external-psc-ip \
--network-tier=PREMIUM \
--ip-version=IPV4 \
--global
export externalip=$(gcloud compute addresses describe external-psc-ip \
--format="get(address)" \
--global)
echo $externalip
תעודה בחתימה עצמית לצרכן
בפעם השנייה, משלימים את שלב 1 בהוראות שכאן כדי ליצור אישור עם חתימה עצמית. אפשר להריץ את כל הפקודות ב-Cloud Shell. אחרי שמסיימים את שלב 1, חוזרים לכאן. אנחנו נשתמש בשירות DNS ציבורי של תו כללי בקוד פתוח שנקרא nip.io במקום להשתמש בתחום DNS ציבורי משלנו. כתובת ה-URL הציבורית של שירות ה-PSC תשתמש בכתובת ה-IP החיצונית שהגדרתם. השם הנפוץ צריך להיות מוגדר עם <YOUR-EXTERNAL-IP.nip.io>
יוצרים משאב אישור לשיוך למאזן העומסים החיצוני. מחליפים את הפרמטרים של האישור והמפתח הפרטי בשמות הקבצים הספציפיים שלכם.
מ-Cloud Shell
gcloud compute ssl-certificates create consumer-service-cert \
--certificate=<your-consumer-certfile.cert> \
--private-key=<your-consumer-keyfile.pem> \
--global
13. יצירת רכיבי מאזן העומסים
ניצור מאזן עומסים גלובלי חיצוני של אפליקציות עם PSC NEG שמפנה ל-Service Attachment שיצרנו כ-Backend Service.
חשוב שיהיה לכם בהישג יד את ה-URI של קובץ השירות שציינו בשלב הקודם. מחליפים את psc-target-service שבהמשך ב-URI שלכם.
מ-Cloud Shell
gcloud compute network-endpoint-groups create apache-psc-neg \ --network-endpoint-type=private-service-connect \ --psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \ --region=$region \ --network=consumer-vpc \ --subnet=consumer-subnet
יוצרים את שירות הקצה העורפי.
מ-Cloud Shell
gcloud compute backend-services create apache-pscneg-bes \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTPS \
--global
gcloud compute backend-services add-backend apache-pscneg-bes \
--network-endpoint-group=apache-psc-neg \
--network-endpoint-group-region=$region \
--global
יצירת מיפוי כתובות URL
מ-Cloud Shell
gcloud compute url-maps create consumer-url-map \
--default-service=apache-pscneg-bes \
--global
יוצרים את שרתי ה-proxy של HTTPS ביעד.
מ-Cloud Shell
gcloud compute target-https-proxies create psc-https-proxy \
--url-map=consumer-url-map \
--ssl-certificates=consumer-service-cert
יצירת כלל העברה
מ-Cloud Shell
gcloud compute forwarding-rules create external-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=external-psc-ip \ --global \ --target-https-proxy=psc-https-proxy \ --ports=443
14. יצירת תחום DNS ציבורי
מ-Cloud Shell
gcloud dns managed-zones create "psc-service" \
--dns-name=$externalip.nip.io. \
--description="public dns for psc service" \
--visibility=public
מ-Cloud Shell
gcloud dns record-sets transaction start \ --zone="psc-service" gcloud dns record-sets transaction add $externalip \ --name=$externalip.nip.io \ --ttl=300 \ --type=A \ --zone="psc-service" gcloud dns record-sets transaction execute \ --zone="psc-service"
15. בדיקת החיבור ל-Consumer PSC
כדאי להמתין 7 עד 10 דקות לפני הבדיקה כדי לאפשר הפצה של ה-DNS הציבורי.
מ-Cloud Shell
curl https://$externalip.nip.io -k
אפשר גם לבדוק מהדפדפן על ידי הזנת https://<YOUR-EXTERNAL-IP>.nip.io בדפדפן או במסוף של המחשב.
התוצאה הצפויה
PSC Service
16. שלבי הניקוי
מחיקת רכיבי מעבדה ממסוף Cloud Shell יחיד
gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q gcloud dns managed-zones delete "psc-service" -q gcloud compute forwarding-rules delete external-fr --global -q gcloud compute target-https-proxies delete psc-https-proxy -q gcloud compute url-maps delete consumer-url-map --global -q gcloud compute backend-services delete apache-pscneg-bes --global -q gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q gcloud compute ssl-certificates delete consumer-service-cert --global -q gcloud compute addresses delete external-psc-ip --global -q gcloud compute networks subnets delete consumer-subnet --region $region -q gcloud compute networks delete consumer-vpc -q gcloud compute instances delete vm-client --zone=us-east4-a -q gcloud compute service-attachments delete apache-service-attachment --region $region -q gcloud compute forwarding-rules delete apache-fr --region $region -q gcloud compute target-https-proxies delete https-proxy --region $region -q gcloud compute url-maps delete producer-url-map --region $region -q gcloud compute backend-services delete apache-bes --region $region -q gcloud compute health-checks delete lb-apache-service-hc --region $region -q gcloud compute addresses delete apache-service-ip --region $region -q gcloud compute ssl-certificates delete producer-service-cert --region $region -q gcloud compute instance-groups managed delete psc-service-mig --region $region -q gcloud compute health-checks delete service-mig-healthcheck --global -q gcloud compute instance-templates delete apache-service-template -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 central-nat --router=central-cr --region $region -q gcloud compute routers delete central-cr --region $region -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete service-subnet --region $region -q gcloud compute networks subnets delete test-client-subnet --region us-east4 -q gcloud compute networks subnets delete central-proxy-subnet --region $region -q gcloud compute networks delete producer-vpc -q
17. מעולה!
כל הכבוד, סיימתם את ה-Codelab.
מה נכלל
- יצירה והגדרה של קצה עורפי מסוג PSC שמשויך למאזן עומסים גלובלי חיצוני של אפליקציות (ALB)
- הגדרת שירות אינטרנט מנוהל של Apache וחשיפתו כשירות PSC באמצעות Service Attachment
- יצירת אישורי SSL לסיום SSL במאזני עומסים פנימיים וחיצוניים של אפליקציות
- הגדרת תחום ציבורי של Cloud DNS כדי לגשת לשירות PSC