1. نظرة عامة
تتوفّر عدّة خيارات للاتصال بمثيل خاص Cloud SQL من مشروع أو شبكة VPC أخرى. يمكنك استخدام ميزة "الوصول إلى الخدمات الخاصة" (PSA) للوصول إلى عناوين IP الداخلية لخدمات Google والخدمات التابعة لجهات خارجية من خلال اتصالات خاصة. لتوسيع نطاق الوصول إلى قاعدة البيانات، يمكنك الآن أيضًا تفعيل Private Service Connect (PSC).
تتيح خدمة Private Service Connect (PSC) لمقدّمي الخدمات عرض خدماتهم من خلال مرفقات الخدمة، التي يمكن للمستهلكين استخدامها لإنشاء نقاط نهاية و/أو خلفيات PSC في بيئتهم. ومن خلال نقاط نهاية PSC هذه، يمكنهم الاتصال بخدمات المنتِج عبر عنوان IP خاص يحدّده المستخدم.
في هذا التمرين العملي، يمكنك ضبط الخيار واختباره.
في هذا التمرين العملي، ستنشئ بنية بسيطة توضّح كيفية استخدام الوصول إلى نقطة نهاية PSA وPSC مع CloudSQL.
الشكل 1.

في هذا الدرس التطبيقي، ستحتاج إلى مشروعَين أو شبكتَي VPC منفصلتَين في المشروع نفسه.
الأهداف
في هذا التمرين المعملي، ستتعرّف على كيفية تنفيذ المهمة التالية:
- تفعيل ربط الخدمات
- إعداد PSA
- إنشاء مثيل CloudSQL باستخدام PSA
- فعِّل مرفق خدمة PSC.
- إنشاء نقطة نهاية PSC في شبكة VPC الخاصة بالمستهلك للاتصال بقاعدة بيانات CloudSQL
- التحقّق من إمكانية الوصول إلى قاعدة بيانات SQL من الأجهزة الافتراضية الاختبارية، في كل من شبكات VPC الخاصة بالمنتج والمستهلك
2. الإعداد والمتطلبات
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.



- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
- رقم تعريف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره بعد ضبطه. تنشئ Cloud Console تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف مشروعك (يُشار إليه عادةً باسم
PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة وسيظل ساريًا طوال مدة المشروع. - للعلم، هناك قيمة ثالثة، وهي رقم المشروع، تستخدمها بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات عن كل هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس التطبيقي حول الترميز الكثير، إن وُجدت أي تكلفة على الإطلاق. لإيقاف الموارد وتجنُّب تحمّل تكاليف فوترة تتجاوز هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.
من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:

لن يستغرق توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا ثابتًا بسعة 5 غيغابايت، وتعمل على Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إكمال جميع المهام في هذا الدرس العملي ضمن المتصفّح. لست بحاجة إلى تثبيت أي تطبيق.
3- المهمة رقم 1 إعداد بيئة لمشروع قاعدة البيانات باستخدام (Terraform)
في مشروع قاعدة البيانات، سنقوم بتفعيل شبكة الخدمة وإنشاء شبكة VPC وإنشاء نطاق PSA وإنشاء ربط شبكة الخدمة وإنشاء قواعد جدار الحماية. افتح Cloud Console واختَر المشروع الذي ستستخدمه لقاعدة البيانات.
- افتح Cloud Shell في أعلى يسار وحدة التحكّم، وتأكَّد من ظهور رقم تعريف المشروع لقاعدة البيانات في مشروع قاعدة البيانات في Cloud Shell، وأكِّد أي طلبات للسماح بالوصول.

- أنشئ مجلدًا باسم terraform-db-psc وانتقِل إليه
mkdir terraform-db-psc && cd terraform-db-psc
- أنشئ ملفات main.tf وvariable.tf وnat-vm.tf وdatabase.tf.
touch main.tf variable.tf nat-vm.tf database.tf
- انتقِل إلى طريقة عرض محرّر Cloud Shell. انقر على المحرّر، وتأكَّد من السماح بأي طلبات ضرورية كي يتم تحميل الواجهة.
- بعد التحميل، انتقِل إلى ملف > فتح مجلد وانتقِل إلى /home/your-user-name/terraform-db-psc وانقر على حسنًا لفتح المجلد في المحرّر.

- اختَر الملف variable.tf وأضِف ما يلي. استبدِل النص
your-database-project-id-hereبمعرّف مشروع قاعدة البيانات الفعلي بين علامتَي اقتباس. استبدِل النصyour-consumer-project-id-hereبمعرّف مشروع المستهلك الفعلي بين علامتَي اقتباس.
variable "project_id" {
type = string
default = "your-database-project-id-here"
}
variable "project_id_consumer" {
type = set(string)
default = ["your-consumer-project-id-here"]
}
variable "network_id" {
type = string
default = "database-net"
}
variable "region_id" {
type = string
default = "us-east1"
}
variable "db_password" {
type = string
default = "cloudsql24"
}
- بعد ذلك، افتح الملف main.tf. سنضيف بعض رموز Terraform البرمجية لتنفيذ إجراءات مختلفة كما هو موضّح أدناه.
تفعيل واجهات برمجة التطبيقات |
|
إنشاء شبكة VPC |
|
إضافة قواعد جدار الحماية |
|
إنشاء نطاق إعلانات الخدمة العامة |
|
إنشاء ربط |
|
- انسخ ما يلي وألصِقه في ملف main .tf.
resource "google_project_service" "default" {
for_each = toset([
"compute.googleapis.com",
"servicenetworking.googleapis.com",
"sqladmin.googleapis.com",
"cloudresourcemanager.googleapis.com"
])
service = each.value
disable_on_destroy = false
}
resource "google_compute_network" "default" {
project = var.project_id
name = var.network_id
auto_create_subnetworks = true
mtu = 1460
routing_mode = "GLOBAL"
}
resource "google_compute_global_address" "psa_range" {
name = "psa-range-${google_compute_network.default.name}"
project = var.project_id
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 20
address = "172.18.0.0"
network = google_compute_network.default.id
}
resource "google_service_networking_connection" "private_connection" {
network = google_compute_network.default.self_link
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [
google_compute_global_address.psa_range.name,
]
}
resource "google_compute_firewall" "allow_icmp" {
name = "allow-icmp-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "icmp"
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["allow-icmp"]
}
resource "google_compute_firewall" "allow_ssh" {
name = "allow-ssh-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "tcp"
ports = ["22"]
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["allow-ssh"]
}
resource "google_compute_firewall" "allow_sql" {
name = "allow-sql-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "tcp"
ports = ["3306"]
}
source_ranges = ["0.0.0.0/0"]
}
resource "google_compute_firewall" "allow_internal" {
name = "allow-internal-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "icmp"
}
allow {
protocol = "tcp"
ports = ["0-65535"]
}
allow {
protocol = "udp"
ports = ["0-65535"]
}
source_ranges = ["10.128.0.0/9", "172.18.0.0/20"] # Include PSA range
}
- ارجع إلى وحدة طرفية Cloud Shell وتأكَّد من أنّك في الدليل terraform-db-psc
cd terraform-db-pscونفِّذ الأوامر التالية
terraform init
تتم تهيئة دليل العمل. تنزّل هذه الخطوة موفّري الخدمات المطلوبين للإعدادات المحدّدة.
terraform plan
تُنشئ خطة تنفيذ توضّح الإجراءات التي سيتّخذها Terraform لنشر البنية الأساسية.
- لإنشاء الموارد، شغِّل الأمر
terraform applyواكتبyesلتشغيله.
4. المهمة رقم 2 إنشاء مثيل CloudSQL باستخدام PSA (Terraform)
لنستخدِم Terraform لإنشاء مثيل CloudSQL مع خيار PSA للسماح بالاتصال. أكمِل عملية الضبط هذه في مشروع قاعدة البيانات.
- انتقِل إلى طريقة عرض محرّر Cloud Shell. تأكَّد من أنّك في المجلد
terraform-db-psc. اختَر ملفdatabase.tfوأضِف ما يلي:
resource "google_sql_database_instance" "default" {
name = "psc-psa-sql-db"
region = var.region_id
database_version = "MYSQL_8_0"
settings {
tier = "db-f1-micro"
availability_type = "REGIONAL"
backup_configuration {
enabled = true
binary_log_enabled = true
}
ip_configuration {
ipv4_enabled = "false"
private_network = google_compute_network.default.id
}
}
deletion_protection = false
}
resource "google_sql_user" "users" {
name = "testsql"
instance = google_sql_database_instance.default.name
password = var.db_password
}
- ارجع إلى وحدة طرفية Cloud Shell، وتأكَّد من أنّك في الدليل terraform-db-psc. لإنشاء الموارد، شغِّل الأمر
terraform applyواكتبyesلتشغيله. قد يستغرق إنشاء مثيل CloudSQL باستخدام PSA أكثر من 15 دقيقة.
التحقّق من قاعدة البيانات
- بعد اكتمال العملية، انتقِل إلى SQL في وحدة التحكّم، واختَر مثيل قاعدة البيانات psc-psa-sql-db الذي تم إنشاؤه حديثًا.
- على يمين الشاشة، وسِّع اللوحة المنبثقة لخيارات SQL واختَر عمليات الربط.
- ضمن علامة التبويب "الملخّص"، يمكنك الاطّلاع على معلومات حول الاتصال.
- انسخ عنوان IP الداخلي واحفظه في مكان ما على نظامك. وكما ترى، تم تعيينه من النطاق الذي حجزناه.
- ستحتاج إلى عنوان IP هذا لإكمال الخطوة 5 من المهمة 3.

- على يمين الصفحة، وسِّع اللوحة المنبثقة لخيارات SQL واختَر المستخدمون.
- يجب أن يظهر لك مستخدم باسم testsql وكلمة المرور cloudsql24 (سيتم استخدام هذا الحساب للوصول إلى قاعدة البيانات لاحقًا)
5- المهمة رقم 3 إنشاء جهاز افتراضي للاختبار والاتصال بمثيل SQL من داخل مشروع قاعدة البيانات (Terraform)
لنستخدِم Terraform لإنشاء جهاز افتراضي اختباري وبوابة NAT. أكمِل عملية الضبط هذه في مشروع قاعدة البيانات.
- انتقِل إلى طريقة عرض محرّر Cloud Shell. تأكَّد من أنّك في المجلد
terraform-db-psc. اختَر ملفnat-vm.tfوأضِف ما يلي:
resource "google_compute_router" "default" {
name = "outbound-nat"
region = var.region_id
network = google_compute_network.default.id
bgp {
asn = 64514
}
}
resource "google_compute_router_nat" "default" {
name = "outbound-nat-gw"
router = google_compute_router.default.name
region = google_compute_router.default.region
nat_ip_allocate_option = "AUTO_ONLY"
source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"
log_config {
enable = true
filter = "ERRORS_ONLY"
}
}
resource "google_compute_instance" "sql_net_vm" {
name = "db-vm-test"
machine_type = "e2-medium"
zone = "${var.region_id}-b"
project = var.project_id
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network = google_compute_network.default.self_link
}
# No external IP address
network_performance_config {
total_egress_bandwidth_tier = "DEFAULT"
}
tags = ["allow-icmp", "allow-ssh", "allow-internal", "allow-health-check"]
# Install MariaDB at startup
metadata_startup_script = <<EOF
#!/bin/bash
apt-get update
apt-get install -y mariadb-server
systemctl enable mariadb
EOF
}
- ارجع إلى وحدة طرفية Cloud Shell، وتأكَّد من أنّك في الدليل terraform-db-psc. لإنشاء الموارد، شغِّل الأمر
terraform plan, then terraform applyواكتبyesلتشغيله. سيؤدي ذلك إلى إنشاء بوابة NAT وجهاز افتراضي مثبَّت عليه MariaDB.
التحقّق من قاعدة البيانات
أكمِل هذه الخطوات في مشروع المستهلك
- انتقِل إلى مثيل الجهاز الافتراضي. اختَر db-vm-test.
- اختَر الخيار SSH للاتصال بالجهاز الافتراضي.
- اتّصِل بقاعدة البيانات من خلال عنوان IP المحلي الذي نسخته سابقًا باستخدام ما يلي:
mysql --host=172.18.0.2 --user=testsql --password=cloudsql24
ملاحظة: غيِّر عنوان IP إلى عنوان IP الفعلي ليتم الاتصال.
- بعد إنشاء الاتصال، لننشئ قاعدة بيانات باسم localvpcsqldb.
CREATE DATABASE localvpcsqldb;
- بعد اكتمال عملية الربط، اكتب exit للخروج من عملية الربط. اكتب exit مرة أخرى لإغلاق الجهاز الافتراضي.
6. المهمة رقم 4 تفعيل PSC على مثيل CloudSQL
لنستخدِم أوامر gcloud لتفعيل خيار PSC من أجل السماح بالاتصال. أكمِل عملية الضبط هذه في مشروع قاعدة البيانات.
- انتقِل إلى طريقة عرض Cloud Shell.
- نفِّذ الأمر التالي في Cloud Shell.
- استبدِل Ensure
YOUR_DB_PROJECT_HEREبمعرّف مشروع قاعدة البيانات. - استبدِل Ensure
YOUR_CONSUMER_PROJECT_HEREبمعرّف مشروع المستهلك.
project_id=YOUR_DB_PROJECT_HERE
allowed_project=YOUR_CONSUMER_PROJECT_HERE
gcloud beta sql instances patch psc-psa-sql-db \
--project=$project_id \
--enable-private-service-connect \
--allowed-psc-projects=$allowed_project
- سيؤدي ذلك إلى تعديل قاعدة البيانات الحالية باستخدام المرفق PSC. سيستغرق ذلك بعض الوقت، أي أكثر من 10 دقائق.
إذا ظهر لك خطأ في انتظار انتهاء المهلة، من المفترض أن يقدّم لك أيضًا الأمر لمواصلة الاطّلاع على مستوى التقدّم. رسالة مشابهة لما يلي: "يمكنك مواصلة انتظار العملية من خلال تنفيذ الأمر `gcloud beta sql operations wait –project "
يُرجى العِلم أنّه يمكنك نشر قاعدة بيانات جديدة مع تفعيل PSA وPSC من البداية.
التحقّق من قاعدة البيانات
- بعد اكتمال العملية، انتقِل إلى SQL في وحدة التحكّم، ثم اختَر مثيل قاعدة البيانات psc-psa-sql-db.
- على يمين الشاشة، وسِّع اللوحة المنبثقة لخيارات SQL واختَر عمليات الربط.
- ضمن علامة التبويب "الملخّص"، يمكنك الاطّلاع على معلومات حول الاتصال.
- انسخ عنوان ملحق الخدمة واحفظه في مكان ما على نظامك.
- ستحتاج إلى ذلك لإكمال الخطوة 8 من المهمة 5 التالية.

7. المهمة رقم 5 إعداد البيئة لمشروع المستهلك (Terraform)
في مشروع المستهلك، سننشئ شبكة VPC مخصّصة تتضمّن قواعد جدار الحماية والشبكة الفرعية. افتح Cloud Console واختَر المشروع الذي ستستخدمه.
- في أعلى وحدة التحكّم على اليسار بجانب رمز Google Cloud، انقر على القائمة المنسدلة ثم اختَر علامة التبويب الكل.


- من المشاريع المُدرَجة، اختَر رقم تعريف مشروع المستهلك للمتابعة.
- افتح Cloud Shell في أعلى يمين وحدة التحكّم، وتأكَّد من ظهور رقم تعريف مشروع المستهلك في Cloud Shell، وأكِّد أي طلبات تظهر لك للسماح بالوصول.
- أنشئ مجلدًا باسم terraform-consumer-psc وانتقِل إليه
mkdir terraform-consumer-psc && cd terraform-consumer-psc
- أنشئ ملفات main.tf وvariable.tf وpsc.tf.
touch main.tf variable.tf psc.tf
- انتقِل إلى عرض محرّر Cloud Shell لرقم تعريف مشروع المستهلك. انقر على المحرّر، وتأكَّد من السماح بأي طلبات ضرورية كي يتم تحميل الواجهة.
- بعد التحميل، انتقِل إلى ملف > فتح مجلد (File > Open Folder) وانتقِل إلى /home/your-user-name/terraform-consumer-psc وانقر على حسنًا (Ok) لفتح المجلد في المحرّر.

- اختَر الملف variable.tf وأضِف ما يلي. استبدِل النص
your-consumer-project-id-hereبمعرّف مشروع المستهلك الفعلي بين علامتَي اقتباس، واستبدِل النصyour-psc-attachment-id-hereبعنوان مرفق psc بين علامتَي اقتباس. هذا هو رقم التعريف الذي نسخته في القسم 5-7 من المهمة 4
variable "project_id" {
type = string
default = "your-consumer-project-id-here"
}
variable "psc_attachment_id" {
type = string
default = "your-psc-attachment-id-here"
}
variable "network_id" {
type = string
default = "psc-endpoint-vpc"
}
variable "region_id" {
type = string
default = "us-east1"
}
- بعد ذلك، افتح الملف main.tf. سنضيف بعض رموز Terraform البرمجية لتنفيذ إجراءات مختلفة كما هو موضّح أدناه.
تفعيل واجهات برمجة التطبيقات |
|
إنشاء شبكة VPC |
|
إنشاء بوابة NAT |
|
إضافة قواعد جدار الحماية |
|
- انسخ ما يلي وألصِقه في ملف main .tf.
resource "google_project_service" "default" {
for_each = toset([
"compute.googleapis.com",
"cloudresourcemanager.googleapis.com"
])
service = each.value
disable_on_destroy = false
}
resource "google_compute_network" "default" {
project = var.project_id
name = var.network_id
auto_create_subnetworks = false
mtu = 1460
routing_mode = "GLOBAL"
}
resource "google_compute_subnetwork" "vm_subnet_pc" {
name = "vm-net"
ip_cidr_range = "192.168.80.0/24"
region = var.region_id
network = google_compute_network.default.name
project = var.project_id
}
resource "google_compute_subnetwork" "psc_subnet_ip" {
name = "psc-subnet"
ip_cidr_range = "192.168.100.0/24"
region = var.region_id
network = google_compute_network.default.name
project = var.project_id
}
resource "google_compute_router" "default" {
name = "outbound-nat"
region = var.region_id
network = google_compute_network.default.id
bgp {
asn = 64514
}
}
resource "google_compute_router_nat" "default" {
name = "outbound-nat-gw"
router = google_compute_router.default.name
region = google_compute_router.default.region
nat_ip_allocate_option = "AUTO_ONLY"
source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"
log_config {
enable = true
filter = "ERRORS_ONLY"
}
}
resource "google_compute_firewall" "allow_icmp" {
name = "allow-icmp-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "icmp"
}
source_ranges = ["0.0.0.0/0"]
}
resource "google_compute_firewall" "allow_ssh" {
name = "allow-ssh-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "tcp"
ports = ["22"]
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["allow-ssh"]
}
resource "google_compute_firewall" "allow_internal" {
name = "allow-internal-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "icmp"
}
allow {
protocol = "tcp"
ports = ["0-65535"]
}
allow {
protocol = "udp"
ports = ["0-65535"]
}
source_ranges = ["192.168.0.0/16"]
}
- ارجع إلى وحدة طرفية Cloud Shell وتأكَّد من أنّك في الدليل terraform-consumer-psc
cd terraform-consumer-pscفي مشروع المستهلك، ثم نفِّذ الأوامر التالية
terraform init
تتم تهيئة دليل العمل. تنزّل هذه الخطوة موفّري الخدمات المطلوبين للإعدادات المحدّدة.
terraform plan
تُنشئ خطة تنفيذ توضّح الإجراءات التي سيتّخذها Terraform لنشر البنية الأساسية.
- لإنشاء الموارد، شغِّل الأمر
terraform applyواكتبyesلتشغيله.
8. المهمة 6 إنشاء نقطة نهاية PSC لربط قاعدة بيانات SQL في مشروع المستهلك والجهاز الظاهري للاختبار (Terraform)
أكمِل عملية الإعداد هذه في مشروع المستهلك.
- ارجع إلى محرّر Cloud Shell، وافتح الدليل terraform-consumer-psc واختَر الملف
psc.tf. أضِف رمز Terraform التالي إلى الملف. يؤدي ذلك إلى إنشاء عنوان IP داخلي ثابت ونقطة نهاية PSC وجهاز افتراضي للاختبار مع تثبيت Maria DB.
resource "google_compute_address" "default" {
name = "psc-ip-1"
region = var.region_id
address_type = "INTERNAL"
subnetwork = google_compute_subnetwork.psc_subnet_ip.name
address = "192.168.100.100"
}
resource "google_compute_forwarding_rule" "default" {
name = "psc-sql-endpoint"
region = var.region_id
network = google_compute_network.default.name
ip_address = google_compute_address.default.self_link
load_balancing_scheme = ""
target = var.psc_attachment_id
}
resource "google_compute_instance" "sql_test_vm" {
name = "remote-sql-test-vm"
machine_type = "e2-medium"
zone = "${var.region_id}-b"
project = var.project_id
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
subnetwork = google_compute_subnetwork.vm_subnet_pc.name
}
# No external IP address
network_performance_config {
total_egress_bandwidth_tier = "DEFAULT"
}
tags = ["allow-icmp", "allow-ssh", "allow-internal", "allow-health-check"]
# Install MariaDB at startup
metadata_startup_script = <<EOF
#!/bin/bash
apt-get update
apt-get install -y mariadb-server
systemctl enable mariadb
EOF
}
- ارجع إلى وحدة طرفية Cloud Shell وتأكَّد من أنّك في الدليل terraform-consumer-psc
cd terraform-consumer-pscفي مشروع المستهلك، ثم نفِّذ الأوامر التالية
terraform plan
تُنشئ خطة تنفيذ توضّح الإجراءات التي سيتّخذها Terraform لنشر البنية الأساسية.
- لإنشاء الموارد، شغِّل الأمر
terraform applyواكتبyesلتشغيل
9- المهمة 7. التحقّق من إمكانية الاتصال بنقطة النهاية من الجهاز الظاهري من خلال عنوان IP الخاص بخدمة Private Service Connect
أكمِل هذه الخطوات في مشروع المستهلك
- انتقِل إلى مثيل الجهاز الافتراضي. اختَر remote-sql-test-vm.
- اختَر الخيار SSH للاتصال بالجهاز الافتراضي.
- اتّصِل بقاعدة البيانات من خلال نقطة النهاية باستخدام ما يلي:
mysql --host=192.168.100.100 --user=testsql --password=cloudsql24
- بعد إنشاء الاتصال، لننشئ قاعدة بيانات باستخدام psc-sql-db التالية.
CREATE DATABASE remotepscpsasqldb;
- بعد اكتمال عملية الربط، اكتب exit للخروج من عملية الربط. اكتب exit مرة أخرى لإغلاق الجهاز الافتراضي.
10. المهمة 8 التحقّق من إدخال قاعدة البيانات
أكمِل عملية التحقّق هذه في مشروع قاعدة البيانات.
- في أعلى وحدة التحكّم على اليسار بجانب رمز Google Cloud، انقر على القائمة المنسدلة ثم اختَر علامة التبويب الكل.


- من المشاريع المُدرَجة، اختَر رقم تعريف مشروع قاعدة البيانات للمتابعة.
- انتقِل إلى SQL، واختَر قاعدة البيانات psc-psa-sql-db، ثم وسِّع خيارات SQL واختَر قواعد البيانات. من المفترض أن تظهر قاعدة البيانات التي أنشأتها للتو باسم remotepscpsasqldb من الجهاز الافتراضي لمشروع المستهلك وكذلك localvpcsqldb من الجهاز الافتراضي لمشروع قاعدة البيانات**
.**

11. تنظيف
أكمِل هذه الخطوات في مشروع المستهلك
- اختيار رقم تعريف مشروع المستهلك
- انتقِل إلى Cloud Shell وتأكَّد من ظهور رقم تعريف مشروع المستهلك.
- انتقِل إلى الدليل terraform-consumer-psc
cd terraform-consumer-pscونفِّذ الأمر التاليterraform destroyواكتبyesستتم إزالة جميع الموارد التي أنشأتها في مشروع المستهلك باستخدام Terraform.
أكمِل هذه الخطوة في مشروع "قاعدة البيانات"
- اختيار رقم تعريف مشروع قاعدة البيانات
- انتقِل إلى Cloud Shell وتأكَّد من ظهور رقم تعريف مشروع قاعدة البيانات.
- انتقِل إلى الدليل terraform-db-psc
cd terraform-db-pscونفِّذ الأمر التاليterraform destroyواكتبyesستتم إزالة معظم الموارد التي أنشأتها في مشروع قاعدة البيانات باستخدام Terraform. قد يتعذّر حذف ربط الخدمات بالشبكة ويظهر خطأ. - بعد ذلك، احذف الملفات التالية من مجلد terraform-db-psc.
rm -r terraform.tfstate terraform.tfstate.backup
- بعد ذلك، انتقِل في وحدة التحكّم إلى شبكات VPC.
- اختَر شبكة VPC باسم database-net، ثمّ الوصول الخاص إلى الخدمات، ثمّ ضمن نطاقات عناوين IP المخصّصة للخدمات، اختَر psa-range-database-net، ثمّ انقر على إصدار.

- بعد ذلك، اختَر ربط شبكة VPC، ثم اختَر servicenetworking-googleapis-com، ثم اختَر خيار حذف.

- بعد ذلك، انقر على حذف شبكة السحابة VPC
.
12. تهانينا
تهانينا، لقد أعددت مثيلاً على Cloud SQL بنجاح باستخدام PSA وربط PSC وأنشأت نقطة نهاية Private Service Connect في شبكة VPC أخرى.
مزيد من المعلومات
يمكنك الاطّلاع على مزيد من المعلومات حول Private Service Connect وCloud SQL.
Codelab ذو صلة: https://codelabs.developers.google.com/codelabs/cloudsql-psc-terraform