מעבדה: הפצת PSC של NCC

1. מבוא

סקירה כללית

בשיעור ה-Lab הזה, המשתמשים יבדקו איך רכזת של Network Connectivity Center מעבירה נקודת קצה של Private Service Connect לרשתות VPC מסוג spoke.

משאב ה-hub מספק מודל מרכזי לניהול קישוריות, כדי לקשר בין תנועת נתונים של רשתות VPC מסוג spoke לבין נקודות קצה של PSC.

מה תפַתחו

ב-Codelab הזה תבנו רשת NCC שתפיץ נקודת קצה של Private Service Connect למופע Cloud SQL.

74bf390e323ea3bb.png

מה תלמדו

  • שימוש ב-Private Service Connect כדי להתחבר למכונת Cloud SQL
  • משתמשים במרכז NCC כדי להפיץ את רשת המשנה של PSC לכל הרשתות מסוג Hub and Spoke של VPC, כדי לאפשר קישוריות לרשת מכמה רשתות VPC.

הדרישות

  • ידע ב-GCP Cloud Networking
  • ידע בסיסי ב-Cloud SQL
  • פרויקט ב-Google Cloud
  • בודקים את המיכסה:רשתות ומבקשים להוסיף רשתות נוספות אם צריך. צילום מסך בהמשך:

6bc606cb34bce7e8.png

מטרות

  • הגדרת סביבת GCP
  • הגדרת מופע Cloud SQL ל-MySQL עם Private Service Connect
  • הגדרת Network Connectivity Center Hub להפצת נקודות קצה של PSC
  • הגדרת Network Connectivity Center עם VPC כרשת משנית (spoke)
  • אימות נתיב הנתונים
  • תכונות השירות של NCC
  • פינוי משאבים

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

מסוף Google Cloud ו-Cloud Shell

במהלך שיעור ה-Lab הזה נשתמש גם במסוף Google Cloud וגם ב-Cloud Shell כדי ליצור אינטראקציה עם GCP.

פרויקט NCC Hub במסוף Google Cloud

אפשר להיכנס ל-Cloud Console בכתובת https://console.cloud.google.com.

כדי להקל על הגדרת Network Connectivity Center, צריך להגדיר את הפריטים הבאים ב-Google Cloud:

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

מפעילים את Cloud Shell. ב-Codelab הזה נעשה שימוש במשתנים (‎ $variables) כדי להקל על הטמעת ההגדרה של 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 משותף שבו הפרויקט המארח הוא הבעלים של ה-Hub, אבל אדמינים אחרים בפרויקטים אחרים יכולים להוסיף רשתות מסוג Spoke לחיבורים שלהם ל-Hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer – מאפשר למשתמשי רשת להציג מאפיינים שונים של רכזות ושל רשתות מסוג Hub and Spoke.

networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList

2. הגדרת סביבת הרשת

סקירה כללית

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

8884a55988881e17.png

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

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 של נקודת הקצה של 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.

b615efa4bad5f86.png

הפעלת שירותי API

אם ה-API של קישוריות הרשת עדיין לא מופעל, צריך להפעיל אותו:

gcloud services enable networkconnectivity.googleapis.com

יצירת מרכז NCC

משתמשים בפקודת gcloud הבאה כדי ליצור רכזת NCC. הדגל ‎–export-psc מורה ל-NCC Hub להפיץ את נקודות הקצה הידועות של PSC לכל רשתות ה-VPC מסוג Hub.

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 לנקודת הקצה של PSC במופעים של Cloud SQL

משתמשים בפלט של פקודות gcloud האלה כדי להתחבר למכונה הווירטואלית המקומית.

 gcloud compute instances list --filter="name=csql-vpc3-vm" 

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

gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap

כדי להתחבר למופע Cloud SQL, משתמשים בפקודה mysql שמופיעה בהמשך. כשתתבקשו, תצטרכו להזין את הסיסמה שנוצרה בשלב הקודם.

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

מחיקת ה-spokes של ה-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. מעולה!

השלמתם את שיעור ה-Lab בנושא הפצה של Private Service Connect באמצעות Network Connectivity Center.

מה כיסיתם

  • הפצה של נקודות קצה של Private Service Connect באמצעות Network Connectivity Center

השלבים הבאים