۱. مرور کلی
چندین گزینه برای اتصال به یک نمونه خصوصی Cloud SQL از یک پروژه دیگر یا شبکه VPC وجود دارد. میتوانید از دسترسی به سرویسهای خصوصی (PSA) برای دسترسی به آدرسهای IP داخلی گوگل و سرویسهای شخص ثالث از طریق اتصالات خصوصی استفاده کنید. برای گسترش دسترسی به پایگاه داده، اکنون میتوانید اتصال سرویس خصوصی (PSC) را نیز فعال کنید.
اتصال سرویس خصوصی (PSC) به تولیدکنندگان سرویس اجازه میدهد تا سرویسهای خود را از طریق پیوستهای سرویس ارائه دهند، که مصرفکنندگان میتوانند از آنها برای ایجاد نقاط پایانی PSC و/یا پایانههای PSC در محیط خود استفاده کنند. از طریق این نقاط پایانی PSC، آنها میتوانند از طریق یک IP خصوصی مشخص شده توسط کاربر به سرویسهای تولیدکننده متصل شوند.
در این آزمایشگاه میتوانید گزینه را پیکربندی و آزمایش کنید.
در این آزمایش، شما یک معماری ساده خواهید ساخت که استفاده از دسترسی نقطه پایانی PSA و PSC را با CloudSQL نشان میدهد.
شکل ۱.

برای این آزمایش، به دو پروژه یا VPC های جداگانه در یک پروژه نیاز دارید .
اهداف
در این آزمایشگاه یاد خواهید گرفت که چگونه وظایف زیر را انجام دهید:
- فعال کردن شبکه سرویس
- تنظیم PSA
- ایجاد یک نمونه CloudSQL با PSA
- پیوست سرویس PSC را فعال کنید.
- یک نقطه پایانی PSC در VPC مصرفکننده ایجاد کنید تا به پایگاه داده CloudSQL متصل شود.
- دسترسی به پایگاه داده SQL را از ماشینهای مجازی آزمایشی، در هر دو VPC تولیدکننده و مصرفکننده، تأیید کنید.
۲. تنظیمات و الزامات
تنظیم محیط خودتنظیم
- وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .



- نام پروژه، نام نمایشی برای شرکتکنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمیشود. شما همیشه میتوانید آن را بهروزرسانی کنید.
- شناسه پروژه در تمام پروژههای گوگل کلود منحصر به فرد است و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید میکند؛ معمولاً برای شما مهم نیست که چه باشد. در اکثر آزمایشگاههای کد، باید شناسه پروژه خود را (که معمولاً با عنوان
PROJECT_IDشناخته میشود) ارجاع دهید. اگر شناسه تولید شده را دوست ندارید، میتوانید یک شناسه تصادفی دیگر ایجاد کنید. به عنوان یک جایگزین، میتوانید شناسه خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. پس از این مرحله قابل تغییر نیست و در طول پروژه باقی میماند. - برای اطلاع شما، یک مقدار سوم، شماره پروژه ، وجود دارد که برخی از APIها از آن استفاده میکنند. برای کسب اطلاعات بیشتر در مورد هر سه این مقادیر، به مستندات مراجعه کنید.
- در مرحله بعد، برای استفاده از منابع/API های ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد هزینه زیادی نخواهد داشت، اگر اصلاً هزینهای داشته باشد. برای خاموش کردن منابع به منظور جلوگیری از پرداخت صورتحساب پس از این آموزش، میتوانید منابعی را که ایجاد کردهاید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.
شروع پوسته ابری
اگرچه میتوان از راه دور و از طریق لپتاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا میشود، استفاده خواهید کرد.
از کنسول گوگل کلود ، روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

آمادهسازی و اتصال به محیط فقط چند لحظه طول میکشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

این ماشین مجازی با تمام ابزارهای توسعهای که نیاز دارید، مجهز شده است. این ماشین مجازی یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه میدهد و روی فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود میبخشد. تمام کارهای شما در این آزمایشگاه کد را میتوان در یک مرورگر انجام داد. نیازی به نصب چیزی ندارید.
۳. وظیفه ۱. راهاندازی محیط برای پروژه پایگاه داده با (Terraform)
در پروژه پایگاه داده، ما شبکه سرویس را فعال خواهیم کرد، یک VPC ایجاد خواهیم کرد، یک محدوده PSA ایجاد خواهیم کرد، یک همتاسازی شبکه سرویس ایجاد خواهیم کرد و قوانین فایروال را ایجاد خواهیم کرد. کنسول ابری را باز کنید و پروژهای را که برای پایگاه داده استفاده خواهید کرد، انتخاب کنید.
- 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 بروید. ویرایشگر را انتخاب کنید، مطمئن شوید که هرگونه درخواست لازم را مجاز میدانید تا رابط کاربری بتواند بارگیری شود.
- پس از بارگذاری، به مسیر File > Open Folder بروید و به مسیر /home/your-user-name/terraform-db-psc بروید و برای باز کردن پوشه در ویرایشگر، Ok را انتخاب کنید.

- فایل 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 برای انجام اقدامات مختلف، همانطور که در زیر توضیح داده شده است، اضافه کنیم.
فعال کردن APIها | |
ایجاد VPC | |
اضافه کردن قوانین فایروال | |
ایجاد محدوده PSA | |
ایجاد یک همتاسازی | |
- موارد زیر را کپی کرده و در فایل اصلی .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را تایپ کنید.
۴. وظیفه ۲. ایجاد نمونه 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 ممکن است تا ۱۵+ دقیقه طول بکشد.
تأیید پایگاه داده
- پس از اتمام، به SQL در کنسول بروید، نمونه پایگاه داده psc-psa-sql-db که به تازگی ایجاد شده است را انتخاب کنید.
- در سمت چپ، اسلایدر گزینههای SQL را باز کنید و Connections را انتخاب کنید.
- در زیر برگه خلاصه میتوانید اطلاعات مربوط به اتصال را مشاهده کنید.
- آدرس IP داخلی را کپی کرده و آن را در جایی از سیستم خود ذخیره کنید. همانطور که میبینید، این آدرس از محدودهای که رزرو کردهایم، اختصاص داده شده است.
- برای انجام مرحله ۵ از وظیفه ۳ به این IP نیاز خواهید داشت.

- در سمت چپ، اسلایدر گزینههای SQL را باز کنید و کاربران را انتخاب کنید.
- شما باید کاربری به نام testsql با رمز عبور cloudsql24 را ببینید (این رمز بعداً برای دسترسی به پایگاه داده استفاده خواهد شد)
۵. وظیفه ۳. ایجاد ماشین مجازی آزمایشی و اتصال به نمونه 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 نصب شده ایجاد میکند.
تأیید پایگاه داده
این را در پروژه مصرف کننده تکمیل کنید
- به VM Instance بروید. db-vm-test را انتخاب کنید.
- برای اتصال به ماشین مجازی، گزینه SSH را انتخاب کنید.
- از طریق IP محلی که قبلاً کپی کردهاید با استفاده از دستور زیر به پایگاه داده متصل شوید:
mysql --host=172.18.0.2 --user=testsql --password=cloudsql24
ps برای اتصال، آدرس IP را به IP واقعی خود تغییر دهید.
- وقتی اتصال برقرار شد، اجازه دهید یک پایگاه داده با localvpcsqldb زیر ایجاد کنیم.
CREATE DATABASE localvpcsqldb;
- پس از اتمام، برای خروج از اتصال، exit را تایپ کنید. برای بستن ماشین مجازی، دوباره exit را تایپ کنید.
۶. وظیفه ۴. فعال کردن 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 بهروزرسانی میکند. این کار حدود ۱۰+ دقیقه طول خواهد کشید.
اگر خطای انتظار برای اتمام زمان دریافت کردید، باید دستوری برای ادامه و مشاهده پیشرفت کار نیز به شما داده شود. چیزی شبیه به «میتوانید با اجرای دستور `gcloud beta sql operations wait –project ` به انتظار برای عملیات ادامه دهید .»
لطفاً توجه داشته باشید که میتوانید از ابتدا یک پایگاه داده جدید را با فعال بودن PSA و PSC مستقر کنید.
تأیید پایگاه داده
- پس از اتمام، به SQL در کنسول بروید، نمونه پایگاه داده psc-psa-sql-db را انتخاب کنید.
- در سمت چپ، اسلایدر گزینههای SQL را باز کنید و Connections را انتخاب کنید.
- در زیر برگه خلاصه میتوانید اطلاعات مربوط به اتصال را مشاهده کنید.
- آدرس پیوست سرویس را کپی کرده و در جایی از سیستم خود ذخیره کنید.
- برای تکمیل مرحله ۸ از مرحله ۵ به این نیاز خواهید داشت.

۷. وظیفه ۵. راهاندازی محیط برای پروژه مصرفکننده (Terraform)
در پروژه مصرفکننده، ما یک VPC سفارشی با قوانین فایروال و زیرشبکه ایجاد خواهیم کرد. کنسول ابری را باز کنید و پروژهای را که استفاده خواهید کرد انتخاب کنید.
- در بالای کنسول خود، در سمت راست، کنار آیکون Google Cloud، روی منوی کشویی کلیک کنید و سپس تب all را انتخاب کنید.


- از میان پروژههای فهرستشده، شناسه پروژه مصرفکننده خود را برای ادامه انتخاب کنید.
- 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 خود که در گیومه قرار دارد جایگزین کنید. این شناسهای است که در وظیفه ۴ بخش ۵-۷ کپی کردید.
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 برای انجام اقدامات مختلف، همانطور که در زیر توضیح داده شده است، اضافه کنیم.
فعال کردن APIها | |
ایجاد VPC | |
ایجاد دروازه NAT | |
اضافه کردن قوانین فایروال | |
- موارد زیر را کپی کرده و در فایل اصلی .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 هستید. در پروژه consumer،
cd terraform-consumer-pscاجرا کنید و دستورات زیر را اجرا کنید.
terraform init
دایرکتوری کاری را مقداردهی اولیه میکند. این مرحله ارائهدهندگان مورد نیاز برای پیکربندی داده شده را دانلود میکند.
terraform plan
یک طرح اجرایی ایجاد میکند که نشان میدهد Terraform چه اقداماتی را برای استقرار زیرساخت شما انجام خواهد داد.
- حالا برای ایجاد منابع، دستور
terraform applyاجرا کنید و برای اجرا،yesرا تایپ کنید.
۸. وظیفه ۶. ایجاد نقطه پایانی PSC به ضمیمه SQL DB در پروژه مصرفکننده و آزمایش ماشین مجازی (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 هستید. در پروژه consumer،
cd terraform-consumer-pscاجرا کنید و دستورات زیر را اجرا کنید.
terraform plan
یک طرح اجرایی ایجاد میکند که نشان میدهد Terraform چه اقداماتی را برای استقرار زیرساخت شما انجام خواهد داد.
- حالا برای ایجاد منابع، دستور
terraform applyاجرا کنید و برای اجرا،yesرا تایپ کنید.
۹. وظیفه ۷. تأیید اتصال نقطه پایانی از ماشین مجازی از طریق آدرس IP PSC
این را در پروژه مصرف کننده تکمیل کنید
- به VM Instance بروید. remote-sql-test-vm را انتخاب کنید.
- برای اتصال به ماشین مجازی، گزینه SSH را انتخاب کنید.
- با استفاده از دستور زیر از طریق endpoint به پایگاه داده متصل شوید:
mysql --host=192.168.100.100 --user=testsql --password=cloudsql24
- وقتی اتصال برقرار شد، یک پایگاه داده با psc-sql-db زیر ایجاد کنید.
CREATE DATABASE remotepscpsasqldb;
- پس از اتمام، برای خروج از اتصال، exit را تایپ کنید. برای بستن ماشین مجازی، دوباره exit را تایپ کنید.
۱۰. وظیفه ۸. تأیید ورودی پایگاه داده
این تأیید را در پروژه پایگاه داده تکمیل کنید
- در بالای کنسول خود، در سمت راست، کنار آیکون Google Cloud، روی منوی کشویی کلیک کنید و سپس تب all را انتخاب کنید.


- از میان پروژههای فهرستشده، شناسه پروژه پایگاه داده خود را برای ادامه انتخاب کنید.
- به SQL بروید، پایگاه داده psc-psa-sql-db را انتخاب کنید، گزینههای SQL را باز کنید و Databases را انتخاب کنید. باید پایگاه دادهای که اخیراً ایجاد کردهاید با نام remotepscpsasqldb را از ماشین مجازی پروژه مصرفکننده و همچنین localvpcsqldb را از ماشین مجازی پروژه پایگاه داده ببینید
.

۱۱. تمیز کردن
این را در پروژه Consumer تکمیل کنید
- شناسه پروژه مصرفکننده را انتخاب کنید
- به Cloud Shell بروید و مطمئن شوید که شناسه پروژه مصرفکننده را میبینید.
- به دایرکتوری terraform-consumer-psc
cd terraform-consumer-pscو دستور زیر را اجرا کنید:terraform destroyو عبارتyesرا تایپ کنید. تمام منابعی که در پروژه مصرفکننده خود با Terraform ایجاد کردهاید حذف خواهند شد.
این را در پروژه پایگاه داده تکمیل کنید
- شناسه پروژه پایگاه داده را انتخاب کنید
- به Cloud Shell بروید و مطمئن شوید که شناسه پروژه پایگاه داده را مشاهده میکنید.
- به دایرکتوری terraform-db-psc بروید و دستور زیر
cd terraform-db-pscterraform destroyاجرا کنید و عبارتyesرا تایپ کنید. اکثر منابعی که در پروژه پایگاه داده خود با Terraform ایجاد کردهاید حذف خواهند شد. ممکن است شبکه سرویس حذف نشود و خطا بدهد. - سپس فایلهای زیر را از پوشه terraform-db-psc حذف کنید.
rm -r terraform.tfstate terraform.tfstate.backup
- بعد در کنسول به شبکههای VPC بروید
- گزینه database-net VPC را انتخاب کنید ، سپس گزینه PRIVATE SERVICES ACCESS را انتخاب کنید، در قسمت Allocated IP Ranges for Services ، گزینه psa-range-database-net را انتخاب کنید و در نهایت گزینه Release را انتخاب کنید.

- سپس VPC NETWORK PERING را انتخاب کنید، servicenetworking-googleapis-com را انتخاب کنید و گزینه Delete را انتخاب کنید.

- بعد، حذف شبکه VPC را انتخاب کنید

۱۲. تبریک
تبریک میگوییم، شما با موفقیت یک نمونه Cloud SQL را با پیوستهای PSA و PSC پیکربندی کردید و یک نقطه پایانی Private Service Connect در یک VPC دیگر ایجاد کردید.
بیشتر بدانید
میتوانید درباره Private Service Connect و Cloud SQL بیشتر بخوانید
سایر آزمایشگاههای کد مرتبط: https://codelabs.developers.google.com/codelabs/cloudsql-psc-terraform