1. مقدمة
نظرة عامة
في هذا الدليل التدريبي، سيستكشف المستخدمون كيفية نشر مركز "الاتصال بالشبكة" لنقطة نهاية Private Service Connect في نقاط اتصال VPC.
يقدّم مورد المحور نموذجًا مركزيًا لإدارة الاتصال لربط حركة بيانات نقاط الاتصال في شبكة VPC بنقاط نهاية PSC.
التطبيق الذي ستصممه
في هذا الدليل التعليمي حول الرموز البرمجية، ستُنشئ شبكة NCC ستنشر نقطة نهاية اتصال خدمة خاصة إلى مثيل Cloud SQL.
المُعطيات
- استخدام Private Service Connect للاتصال بمثيل Cloud SQL
- استخدِم مركز NCC لنشر الشبكة الفرعية لوحدة التحكّم في حدود الجلسة إلى جميع نقاط اتصال شبكة VPC للسماح بالاتصال بالشبكة من شبكات VPC متعددة.
المتطلبات
- معرفة بشبكة Google Cloud Platform
- المعرفة الأساسية بخدمة Cloud SQL
- مشروع Google Cloud
- تحقّق من الحصة:الشبكات واطلب شبكات إضافية إذا لزم الأمر، كما هو موضّح في لقطة الشاشة أدناه:
الأهداف
- إعداد بيئة Google Cloud Platform
- إعداد مثيل Cloud SQL لـ MySql باستخدام ميزة Private Service Connect
- ضبط مركز "الاتصال بالشبكة" لنشر نقاط نهاية PSC
- ضبط إعدادات "مركز اتصال الشبكة" باستخدام VPC كشبكة فرعية
- التحقّق من صحة مسار البيانات
- استكشاف ميزات الخدمة في NCC
- تنظيف الموارد
قبل البدء
Google Cloud Console وCloud Shell
للتفاعل مع Google Cloud Platform، سنستخدم Google Cloud Console وCloud Shell على مدار هذا البرنامج التدريبي.
وحدة تحكّم Google Cloud في مشروع NCC Hub
يمكن الوصول إلى Cloud Console على الرابط https://console.cloud.google.com.
عليك إعداد العناصر التالية في Google Cloud لتسهيل ضبط إعدادات "مركز اتصال الشبكة":
في 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
أدوار "إدارة الهوية وإمكانية الوصول"
تتطلّب خدمة NCC أدوار "إدارة الهوية وإمكانية الوصول" للوصول إلى واجهات برمجة تطبيقات معيّنة. احرص على ضبط أدوار إدارة الهوية وإمكانية الوصول (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 وقواعد جدار الحماية في مشروع واحد. يوضّح المخطّط المنطقي بيئة الشبكة التي سيتم إعدادها في هذه الخطوة.
إنشاء VPC1 وشبكة فرعية
تحتوي شبكة VPC على شبكات فرعية ستثبّت عليها "آلة افتراضية في Google Compute Engine" للتحقّق من صحة مسار البيانات.
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}"
إنشاء شبكة فرعية لوحدة التحكّم في حدود الجلسة في 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 الذي يعرض معرّف الموارد المنتظم الذي يشير إلى مرفق الخدمة الخاص بالمثيل. سنحتاج إلى هذه المعلومات في القسم التالي.
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- مركز "الاتصال بالشبكة"
نظرة عامة
في هذا القسم، سنضبط إعدادات "مركز NCC" باستخدام أوامر gcloud. سيعمل "مركز NCC" بمثابة مستوى التحكّم المسؤول عن إنشاء مسار البيانات من نقاط اتصال VPC إلى نقطة نهاية Private Service Connect.
تفعيل خدمات واجهة برمجة التطبيقات
فعِّل واجهة برمجة التطبيقات الخاصة بإمكانية الاتصال بالشبكة في حال لم تكن مفعَّلة بعد:
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 كنقطة اتصال في شبكة 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 بحثًا عن مسار إلى الشبكة الفرعية لمركز التحكّم في الخدمات.
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 Platform
حذف نقاط نهاية 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.
ما تناولته
- نشر نقاط نهاية Private Service Connect باستخدام Network Connectivity Center
الخطوات التالية