تطبيق: انتشار 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
  • معرفة أساسية بخدمة Cloud SQL
  • مشروع Google Cloud
  • التحقّق من الحصة:الشبكات و طلب شبكات إضافية إذا لزم الأمر، كما في لقطة الشاشة أدناه:

6bc606cb34bce7e8.png

الأهداف

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

قبل البدء

Google Cloud Console وCloud Shell

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

Google Cloud Console لمشروع مركز NCC

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

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

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

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

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

أدوار إدارة الهوية والوصول (IAM)

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

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 سيتم تخصيصها لنقطة نهاية 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

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 باستخدام أوامر 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 بحثًا عن مسار إلى الشبكة الفرعية PSC.

gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub

6- التحقّق من مسار بيانات NCC

في هذه الخطوة، سنتحقّق من مسار البيانات بين NCC المختلط وطرف شبكة VPC.

التحقّق من مسار البيانات الذي تم ضبطه في 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 واحذف موارد Google Cloud.

حذف نقاط نهاية PSC في 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.

المواضيع التي تم تناولها

  • نشر نقطة نهاية Private Service Connect باستخدام Network Connectivity Center

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