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

1. מבוא

סקירה כללית

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

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

מה תפַתחו

ב-Codelab הזה תפתחו רשת NCC שתפיץ נקודת קצה (endpoint) של חיבור פרטי לשירות למכונה של Cloud SQL.

74bf390e323ea3bb.png

מה תלמדו

  • שימוש ב-Private Service Connect כדי להתחבר למכונה של Cloud SQL
  • שימוש ב-NCC hub כדי להפיץ את תת-הרשת של PSC לכל ה-spokes של VPC, כדי לאפשר קישוריות לרשת מכמה רשתות VPC.

מה נדרש

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

6bc606cb34bce7e8.png

מטרות

  • הגדרת הסביבה ב-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 וכללי חומת האש לפרויקט אחד. בתרשים הלוגי מוצגת סביבת הרשת שתתבצע לה הגדרה בשלב הזה.

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

מחפשים את 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.

b615efa4bad5f86.png

הפעלת שירותי 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

השלבים הבאים