PSA (Terraform) চলমান বিদ্যমান ক্লাউড SQL ইন্সট্যান্সে ব্যক্তিগত পরিষেবা সংযোগ সক্ষম করুন

1. ওভারভিউ

অন্য প্রকল্প বা ভিপিসি নেটওয়ার্ক থেকে একটি ব্যক্তিগত ক্লাউড এসকিউএল ইন্সট্যান্সের সাথে সংযোগ করার জন্য বিভিন্ন বিকল্প রয়েছে৷ আপনি ব্যক্তিগত সংযোগের মাধ্যমে Google এবং তৃতীয় পক্ষের পরিষেবাগুলির অভ্যন্তরীণ IP ঠিকানাগুলিতে পৌঁছানোর জন্য ব্যক্তিগত পরিষেবা অ্যাক্সেস (PSA) ব্যবহার করতে পারেন৷ ডাটাবেসে অ্যাক্সেস প্রসারিত করতে আপনি এখন প্রাইভেট সার্ভিস কানেক্ট (PSC) সক্ষম করতে পারেন।

প্রাইভেট সার্ভিস কানেক্ট (PSC) পরিষেবা উত্পাদকদের পরিষেবা সংযুক্তির মাধ্যমে তাদের পরিষেবাগুলি প্রকাশ করতে দেয়, যা গ্রাহকরা তাদের পরিবেশে PSC এন্ডপয়েন্ট এবং/অথবা PSC ব্যাকএন্ড তৈরি করতে ব্যবহার করতে পারেন। এই PSC এন্ডপয়েন্টগুলির মাধ্যমে তারা ব্যবহারকারীর নির্দিষ্ট ব্যক্তিগত আইপির মাধ্যমে প্রযোজক পরিষেবাগুলির সাথে সংযোগ করতে পারে।

এই ল্যাবে আপনি বিকল্পটি কনফিগার এবং পরীক্ষা করতে পারেন।

এই ল্যাবে, আপনি একটি সাধারণ আর্কিটেকচার তৈরি করতে যাচ্ছেন যা ক্লাউডএসকিউএল-এর সাথে PSA এবং PSC এন্ডপয়েন্ট অ্যাক্সেসের ব্যবহারকে চিত্রিত করে।

চিত্র 1.

e0e0f83704cc9d62.png

এই ল্যাবের জন্য, আপনার একই প্রকল্পে দুটি প্রকল্প বা পৃথক ভিপিসি লাগবে

উদ্দেশ্য

এই ল্যাবে আপনি নিম্নলিখিত কাজগুলি কীভাবে সম্পাদন করবেন তা শিখবেন:

  • পরিষেবা নেটওয়ার্কিং সক্ষম করুন৷
  • PSA সেট আপ করুন
  • PSA দিয়ে একটি CloudSQL উদাহরণ তৈরি করুন
  • PSC পরিষেবা সংযুক্তি সক্ষম করুন৷
  • ক্লাউডএসকিউএল ডাটাবেসের সাথে সংযোগ করতে ভোক্তা ভিপিসি-তে একটি PSC এন্ডপয়েন্ট তৈরি করুন
  • প্রযোজক এবং ভোক্তা VPC উভয় ক্ষেত্রেই টেস্ট VM থেকে SQL ডাটাবেসের অ্যাক্সেস যাচাই করুন

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
  • প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত PROJECT_ID হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে।
  • আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ হবে না, যদি কিছু হয়। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে সংস্থানগুলি বন্ধ করতে, আপনি আপনার তৈরি করা সংস্থানগুলি মুছতে বা প্রকল্প মুছতে পারেন। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউড শেল শুরু করুন

যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি Google ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড লাইন পরিবেশ যা ক্লাউডে চলছে।

Google ক্লাউড কনসোল থেকে, উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

55efc1aaa7a4d3ad.png

পরিবেশের ব্যবস্থা করতে এবং সংযোগ করতে এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে। এটি সমাপ্ত হলে, আপনি এই মত কিছু দেখতে হবে:

7ffe5cbb04455448.png

এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারে করা যেতে পারে। আপনার কিছু ইন্সটল করার দরকার নেই।

3. টাস্ক 1. (Terraform) এর সাথে ডাটাবেস প্রকল্পের জন্য পরিবেশ সেটআপ করুন

ডাটাবেস প্রকল্পে, আমরা পরিষেবা নেটওয়ার্কিং সক্ষম করব, একটি VPC তৈরি করব, একটি PSA পরিসর তৈরি করব, একটি পরিষেবা নেটওয়ার্কিং পিয়ারিং তৈরি করব এবং ফায়ারওয়াল নিয়ম তৈরি করব। ক্লাউড কনসোল খুলুন এবং ডাটাবেসের জন্য আপনি যে প্রকল্পটি ব্যবহার করবেন সেটি নির্বাচন করুন।

  1. ডানদিকে আপনার কনসোলের শীর্ষে অবস্থিত ক্লাউড শেল খুলুন, নিশ্চিত করুন যে আপনি ক্লাউড শেল-এ ডাটাবেস প্রকল্পের জন্য ডেটাবেস প্রকল্প আইডি দেখতে পাচ্ছেন, অ্যাক্সেসের অনুমতি দেওয়ার জন্য যেকোনো প্রম্পট নিশ্চিত করুন। 4261e776f64ea978.png
  2. terraform-db-psc নামে একটি ফোল্ডার তৈরি করুন এবং ফোল্ডারে যান
mkdir terraform-db-psc  && cd terraform-db-psc
  1. একটি main.tf, variable.tf, nat-vm.tf এবং database.tf ফাইল তৈরি করুন।
touch main.tf variable.tf nat-vm.tf database.tf 
  1. ক্লাউড শেল এডিটর ভিউতে যান। সম্পাদক নির্বাচন করুন, নিশ্চিত করুন যে আপনি যেকোন প্রয়োজনীয় প্রম্পটের অনুমতি দিয়েছেন যাতে ইন্টারফেস লোড হতে পারে।
  2. একবার লোড হলে নেভিগেট করুন, ফাইল > ফোল্ডার খুলুন এবং /home/your-user-name/terraform-db-psc এ যান এবং সম্পাদকে ফোল্ডারটি খুলতে ওকে নির্বাচন করুন। 78f5eb9f2f82f1b0.png
  3. 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"
}
  1. এরপর, main.tf ফাইলটি খুলুন। আমরা নীচে ব্যাখ্যা অনুযায়ী বিভিন্ন ক্রিয়া সম্পাদনের জন্য কিছু টেরাফর্ম কোড যোগ করতে যাচ্ছি।

এপিআই সক্ষম করুন

resource "google_project_service" "default"

ভিপিসি তৈরি করুন

resource "google_compute_network" "default"

ফায়ারওয়াল নিয়ম যোগ করুন

resource "google_compute_firewall" "allow_icmp"

PSA পরিসীমা তৈরি করুন

resource "google_compute_global_address" "psa_range"

একটি পিয়ারিং তৈরি করুন

resource "google_service_networking_connection" "private_connection"

  1. কপি এবং প্রধান .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
}
  1. ক্লাউড শেল টার্মিনালে ফিরে যান নিশ্চিত করুন যে আপনি টেরাফর্ম-ডিবি-পিএসসি ডিরেক্টরি cd terraform-db-psc আছেন এবং নিম্নলিখিত কমান্ডগুলি চালান

terraform init

ওয়ার্কিং ডিরেক্টরি শুরু করে। এই ধাপটি প্রদত্ত কনফিগারেশনের জন্য প্রয়োজনীয় প্রদানকারীদের ডাউনলোড করে।

terraform plan

আপনার পরিকাঠামো স্থাপনের জন্য Terraform কী পদক্ষেপ নেবে তা দেখায় একটি কার্যকরী পরিকল্পনা তৈরি করে।

  1. এখন রিসোর্স তৈরি করতে terraform apply কমান্ড দিন এবং রান করতে yes টাইপ করুন।

4. টাস্ক 2. PSA (Terraform) দিয়ে CloudSQL ইন্সট্যান্স তৈরি করুন

সংযোগের অনুমতি দেওয়ার জন্য পিএসএ বিকল্পের সাথে একটি ক্লাউডএসকিউএল উদাহরণ তৈরি করতে টেরাফর্ম ব্যবহার করা যাক। ডাটাবেস প্রকল্পে এই কনফিগারেশনটি সম্পূর্ণ করুন।

  1. ক্লাউড শেল এডিটর ভিউতে যান। আপনি 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 
}

  1. ক্লাউড শেল টার্মিনালে ফিরে যান, নিশ্চিত করুন যে আপনি terraform-db-psc ডিরেক্টরিতে আছেন। এখন রিসোর্স তৈরি করতে terraform apply কমান্ড দিন এবং রান করতে yes টাইপ করুন। PSA এর সাথে CloudSQL ইনস্ট্যান্স তৈরি করতে 15+ মিনিট সময় লাগতে পারে।

ডাটাবেস যাচাই করুন

  1. সমাপ্তির পরে, কনসোলে এসকিউএল- এ যান, নতুন তৈরি psc-psa-sql-db ডাটাবেস উদাহরণ নির্বাচন করুন।
  2. বাম দিকে SQL অপশন স্লাইডআউট প্রসারিত করুন এবং সংযোগ নির্বাচন করুন
  3. সারাংশ ট্যাবের অধীনে আপনি সংযোগ সম্পর্কে তথ্য দেখতে পারেন।
  4. অভ্যন্তরীণ আইপি ঠিকানা অনুলিপি করুন এবং এটি আপনার সিস্টেমে কোথাও সংরক্ষণ করুন। আপনি দেখতে পাচ্ছেন যে এটি আমাদের সংরক্ষিত পরিসর থেকে বরাদ্দ করা হয়েছিল।
  5. টাস্ক 3 ধাপ 5 সম্পূর্ণ করতে আপনার এই আইপির প্রয়োজন হবে।

5c00f08b0f44c957.png

  1. বাম দিকে এসকিউএল অপশন স্লাইডআউট প্রসারিত করুন এবং ব্যবহারকারী নির্বাচন করুন।
  2. আপনি পাসওয়ার্ড Cloudsql24 সহ testsql নামে একটি ব্যবহারকারী দেখতে পাবেন (এটি পরে db অ্যাক্সেস করতে ব্যবহার করা হবে)

5. টাস্ক 3. টেস্ট VM তৈরি করুন এবং db প্রোজেক্ট (Terraform) থেকে এসকিউএল ইনস্ট্যান্সের সাথে সংযোগ করুন

আসুন একটি পরীক্ষা VM এবং NAT গেটওয়ে তৈরি করতে Terraform ব্যবহার করি। ডাটাবেস প্রকল্পে এই কনফিগারেশনটি সম্পূর্ণ করুন।

  1. ক্লাউড শেল এডিটর ভিউতে যান। আপনি 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
}
  1. ক্লাউড শেল টার্মিনালে ফিরে যান, নিশ্চিত করুন যে আপনি terraform-db-psc ডিরেক্টরিতে আছেন। এখন রিসোর্স তৈরি করতে terraform plan, then terraform apply কমান্ড দিন এবং রান করতে yes টাইপ করুন। এটি মারিয়াডিবি ইনস্টল সহ একটি NAT গেটওয়ে এবং VM তৈরি করবে।

ডাটাবেস যাচাই করুন

ভোক্তা প্রকল্পে এটি সম্পূর্ণ করুন

  1. ভিএম ইনস্ট্যান্সে যান। ডিবি-ভিএম-টেস্ট নির্বাচন করুন
  2. VM এর সাথে সংযোগ করতে SSH বিকল্পটি নির্বাচন করুন।
  3. আপনি নিম্নলিখিতগুলির সাথে আগে অনুলিপি করা স্থানীয় আইপির মাধ্যমে DB-তে সংযোগ করুন:
mysql --host=172.18.0.2 --user=testsql --password=cloudsql24

ps সংযোগ করার জন্য আপনার আসল আইপিতে আইপি ঠিকানা পরিবর্তন করুন।

  1. সংযোগ স্থাপন করা হলে নিম্নলিখিত localvpcsqldb দিয়ে একটি ডাটাবেস তৈরি করা যাক।
CREATE DATABASE localvpcsqldb;
  1. একবার সম্পূর্ণ হলে সংযোগ থেকে প্রস্থান করতে প্রস্থান করুন টাইপ করুন। VM বন্ধ করতে আবার exit টাইপ করুন।

6. টাস্ক 4. CloudSQL উদাহরণে PSC সক্ষম করুন৷

সংযোগের অনুমতি দেওয়ার জন্য PSC বিকল্পটি সক্রিয় করতে gcloud কমান্ড ব্যবহার করা যাক। ডাটাবেস প্রকল্পে এই কনফিগারেশনটি সম্পূর্ণ করুন।

  1. ক্লাউড শেল ভিউতে যান।
  2. ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
  • ডাটাবেস প্রকল্প আইডি দিয়ে 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
  1. এটি পিএসসি সংযুক্তি সহ বিদ্যমান ডাটাবেস আপডেট করবে। এতে 10+ মিনিট সময় লাগবে।

যদি আপনি একটি টাইমআউট অপেক্ষার ত্রুটি পান তবে এটি আপনাকে অগ্রগতি দেখতে অবিরত করার জন্য নির্দেশ দেবে। "আপনি জিক্লাউড বিটা এসকিউএল অপারেশন অপেক্ষা -প্রজেক্ট চালিয়ে অপারেশনের জন্য অপেক্ষা চালিয়ে যেতে পারেন " এর মতো কিছু

অনুগ্রহ করে মনে রাখবেন আপনি শুরু থেকেই PSA এবং PSC সক্ষম করে একটি নতুন ডাটাবেস স্থাপন করতে পারেন।

ডাটাবেস যাচাই করুন

  1. সমাপ্তির পরে, কনসোলে এসকিউএল- এ যান, psc-psa-sql-db ডাটাবেস উদাহরণ নির্বাচন করুন।
  2. বাম দিকে SQL অপশন স্লাইডআউট প্রসারিত করুন এবং সংযোগ নির্বাচন করুন
  3. সারাংশ ট্যাবের অধীনে আপনি সংযোগ সম্পর্কে তথ্য দেখতে পারেন।
  4. পরিষেবা সংযুক্তি ঠিকানাটি অনুলিপি করুন এবং এটি আপনার সিস্টেমে কোথাও সংরক্ষণ করুন৷
  5. পরবর্তী কাজ 5 ধাপ 8 সম্পূর্ণ করতে আপনার এটির প্রয়োজন হবে।

2cf5ce71eceea326.png

7. টাস্ক 5. ভোক্তা প্রকল্পের জন্য পরিবেশ সেটআপ করুন (টেরাফর্ম)

ভোক্তা প্রকল্পে, আমরা ফায়ারওয়াল নিয়ম এবং সাবনেট সহ একটি কাস্টম VPC তৈরি করব। ক্লাউড কনসোল খুলুন এবং আপনি যে প্রকল্পটি ব্যবহার করবেন সেটি নির্বাচন করুন।

  1. Google ক্লাউড আইকনের পাশে ডানদিকে আপনার কনসোলের শীর্ষে, ড্রপডাউনে ক্লিক করুন এবং তারপরে সমস্ত ট্যাব নির্বাচন করুন৷

প্রকল্প বারপ্রকল্প বার 2

  1. তালিকাভুক্ত প্রকল্পগুলি থেকে চালিয়ে যেতে আপনার ভোক্তা প্রকল্প আইডি নির্বাচন করুন৷
  2. ডানদিকে আপনার কনসোলের শীর্ষে অবস্থিত ক্লাউড শেল খুলুন, নিশ্চিত করুন যে আপনি ক্লাউড শেলে ভোক্তা প্রকল্প আইডি দেখতে পাচ্ছেন, অ্যাক্সেসের অনুমতি দেওয়ার জন্য যেকোন প্রম্পট নিশ্চিত করুন।
  3. terraform-consumer-psc নামে একটি ফোল্ডার তৈরি করুন এবং ফোল্ডারে যান
mkdir terraform-consumer-psc  && cd terraform-consumer-psc
  1. একটি main.tf, variable.tf এবং psc.tf ফাইল তৈরি করুন।
touch main.tf variable.tf psc.tf 
  1. গ্রাহক প্রকল্প আইডির জন্য ক্লাউড শেল এডিটর ভিউতে যান। সম্পাদক নির্বাচন করুন, নিশ্চিত করুন যে আপনি যেকোন প্রয়োজনীয় প্রম্পটের অনুমতি দিয়েছেন যাতে ইন্টারফেস লোড হতে পারে।
  2. একবার লোড হলে নেভিগেট করুন, ফাইল > ফোল্ডার খুলুন এবং /home/your-user-name/terraform-consumer-psc- এ যান এবং সম্পাদকে ফোল্ডারটি খুলতে Ok নির্বাচন করুন। 78f5eb9f2f82f1b0.png
  3. variable.tf ফাইলটি নির্বাচন করুন এবং নিম্নলিখিত যোগ করুন। your-consumer-project-id-here your-psc-attachment-id-here আপনার প্রকৃত ভোক্তা প্রকল্প আইডি দিয়ে প্রতিস্থাপন করুন এই আইডিটি আপনি টাস্ক 4 সেকশন 5-7 এ কপি করেছেন d7ac9629a59abfc6.png
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"
}

  1. এরপর, main.tf ফাইলটি খুলুন। আমরা নীচে ব্যাখ্যা অনুযায়ী বিভিন্ন ক্রিয়া সম্পাদনের জন্য কিছু টেরাফর্ম কোড যোগ করতে যাচ্ছি।

এপিআই সক্ষম করুন

resource "google_project_service"

ভিপিসি তৈরি করুন

resource "google_compute_network"

NAT গেটওয়ে তৈরি করুন

resource "google_compute_router"
resource "google_compute_router_nat"

ফায়ারওয়াল নিয়ম যোগ করুন

resource "google_compute_firewall"

  1. কপি এবং প্রধান .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"]
 }
  1. ক্লাউড শেল টার্মিনালে ফিরে যান নিশ্চিত করুন যে আপনি ভোক্তা প্রকল্পের টেরাফর্ম-গ্রাহক-পিএসসি ডিরেক্টরি cd terraform-consumer-psc আছেন এবং নিম্নলিখিত কমান্ডগুলি চালান

terraform init

ওয়ার্কিং ডিরেক্টরি শুরু করে। এই ধাপটি প্রদত্ত কনফিগারেশনের জন্য প্রয়োজনীয় প্রদানকারীদের ডাউনলোড করে।

terraform plan

আপনার পরিকাঠামো স্থাপনের জন্য Terraform কী পদক্ষেপ নেবে তা দেখায় একটি কার্যকরী পরিকল্পনা তৈরি করে।

  1. এখন রিসোর্স তৈরি করতে terraform apply কমান্ড দিন এবং রান করতে yes টাইপ করুন।

8. টাস্ক 6. কনজিউমার প্রোজেক্টে SQL DB অ্যাটাচমেন্টে PSC এন্ডপয়েন্ট তৈরি করুন এবং VM (Terraform) পরীক্ষা করুন

ভোক্তা প্রকল্পে এই কনফিগারেশনটি সম্পূর্ণ করুন।

  1. ক্লাউড শেল সম্পাদকে ফিরে যান, terraform-consumer-psc ডিরেক্টরি খুলুন এবং psc.tf ফাইলটি নির্বাচন করুন। ফাইলে নিম্নলিখিত Terraform কোড যোগ করুন। এটি একটি স্থির অভ্যন্তরীণ আইপি তৈরি করে, একটি পিএসসি এন্ডপয়েন্ট এবং মারিয়া ডিবি ইনস্টল সহ একটি পরীক্ষা VM তৈরি করে৷
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
}
  1. ক্লাউড শেল টার্মিনালে ফিরে যান নিশ্চিত করুন যে আপনি ভোক্তা প্রকল্পের টেরাফর্ম-গ্রাহক-পিএসসি ডিরেক্টরি cd terraform-consumer-psc আছেন এবং নিম্নলিখিত কমান্ডগুলি চালান

terraform plan

আপনার পরিকাঠামো স্থাপনের জন্য Terraform কী পদক্ষেপ নেবে তা দেখায় একটি কার্যকরী পরিকল্পনা তৈরি করে।

  1. এখন রিসোর্স তৈরি করতে terraform apply কমান্ড দিন এবং রান করতে yes টাইপ করুন

9. টাস্ক 7. PSC IP ঠিকানার মাধ্যমে VM থেকে এন্ডপয়েন্ট সংযোগ যাচাই করুন

ভোক্তা প্রকল্পে এটি সম্পূর্ণ করুন

  1. ভিএম ইনস্ট্যান্সে যান। remote-sql-test-vm নির্বাচন করুন
  2. VM এর সাথে সংযোগ করতে SSH বিকল্পটি নির্বাচন করুন।
  3. নিম্নলিখিতগুলির সাথে এন্ডপয়েন্টের মাধ্যমে ডিবির সাথে সংযোগ করুন:
mysql --host=192.168.100.100 --user=testsql --password=cloudsql24
  1. সংযোগ স্থাপন করা হলে নিম্নলিখিত psc-sql-db দিয়ে একটি ডাটাবেস তৈরি করুন।
CREATE DATABASE remotepscpsasqldb;
  1. একবার সম্পূর্ণ হলে সংযোগ থেকে প্রস্থান করতে প্রস্থান করুন টাইপ করুন। VM বন্ধ করতে আবার exit টাইপ করুন।

10. টাস্ক 8. ডাটাবেস এন্ট্রি যাচাই করুন

ডাটাবেস প্রকল্পে এই যাচাইকরণ সম্পূর্ণ করুন

  1. Google ক্লাউড আইকনের পাশে ডানদিকে আপনার কনসোলের শীর্ষে, ড্রপডাউনে ক্লিক করুন এবং তারপরে সমস্ত ট্যাব নির্বাচন করুন৷

প্রকল্প বারপ্রকল্প বার 2

  1. তালিকাভুক্ত প্রকল্পগুলি থেকে চালিয়ে যেতে আপনার ডাটাবেস প্রকল্প আইডি নির্বাচন করুন।
  2. SQL- এ নেভিগেট করুন, ডাটাবেস psc-psa-sql-db নির্বাচন করুন, SQL বিকল্পগুলি প্রসারিত করুন এবং ডেটাবেস নির্বাচন করুন। আপনি ভোক্তা প্রকল্প VM থেকে remotepscpsasqldb নামে তৈরি করা ডাটাবেস এবং db প্রকল্প VM** থেকে localvpcsqldb দেখতে পাবেন . **

36f5c03124ca20f6.png

11. পরিষ্কার করুন

ভোক্তা প্রকল্পে এটি সম্পূর্ণ করুন

  1. ভোক্তা প্রকল্প আইডি নির্বাচন করুন
  2. ক্লাউড শেল- এ যান নিশ্চিত করুন যে আপনি ভোক্তা প্রকল্প আইডি দেখতে পাচ্ছেন
  3. terraform-consumer-psc ডিরেক্টরিতে যান cd terraform-consumer-psc এবং নিম্নলিখিত কমান্ডটি চালান terraform destroy এবং yes টাইপ করুন আপনার টেরাফর্মের সাথে আপনার ভোক্তা প্রকল্পে তৈরি করা সমস্ত সংস্থান মুছে ফেলা হবে।

ডেটাবেস প্রকল্পে এটি সম্পূর্ণ করুন

  1. ডাটাবেস প্রকল্প আইডি নির্বাচন করুন
  2. ক্লাউড শেল এ যান নিশ্চিত করুন যে আপনি ডাটাবেস প্রকল্প আইডি দেখতে পাচ্ছেন
  3. terraform-db-psc ডিরেক্টরিতে যান cd terraform-db-psc এবং নিচের কমান্ডটি চালান terraform destroy এবং yes টাইপ করুন আপনার টেরাফর্মের সাথে আপনার db প্রকল্পে তৈরি বেশিরভাগ সংস্থান মুছে ফেলা হবে। পরিষেবা নেটওয়ার্কিং মুছে ফেলা এবং একটি ত্রুটি দিতে পারে না.
  4. এরপর টেরাফর্ম-ডিবি-পিএসসি ফোল্ডার থেকে নিম্নলিখিত ফাইলগুলি মুছুন।
rm -r terraform.tfstate terraform.tfstate.backup
  1. পরবর্তী কনসোলে ভিপিসি নেটওয়ার্কগুলিতে যান
  2. ডেটাবেস-নেট ভিপিসি নির্বাচন করুন , ব্যক্তিগত পরিষেবা অ্যাক্সেস নির্বাচন করুন, পরিষেবাগুলির জন্য বরাদ্দকৃত আইপি রেঞ্জের অধীনে, psa-রেঞ্জ-ডাটাবেস-নেট নির্বাচন করুন এবং রিলিজ বিকল্পটি নির্বাচন করুন

e4dbfa8953c5b036.png

  1. এরপর VPC NETWORK PEERING নির্বাচন করুন, servicenetworking-googleapis-com নির্বাচন করুন এবং মুছুন বিকল্পটি নির্বাচন করুন

4deab14044461d2d.png

  1. এরপরে, ভিপিসি নেটওয়ার্ক মুছুন নির্বাচন করুন 2f4e96399b73d405.png

12. অভিনন্দন

অভিনন্দন, আপনি PSA এবং PSC সংযুক্তি সহ একটি ক্লাউড SQL ইন্সট্যান্স সফলভাবে কনফিগার করেছেন এবং অন্য VPC-তে একটি ব্যক্তিগত পরিষেবা সংযোগ এন্ডপয়েন্ট তৈরি করেছেন৷

আরও জানুন

আপনি প্রাইভেট সার্ভিস কানেক্ট এবং ক্লাউড এসকিউএল সম্পর্কে আরও পড়তে পারেন

অন্যান্য সম্পর্কিত কোডল্যাব: https://codelabs.developers.google.com/codelabs/cloudsql-psc-terraform