1. מבוא
סקירה כללית
בשיעור ה-Lab הזה, המשתמשים ילמדו איך הצומת של Network Connectivity Center מפיץ נקודת קצה של Private Service Connect לצירי VPC.
משאב הצומת מספק מודל מרכזי לניהול קישוריות כדי לחבר את התנועה של צירי ה-VPC לנקודות הקצה של PSC.
מה תפַתחו
ב-Codelab הזה תפתחו רשת NCC שתפיץ נקודת קצה (endpoint) של חיבור פרטי לשירות למכונה של Cloud SQL.
מה תלמדו
- שימוש ב-Private Service Connect כדי להתחבר למכונה של Cloud SQL
- שימוש ב-NCC hub כדי להפיץ את תת-הרשת של PSC לכל ה-spokes של VPC, כדי לאפשר קישוריות לרשת מכמה רשתות VPC.
מה נדרש
- ידע ב-GCP Cloud Networking
- ידע בסיסי ב-Cloud SQL
- פרויקט ב-Google Cloud
- בודקים את Quota:Networks ומבקשים רשתות נוספות אם יש צורך. צילום המסך מופיע בהמשך:
מטרות
- הגדרת הסביבה ב-GCP
- הגדרת מכונה של Cloud SQL ל-MySQL באמצעות Private Service Connect
- הגדרת Hub של Network Connectivity Center להפצה של נקודות קצה מסוג PSC
- הגדרת Network Connectivity Center עם VPC כ-spoke
- אימות של נתיב הנתונים
- לעיון בתכונות השירותיות של NCC
- פינוי משאבים
לפני שמתחילים
מסוף Google Cloud ו-Cloud Shell
במהלך הסדנה הזו נשתמש במסוף Google Cloud וב-Cloud Shell כדי ליצור אינטראקציה עם GCP.
מסוף Google Cloud של פרויקט NCC Hub
אפשר להגיע אל Cloud Console בכתובת https://console.cloud.google.com.
כדי שיהיה קל יותר להגדיר את Network Connectivity Center, צריך להגדיר את הפריטים הבאים ב-Google Cloud:
במסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים פרויקט קיים או יוצרים פרויקט חדש ב-Google Cloud.
מפעילים את Cloud Shell. ב-Codelab הזה נעשה שימוש במשתני $כדי לעזור בהטמעת הגדרות gcloud ב-Cloud Shell.
gcloud auth list
gcloud config list project
gcloud config set project $project
project=[YOUR-PROJECT-NAME]
echo $project
תפקידי IAM
כדי לגשת לממשקי API ספציפיים, צריך תפקידים ב-IAM ב-NCC. חשוב להגדיר את המשתמש עם תפקידי ה-IAM של NCC לפי הצורך.
תפקיד/תיאור | הרשאות |
networkconnectivity.networkAdmin – לאפשר למנהלי רשתות לנהל Hub ודיבור. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager – מאפשרת להוסיף צירים לרכז ולנהל אותם. לשימוש ב-VPC משותף, שבו לפרויקט המארח יש בעלות על הצומת, אבל אדמינים אחרים בפרויקטים אחרים יכולים להוסיף צמתים משניים לחיבורים שלהם לצומת. | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer – לאפשר למשתמשי רשת להציג מאפיינים שונים של Hub ודיבורים. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. הגדרה של סביבת הרשת
סקירה כללית
בקטע הזה, נעביר את שתי רשתות ה-VPC וכללי חומת האש לפרויקט אחד. בתרשים הלוגי מוצגת סביבת הרשת שתתבצע לה הגדרה בשלב הזה.
יצירת VPC1 ותת-רשת
רשת ה-VPC מכילה רשתות משנה שבהן תתקינו מכונה וירטואלית של GCE לאימות נתיב הנתונים
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="subnet1"
vpc_spoke_subnet_ip_range="10.0.1.0/24"
region="us-central1"
zone="us-central1-a"
gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom \
gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
יצירת תת-רשת PSC ב-VPC
משתמשים בפקודה הבאה כדי ליצור תת-רשת ב-VPC spoke שתוקצה ל-PSC-EP.
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
vpc_spoke_subnet_ip_range="192.168.0.0/24"
gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
יצירת VPC3 ותת-רשת
vpc_spoke_network_name="vpc3-spoke"
vpc_spoke_subnet_name="subnet3"
vpc_spoke_subnet_ip_range="10.0.3.0/24"
region="us-central1"
zone="us-central1-a"
gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom \
gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
הגדרת כללי חומת האש של VPC1
הכללים האלה יאפשרו קישוריות לרשת מטווחים של RFC1918 ומשרתי proxy של גישה לזהויות (IAP)
vpc_spoke_network_name="vpc1-spoke"
gcloud compute firewall-rules create vpc1-allow-all \
--network="${vpc_spoke_network_name}" \
--allow=all \
--source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
gcloud compute firewall-rules create vpc1-allow-iap \
--network="${vpc_spoke_network_name}" \
--allow all \
--source-ranges 35.235.240.0/20
הגדרת כללי ניתוב VPC וכללי חומת אש של VPC
vpc_spoke_network_name="vpc3-spoke"
gcloud compute firewall-rules create vpc3-allow-all \
--network="${vpc_spoke_network_name}" \
--allow=all \
--source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
gcloud compute firewall-rules create vpc3-allow-iap \
--network="${vpc_spoke_network_name}" \
--allow all \
--source-ranges 35.235.240.0/20
הגדרת מכונה וירטואלית של GCE ב-VPC1
כדי להתקין חבילות, תצטרכו גישה זמנית לאינטרנט, לכן צריך להגדיר למכונה להשתמש בכתובת IP חיצונית.
vm_vpc1_spoke_name="csql-vpc1-vm"
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="subnet1"
region="us-central1"
zone="us-central1-a"
gcloud compute instances create "${vm_vpc1_spoke_name}" \
--machine-type="e2-medium" \
--subnet="${vpc_spoke_subnet_name}" \
--zone="${zone}" \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
sudo apt-get update
sudo apt-get install -y default-mysql-client'
הגדרת מכונה וירטואלית של GCE ב-VPC3
כדי להתקין חבילות צריך גישה זמנית לאינטרנט. לכן צריך להגדיר שהמכונה תשתמש בכתובת IP חיצונית.
vm_vpc_spoke_name="csql-vpc3-vm"
vpc_spoke_network_name="vpc3-spoke"
vpc_spoke_subnet_name="subnet3"
region="us-central1"
zone="us-central1-a"
gcloud compute instances create "${vm_vpc_spoke_name}" \
--machine-type="e2-medium" \
--subnet="${vpc_spoke_subnet_name}" \
--zone="${zone}" \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
sudo apt-get update
sudo apt-get install -y default-mysql-client'
3. יצירת המכונה של Cloud SQL
משתמשים בפקודות הבאות כדי ליצור מכונה ולהפעיל את Private Service Connect .
הפעולה תימשך כמה דקות.
gcloud config set project ${project}
gcloud sql instances create mysql-instance \
--project="${project}" \
--region=us-central1 \
--enable-private-service-connect \
--allowed-psc-projects="${project}" \
--availability-type=zonal \
--no-assign-ip \
--tier=db-f1-micro \
--database-version=MYSQL_8_0 \
--enable-bin-log
זיהוי ה-URI של צירוף השירות של מופע Cloud SQL
כדי להציג מידע על מכונה עם Private Service Connect מופעל, משתמשים בפקודה gcloud sql instances describe. שימו לב לשדה pscServiceAttachmentLink שמציג את ה-URI שמצביע לקובץ המצורף של השירות של המכונה. נצטרך את זה בקטע הבא.
gcloud sql instances describe mysql-instance \
--format='value(pscServiceAttachmentLink)'
4. נקודת קצה של PSC ל-Cloud SQL
הקצאת כתובת IP פנימית לנקודת הקצה של PSC
משתמשים בפקודה הבאה כדי להקצות כתובת IP פנימית לנקודת הקצה של Private Service Connect:
region="us-central1"
vpc_spoke_subnet_name="csql-psc-subnet"
gcloud compute addresses create csql-psc-ip \
--subnet="${vpc_spoke_subnet_name}" \
--region="${region}" \
--addresses=192.168.0.253
מחפשים את NAME שמשויך לכתובת ה-IP השמורה. הוא ישמש בהגדרה של כלל ההעברה.
gcloud compute addresses list \
--filter="name=csql-psc-ip"
יצירת כלל ההעברה של Private Service Connect ב-VPC1
משתמשים בפקודה הבאה כדי ליצור את נקודת הקצה של Private Service Connect ולהפנות אותה לקובץ המצורף של שירות Cloud SQL.
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
csql_psc_ep_name="csql-psc-ep"
sa_uri=$(gcloud sql instances describe mysql-instance \
--format='value(pscServiceAttachmentLink)')
echo "$sa_uri"
gcloud compute forwarding-rules create "${csql_psc_ep_name}" \
--address=csql-psc-ip \
--region="${region}" \
--network="${vpc_spoke_network_name}" \
--target-service-attachment="${sa_uri}" \
--allow-psc-global-access
משתמשים בפקודה הבאה כדי לוודא שהחיבור לשירות cSQL מקבל את נקודת הקצה
gcloud compute forwarding-rules describe csql-psc-ep \
--region=us-central1 \
--format='value(pscConnectionStatus)'
אימות נתיב הנתונים ל-MySQL מ-VPC1
כשיוצרים מכונה חדשה של Cloud SQL, צריך להגדיר סיסמה לחשבון המשתמש שמוגדר כברירת מחדל לפני שאפשר להתחבר למכונה.
gcloud sql users set-password root \
--host=% \
--instance=mysql-instance \
--prompt-for-password
משתמשים בפקודה הבאה כדי לאתר את כתובת ה-IP של נקודת הקצה (endpoint) מסוג PSC שמשויכת לקישור השירות של Cloud SQL.
gcloud compute addresses describe csql-psc-ip \
--region=us-central1 \
--format='value(address)'
התחברות למכונה של Cloud Sql ממכונה וירטואלית ב-VPC1
פתיחת סשן SSH אל csql-vpc1-vm
gcloud compute ssh csql-vpc1-vm \
--zone=us-central1-a \
--tunnel-through-iap
כדי להתחבר למכונה של Cloud Sql, משתמשים בפקודה שלמטה. כשתתבקשו, מזינים את הסיסמה שנוצרה בשלב הקודם.
mysql -h 192.168.0.253 -u root -p
הפלט הבא מוצג לאחר התחברות מוצלחת,
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 8350
Server version: 8.0.31-google (Google)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
משתמשים בפקודה show databases; כדי לאמת את מסדי הנתונים שנוצרים כברירת מחדל ב-MySql.
MySQL [(none)]> show databases;
התחברות למכונה של Cloud SQL ממכונה וירטואלית ב-VPC3
פותחים סשן SSH אל csql-vpc3-vm,
gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap
משתמשים בפקודה הבאה כדי להתחבר למכונה של Cloud SQL. כשתתבקשו, מזינים את הסיסמה שנוצרה בשלב הקודם.
mysql -h 192.168.0.253 -u root -p
הסשן מהמכונה הווירטואלית שנמצאת ב-VPC3 נכשל כי אין נתיב נתונים מ-VPC3 לנקודת הקצה של Private Service Connect. משתמשים במקשות האלה כדי לצאת מהסשן.
Ctrl + C
5. Network Connectivity Center Hub
סקירה כללית
בקטע הזה נסביר איך להגדיר מרכז NCC באמצעות פקודות gcloud. ה-NCC Hub ישמש בתור רמת הבקרה שאחראית על בניית נתיב הנתונים מחוירות VPC אל נקודת הקצה של Private Service Connect.
הפעלת שירותי API
מפעילים את Network Connectivity API אם הוא עדיין לא מופעל:
gcloud services enable networkconnectivity.googleapis.com
יצירת מרכז NCC
משתמשים בפקודה הבאה של gcloud כדי ליצור רכז NCC. הדגל ' -export-psc' מורה ל-NCC Hub להפיץ נקודות קצה (endpoints) ידועות של PSC לכל הדיבורים של VPC.
hub_name="ncc-hub"
gcloud network-connectivity hubs create "${hub_name}" \
--export-psc
מתארים את מרכז ה-NCC החדש שנוצר. שימו לב לשם ולנתיב המשויך.
gcloud network-connectivity hubs describe ncc-hub
הגדרת VPC1 כ-spoke של NCC
hub_name="ncc-hub"
vpc_spoke_name="sql-vpc1-spoke"
vpc_spoke_network_name="vpc1-spoke"
gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global
הגדרת VPC3 כ-spoke של NCC
hub_name="ncc-hub"
vpc_spoke_name="sql-vpc3-spoke"
vpc_spoke_network_name="vpc3-spoke"
gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global
משתמשים בפקודה הבאה כדי לבדוק בטבלת המסלולים של NCC Hub אם יש מסלול לתת-הרשת של PSC.
gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub
6. אימות נתיב הנתונים של NCC
בשלב הזה, נוודא שנתיב הנתונים בין NCC hybrid לבין VPC spoke תקין.
אימות נתיב הנתונים שהוגדרה ב-NCC לנקודת הקצה (endpoint) של מכונות Cloud SQL מסוג PSC
משתמשים בפלט של פקודות ה-gcloud האלה כדי להתחבר למכונה הווירטואלית המקומית.
gcloud compute instances list --filter="name=csql-vpc3-vm"
מתחברים למכונה הווירטואלית שנמצאת ברשת המקומית.
gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap
משתמשים בפקודה mysql הבאה כדי להתחבר למכונה של Cloud SQL. כשתתבקשו, מזינים את הסיסמה שנוצרה בשלב הקודם.
mysql -h 192.168.0.253 -u root -p
הפלט הבא מוצג במהלך התחברות מוצלחת,
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 8501
Server version: 8.0.31-google (Google)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.005 sec)
שימוש בהצגת מסדי נתונים; פקודה לאימות מסדי הנתונים שנוצרים כברירת מחדל ב-MySql
MySQL [(none)]> show databases;
7. הסרת המשאבים
התחברות ל-Cloud Shell ומחיקה של משאבים ב-GCP.
מחיקת נקודות הקצה של Cloud SQL PSC
gcloud compute forwarding-rules delete csql-psc-ep \
--region=us-central1 \
--quiet
gcloud compute addresses delete csql-psc-ip \
--region=us-central1 \
--quiet
gcloud compute networks subnets delete csql-psc-subnet \
--region=us-central1 \
--quiet
מחיקת המכונה של Cloud SQL
gcloud sql instances delete mysql-instance --quiet
מחיקת כללי חומת האש
vpc_spoke_network_name="vpc3-spoke"
gcloud compute firewall-rules delete vpc3-allow-all \ --network="${vpc_spoke_network_name}"
gcloud compute firewall-rules delete vpc3-allow-iap \ --network="${vpc_spoke_network_name}"
vpc_spoke_network_name="vpc1-spoke"
gcloud compute firewall-rules delete vpc1-allow-all \ --network="${vpc_spoke_network_name}"
gcloud compute firewall-rules delete vpc1-allow-iap \ --network="${vpc_spoke_network_name}"
מחיקת מכונות GCE ב-VPC1 וב-VPC3
vm_vpc1_spoke_name="csql-vpc1-vm"
zone="us-central1-a"
gcloud compute instances delete "${vm_vpc1_spoke_name}" \
--zone="${zone}" \
--quiet
vm_vpc_spoke_name="csql-vpc3-vm"
zone="us-central1-a"
gcloud compute instances delete "${vm_vpc_spoke_name}" \
--zone="${zone}" --quiet
מחיקת הצלעות של NCC
vpc_spoke_name="sql-vpc1-spoke"
gcloud network-connectivity spokes delete "${vpc_spoke_name}" \
--global \
--quiet
vpc_spoke_name="sql-vpc3-spoke"
gcloud network-connectivity spokes delete "${vpc_spoke_name}" \
--global \
--quiet
מחיקת NCC Hub
hub_name="ncc-hub"
gcloud network-connectivity hubs delete "${hub_name}" \
--project=${project}
מחיקת רשתות המשנה בכל רשתות ה-VPC
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \
--region="${region}" \
--quiet
vpc_spoke_subnet_name="subnet1"
region="us-central1"
gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \
--region="${region}" \
--quiet
vpc_spoke_subnet_name="subnet3"
region="us-central1"
gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \
--region="${region}" \
--quiet
מחיקת VPC1 ו-VPC3
gcloud compute networks delete vpc1-spoke vpc3-spoke
8. מעולה!
השלמת את ההפצה של Private Service Connect באמצעות Network Connectivity Center Lab!
מה כללתם
- הפצת נקודות קצה של Private Service Connect באמצעות Network Connectivity Center
השלבים הבאים