تطبيق: انتشار PSC في "مركز التحكم الوطني"

1. مقدمة

نظرة عامة

في هذا المختبر، سيتعرّف المستخدمون على كيفية نشر مركز Network Connectivity Center لنقطة نهاية Private Service Connect إلى شبكات VPC الفرعية.

يوفر مورد المحور نموذجًا مركزيًا لإدارة الاتصال من أجل ربط حركة بيانات الفروع في شبكة VPC بنقاط نهاية PSC.

ما ستنشئه

في هذا الدرس التطبيقي حول الترميز، ستنشئ شبكة NCC تنقل نقطة نهاية Private Service Connect إلى مثيل Cloud SQL.

74bf390e323ea3bb.png

أهداف الدورة التعليمية

  • استخدام Private Service Connect للاتصال بمثيل Cloud SQL
  • استخدِم مركز NCC لنشر الشبكة الفرعية لخدمة PSC إلى جميع الشبكات الفرعية التابعة لشبكة VPC من أجل السماح بالاتصال بالشبكة من شبكات VPC متعددة.

المتطلبات

  • معرفة شبكات السحابة الإلكترونية في Google Cloud Platform
  • معرفة أساسية بخدمة Cloud SQL
  • مشروع Google Cloud
  • تحقَّق من الحصة:الشبكات واطلب إضافة شبكات إضافية إذا لزم الأمر، كما هو موضّح في لقطة الشاشة أدناه:

6bc606cb34bce7e8.png

الأهداف

  • إعداد بيئة GCP
  • إعداد مثيل Cloud SQL لـ MySql باستخدام Private Service Sonnect
  • إعداد مركز Network Connectivity Center لنشر نقاط نهاية PSC
  • إعداد Network Connectivity Center مع استخدام شبكة VPC كشبكة فرعية
  • التحقّق من صحة مسار البيانات
  • استكشاف ميزات إمكانية استخدام خدمة NCC
  • تنظيف الموارد

قبل البدء

Google Cloud Console وCloud Shell

للتفاعل مع Google Cloud Platform، سنستخدم كلاً من Google Cloud Console وCloud Shell خلال هذا الدرس التطبيقي.

مشروع NCC Hub في Google Cloud Console

يمكن الوصول إلى Cloud Console على https://console.cloud.google.com.

اضبط العناصر التالية في Google Cloud لتسهيل إعداد Network Connectivity Center:

في Google Cloud Console، في صفحة اختيار المشروع، اختَر مشروعًا على Google Cloud أو أنشِئ مشروعًا.

شغِّل Cloud Shell. يستفيد هذا الدرس التطبيقي حول الترميز من المتغيرات $للمساعدة في تنفيذ إعدادات gcloud في Cloud Shell.

gcloud auth list
gcloud config list project
gcloud config set project $project
project=[YOUR-PROJECT-NAME]
echo $project

أدوار "إدارة الهوية وإمكانية الوصول"

تتطلّب "مركز إدارة العملاء" أدوار IAM للوصول إلى واجهات برمجة تطبيقات معيّنة. احرص على ضبط المستخدم باستخدام أدوار NCC IAM حسب الحاجة.

الدور/الوصف

الأذونات

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 وقواعد جدار الحماية في مشروع واحد. يوضّح المخطط المنطقي بيئة الشبكة التي سيتم إعدادها في هذه الخطوة.

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}" 

إنشاء شبكة فرعية لخدمة Private Service Connect في شبكة VPC

استخدِم الأمر أدناه لإنشاء شبكة فرعية في شبكة VPC الفرعية التي سيتم تخصيصها لنقطة نهاية PSC.

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_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

استخدِم الأمر gcloud sql instances describe لعرض معلومات عن إحدى الآلات الافتراضية التي تم تفعيل Private Service Connect عليها. دوِّن قيمة الحقل 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 لنقطة نهاية 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

نظرة عامة

في هذا القسم، سنضبط إعدادات NCC Hub باستخدام أوامر gcloud. سيعمل مركز NCC كلوحة تحكّم مسؤولة عن إنشاء مسار البيانات من الشبكات الفرعية في السحابة الافتراضية الخاصة (VPC) إلى نقطة نهاية Private Service Connect.

b615efa4bad5f86.png

تفعيل "خدمات واجهة برمجة التطبيقات"

فعِّل واجهة برمجة التطبيقات الخاصة باتصال الشبكة في حال لم يتم تفعيلها بعد:

gcloud services enable networkconnectivity.googleapis.com

إنشاء مركز NCC

استخدِم أمر gcloud أدناه لإنشاء مركز NCC. يوجّه الخيار "‎–export-psc" مركز NCC إلى نشر نقاط نهاية PSC المعروفة إلى جميع الشبكات الفرعية VPC.

hub_name="ncc-hub"
gcloud network-connectivity hubs create "${hub_name}" \
--export-psc

أضِف وصفًا لمركز NCC الذي تم إنشاؤه حديثًا. دوِّن الاسم والمسار المرتبط به.

gcloud network-connectivity hubs describe ncc-hub

ضبط VPC1 كشبكة فرعية في 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 كشبكة فرعية في 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

استخدِم أمر 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.

حذف نقاط نهاية Private Service Connect في Cloud SQL

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_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

الخطوات التالية