1. מבוא
סקירה כללית
בשיעור ה-Lab הזה, המשתמשים ילמדו איך הצומת של Network Connectivity Center מפיץ נקודת קצה של Private Service Connect לצירי VPC.
משאב הצומת מספק מודל מרכזי לניהול קישוריות כדי לחבר את התנועה של צירי ה-VPC לנקודות הקצה של PSC.
מה תפַתחו
בסדנת הקוד הזו תלמדו ליצור רשת NCC שתפרס נקודת קצה של Private Service Connect למכונה של 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 בכתובת 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 – מאפשרת למנהלי רשת לנהל את הצירים והקרניים. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager – מאפשרת להוסיף צירים לרכז ולנהל אותם. לשימוש ב-VPC משותף, שבו לפרויקט המארח יש בעלות על הצומת, אבל אדמינים אחרים בפרויקטים אחרים יכולים להוסיף צמתים משניים לחיבורים שלהם לצומת. | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer – מאפשרת למשתמשי הרשת להציג מאפיינים שונים של צומת ושל זרוע. | 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
מחפשים את השם שמשויך לכתובת ה-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 spokes לנקודת הקצה של Private Service Connect.
הפעלת שירותי API
מפעילים את Network Connectivity API אם הוא עדיין לא מופעל:
gcloud services enable networkconnectivity.googleapis.com
יצירת מרכז NCC
משתמשים בפקודה הבאה של gcloud כדי ליצור צומת NCC. הדגל '–export-psc' מורה ל-NCC Hub להפיץ נקודות קצה ידועות מסוג 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)
משתמשים בפקודה show databases; כדי לאמת את מסדי הנתונים שנוצרים כברירת מחדל ב-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_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
השלבים הבאים