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

1. מבוא

סקירה כללית

במעבדת ה-Lab הזו, המשתמשים יבדקו איך רכזת של Network Connectivity Center מעבירה נקודת קצה של Private Service Connect לרשתות VPC מסוג Hub and 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 הזה נעשה שימוש במשתנים כדי להקל על הטמעת ההגדרה של 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, אבל אדמינים אחרים בפרויקטים אחרים יכולים להוסיף רשתות Spokes לחיבורים שלהם ל-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 ו-Identity Access Proxy

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 ישמש כמישור הבקרה שאחראי לבניית נתיב הנתונים ממרכזי ה-VPC אל נקודת הקצה של Private Service Connect.

b615efa4bad5f86.png

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

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

השלבים הבאים