1. खास जानकारी
किसी दूसरे प्रोजेक्ट या वीपीसी नेटवर्क से निजी Cloud SQL इंस्टेंस से कनेक्ट करने के कई विकल्प हैं. प्राइवेट कनेक्शन के ज़रिए Google और तीसरे पक्ष की सेवाओं के इंटरनल आईपी पतों तक पहुंचने के लिए, प्राइवेट सेवाओं के ऐक्सेस (पीएसए) का इस्तेमाल किया जा सकता है. डेटाबेस का ऐक्सेस बढ़ाने के लिए, अब Private Service Connect (पीएससी) की सुविधा भी चालू की जा सकती है.
Private Service Connect (पीएससी) की मदद से, सेवा देने वाली कंपनियां अपनी सेवाएं सर्विस अटैचमेंट के ज़रिए उपलब्ध करा सकती हैं. उपभोक्ता इनका इस्तेमाल करके, अपने एनवायरमेंट में पीएससी एंडपॉइंट और/या पीएससी बैकएंड बना सकते हैं. इन पीएससी एंडपॉइंट के ज़रिए, वे उपयोगकर्ता के तय किए गए प्राइवेट आईपी का इस्तेमाल करके, प्रोड्यूसर की सेवाओं से कनेक्ट हो सकते हैं.
इस लैब में, इस विकल्प को कॉन्फ़िगर और टेस्ट किया जा सकता है.
इस लैब में, आपको एक ऐसा आसान आर्किटेक्चर बनाना है जिससे CloudSQL के साथ PSA और पीएससी एंडपॉइंट ऐक्सेस करने का तरीका पता चलता है.
इमेज 1.

इस लैब के लिए, आपको दो प्रोजेक्ट या एक ही प्रोजेक्ट में अलग-अलग वीपीसी की ज़रूरत होगी.
मकसद
इस लैब में, आपको यह काम करने का तरीका बताया जाएगा:
- सर्विस नेटवर्किंग चालू करना
- पीएसए सेट अप करना
- पीएसए की मदद से CloudSQL इंस्टेंस बनाना
- पीएसए सेवा अटैचमेंट चालू करें.
- CloudSQL डेटाबेस से कनेक्ट करने के लिए, उपभोक्ता वीपीसी में पीएससी एंडपॉइंट बनाएं
- यह पुष्टि करें कि प्रोड्यूसर और उपभोक्ता, दोनों के वीपीसी में टेस्ट वीएम से SQL डेटाबेस को ऐक्सेस किया जा सकता है
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते हैं. इसे कभी भी अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, सभी 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) की मदद से डेटाबेस प्रोजेक्ट के लिए एनवायरमेंट सेट अप करना
डेटाबेस प्रोजेक्ट में,हम सेवा नेटवर्किंग चालू करेंगे, वीपीसी बनाएंगे, पीएसए रेंज बनाएंगे, सेवा नेटवर्किंग पियरिंग बनाएंगे, और फ़ायरवॉल के नियम बनाएंगे. 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 फ़ाइल खोलें. हम यहां कुछ टेराफ़ॉर्म कोड जोड़ने जा रहे हैं, ताकि नीचे बताई गई कार्रवाइयां की जा सकें.
एपीआई चालू करना |
|
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. पीएसए (Terraform) की मदद से CloudSQL इंस्टेंस बनाना
कनेक्टिविटी की अनुमति देने के लिए, पीएसए विकल्प के साथ CloudSQL इंस्टेंस बनाने के लिए, Terraform का इस्तेमाल करें. इस कॉन्फ़िगरेशन को डेटाबेस प्रोजेक्ट में पूरा करें.
- 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 इंस्टेंस बनाने में 15 मिनट से ज़्यादा समय लग सकता है.
डेटाबेस की पुष्टि करना
- प्रोसेस पूरी होने के बाद, कंसोल में SQL पर जाएं. इसके बाद, नई बनाई गई psc-psa-sql-db डेटाबेस इंस्टेंस चुनें.
- बाईं ओर, SQL के विकल्पों को बड़ा करें और कनेक्शन को चुनें
- 'खास जानकारी' टैब में जाकर, कनेक्शन के बारे में जानकारी देखी जा सकती है.
- इंटरनल आईपी पता कॉपी करें और इसे अपने सिस्टम पर कहीं सेव करें. जैसा कि आप देख सकते हैं, इसे हमने रिज़र्व की गई रेंज से असाइन किया था.
- टास्क 3 के पांचवें चरण को पूरा करने के लिए, आपको इस आईपी की ज़रूरत होगी.

- बाईं ओर, SQL के विकल्पों वाले स्लाइडआउट को बड़ा करें. इसके बाद, उपयोगकर्ता को चुनें.
- आपको testsql नाम का एक उपयोगकर्ता दिखेगा. इसका पासवर्ड cloudsql24 (इसका इस्तेमाल बाद में db को ऐक्सेस करने के लिए किया जाएगा) होगा
5. टास्क 3. टेस्ट VM बनाना और उसे डीबी प्रोजेक्ट (Terraform) में मौजूद SQL इंस्टेंस से कनेक्ट करना
आइए, 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 बन जाएगा.
डेटाबेस की पुष्टि करना
इसे उपभोक्ता प्रोजेक्ट में पूरा करें
- VM इंस्टेंस पर जाएं. db-vm-test को चुनें
- वर्चुअल मशीन से कनेक्ट करने के लिए, SSH विकल्प चुनें.
- आपने पहले जो लोकल आईपी कॉपी किया था उसका इस्तेमाल करके, इस कमांड की मदद से डेटाबेस से कनेक्ट करें:
mysql --host=172.18.0.2 --user=testsql --password=cloudsql24
अ.नि. कनेक्ट करने के लिए, आईपी पते को अपने असली आईपी पते पर बदलें.
- कनेक्शन बन जाने के बाद, localvpcsqldb नाम का डेटाबेस बनाएं.
CREATE DATABASE localvpcsqldb;
- कनेक्शन बंद करने के लिए, exit टाइप करें. वीएम को बंद करने के लिए, फिर से exit टाइप करें.
6. टास्क 4. CloudSQL इंस्टेंस पर पीएससी चालू करें
कनेक्टिविटी की अनुमति देने के लिए, पीएससी विकल्प चालू करने के लिए gcloud कमांड का इस्तेमाल करें. इस कॉन्फ़िगरेशन को डेटाबेस प्रोजेक्ट में पूरा करें.
- Cloud Shell व्यू पर स्विच करें.
- Cloud Shell में यह कमांड चलाएं.
- Ensure
YOUR_DB_PROJECT_HEREकी जगह डेटाबेस प्रोजेक्ट आईडी डालें. 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
- इससे मौजूदा डेटाबेस, पीएससी अटैचमेंट के साथ अपडेट हो जाएगा. इसमें 10 मिनट से ज़्यादा समय लगेगा.
अगर आपको इंतज़ार करने के दौरान टाइम आउट होने की गड़बड़ी का मैसेज मिलता है, तो आपको प्रोग्रेस देखने के लिए भी कमांड मिलनी चाहिए. जैसे, "कार्रवाई पूरी होने का इंतज़ार करने के लिए, `gcloud beta sql operations wait –project कमांड चलाएं "
कृपया ध्यान दें कि पीएसए और पीएससी की सुविधा चालू करके, नया डेटाबेस शुरू से ही डिप्लॉय किया जा सकता है.
डेटाबेस की पुष्टि करना
- प्रोसेस पूरी होने के बाद, कंसोल में SQL पर जाएं. इसके बाद, psc-psa-sql-db डेटाबेस इंस्टेंस चुनें.
- बाईं ओर, SQL के विकल्पों को बड़ा करें और कनेक्शन को चुनें
- 'खास जानकारी' टैब में जाकर, कनेक्शन के बारे में जानकारी देखी जा सकती है.
- सर्विस अटैचमेंट का पता कॉपी करें और इसे अपने सिस्टम में कहीं सेव करें.
- अगला टास्क 5 चरण 8 पूरा करने के लिए, आपको इसकी ज़रूरत होगी.

7. टास्क 5. उपभोक्ता प्रोजेक्ट के लिए एनवायरमेंट सेट अप करना (Terraform)
हम कंज्यूमर प्रोजेक्ट में,फ़ायरवॉल के नियमों और सबनेट के साथ कस्टम वीपीसी बनाएंगे. 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 एडिटर व्यू पर स्विच करें. एडिटर को चुनें. पक्का करें कि आपने सभी ज़रूरी प्रॉम्प्ट को अनुमति दी हो, ताकि इंटरफ़ेस लोड हो सके.
- लोड होने के बाद, फ़ाइल > फ़ोल्डर खोलें पर जाएं. इसके बाद, /home/your-user-name/terraform-consumer-psc पर जाएं और ठीक है को चुनें, ताकि फ़ोल्डर को एडिटर में खोला जा सके.

- variable.tf फ़ाइल चुनें और इसमें यह कोड जोड़ें.
your-consumer-project-id-hereटेक्स्ट की जगह, कोटेशन में अपना असल उपयोगकर्ता प्रोजेक्ट आईडी डालें.your-psc-attachment-id-hereटेक्स्ट की जगह, कोटेशन में पीएससी अटैचमेंट का पता डालें. यह वही आईडी है जिसे आपने टास्क 4 के सेक्शन 5-7 में कॉपी किया था
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 फ़ाइल खोलें. हम यहां कुछ टेराफ़ॉर्म कोड जोड़ने जा रहे हैं, ताकि नीचे बताई गई कार्रवाइयां की जा सकें.
एपीआई चालू करना |
|
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. उपयोगकर्ता प्रोजेक्ट में SQL DB अटैचमेंट के लिए PSC एंडपॉइंट बनाएं और VM (Terraform) की जांच करें
इस कॉन्फ़िगरेशन को उपयोगकर्ता के प्रोजेक्ट में पूरा करें.
- वापस Cloud Shell एडिटर पर जाएं. इसके बाद, terraform-consumer-psc डायरेक्ट्री खोलें और
psc.tfफ़ाइल चुनें. फ़ाइल में यह Terraform कोड जोड़ें. इससे एक स्टैटिक इंटरनल आईपी, एक पीएससी एंडपॉइंट, और 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. पीएससी के आईपी पते के ज़रिए, वीएम से एंडपॉइंट कनेक्टिविटी की पुष्टि करना
इसे उपभोक्ता प्रोजेक्ट में पूरा करें
- VM इंस्टेंस पर जाएं. 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 है. यह उपभोक्ता प्रोजेक्ट के VM से दिखेगा. साथ ही, आपको db प्रोजेक्ट के VM से 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 की मदद से बनाए गए आपके db प्रोजेक्ट के ज़्यादातर संसाधन हटा दिए जाएंगे. ऐसा हो सकता है कि सेवा नेटवर्किंग को मिटाया न जा सके और गड़बड़ी का मैसेज दिखे. - इसके बाद, terraform-db-psc फ़ोल्डर से इन फ़ाइलों को मिटाएं.
rm -r terraform.tfstate terraform.tfstate.backup
- इसके बाद, कंसोल में वीपीसी नेटवर्क पर जाएं
- database-net चुनें वीपीसी, PRIVATE SERVICES ACCESS चुनें. इसके बाद, Allocated IP Ranges for Services में जाकर, psa-range-database-net चुनें और Release विकल्प चुनें

- इसके बाद, वीपीएन नेटवर्क पीयरिंग को चुनें. इसके बाद, servicenetworking-googleapis-com को चुनें और मिटाएं विकल्प को चुनें

- इसके बाद, वीपीएन नेटवर्क मिटाएं
को चुनें
12. बधाई हो
बधाई हो, आपने पीएसए और पीएससी अटैचमेंट के साथ Cloud SQL इंस्टेंस को कॉन्फ़िगर कर लिया है. साथ ही, किसी दूसरे वीपीसी में Private Service Connect एंडपॉइंट बना लिया है.
ज़्यादा जानें
Private Service Connect और Cloud SQL के बारे में ज़्यादा जानें
इसी विषय से जुड़ा अन्य कोडलैब: https://codelabs.developers.google.com/codelabs/cloudsql-psc-terraform