การเชื่อมต่อกับ CloudSQL ผ่าน Private Service Connect (Terraform)

1. ภาพรวม

มีหลายตัวเลือกในการเชื่อมต่อกับอินสแตนซ์ Cloud SQL แบบส่วนตัวจากโปรเจ็กต์หรือ VPC อื่น Private Service Connect (PSC) ช่วยให้ผู้ผลิตบริการสามารถแสดงบริการของตนผ่านไฟล์แนบเกี่ยวกับบริการ ผู้ใช้สามารถใช้การเชื่อมต่อบริการเหล่านี้เพื่อสร้างปลายทาง PSC และ/หรือแบ็กเอนด์ PSC ในสภาพแวดล้อมของตนเอง และเชื่อมต่อกับบริการของผู้ผลิตเหล่านี้ผ่าน IP ส่วนตัวที่ระบุ

Cloud SQL มีความสามารถในการใช้ไฟล์แนบบริการ PSC เพื่ออนุญาตการเชื่อมต่อส่วนตัว ในแล็บนี้ คุณสามารถกำหนดค่าและทดสอบตัวเลือกได้

ในแล็บนี้ คุณจะได้สร้างสถาปัตยกรรมอย่างง่ายที่แสดงให้เห็นการใช้การเข้าถึงปลายทาง PSC กับ Cloud SQL

รูปที่ 1

1893f48fe1298ea2.png

สำหรับแล็บนี้ คุณจะต้องมี 2 โปรเจ็กต์หรือ VPC แยกกันในโปรเจ็กต์เดียวกัน

วัตถุประสงค์

ในแล็บนี้ คุณจะได้เรียนรู้วิธีทำงานต่อไปนี้

  • สร้างอินสแตนซ์ CloudSQL ที่มีการแนบบริการ PSC
  • สร้างที่อยู่ IP แบบคงที่
  • สร้างปลายทาง PSC ใน VPC ของผู้ใช้เพื่อเชื่อมต่อกับฐานข้อมูล CloudSQL
  • ยืนยันการเข้าถึงฐานข้อมูล SQL จาก VM ทดสอบในเครือข่ายของผู้บริโภคผ่าน IP ของปลายทาง PSC

2. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณอัปเดตได้ทุกเมื่อ
  • รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยทั่วไปจะระบุเป็น PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณอาจลองใช้ชื่อของคุณเองและดูว่ามีชื่อนั้นหรือไม่ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์
  • โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
  1. จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้จะไม่มีค่าใช้จ่ายมากนัก หรืออาจไม่มีค่าใช้จ่ายเลย หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

เริ่มต้น Cloud Shell

แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

จาก Google Cloud Console ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

55efc1aaa7a4d3ad.png

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อเสร็จแล้ว คุณควรเห็นข้อความคล้ายกับตัวอย่างต่อไปนี้

7ffe5cbb04455448.png

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดใน Codelab นี้ได้ภายในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไร

3. งานที่ 1 ตั้งค่าสภาพแวดล้อมสำหรับโปรเจ็กต์ฐานข้อมูลด้วย (Terraform)

ในโปรเจ็กต์ฐานข้อมูล เราจะสร้าง VPC ที่กำหนดเองพร้อมกฎไฟร์วอลล์และซับเน็ต เปิด Cloud Console แล้วเลือกโปรเจ็กต์ที่จะใช้สำหรับฐานข้อมูล

  1. เปิด Cloud Shell ที่ด้านบนของคอนโซลทางด้านขวา ตรวจสอบว่าคุณเห็นรหัสโปรเจ็กต์ของฐานข้อมูลสำหรับโปรเจ็กต์ฐานข้อมูลใน Cloud Shell ยืนยันข้อความแจ้งเพื่ออนุญาตการเข้าถึง 4261e776f64ea978.png
  2. สร้างโฟลเดอร์ชื่อ terraform-db แล้วย้ายไปที่โฟลเดอร์
mkdir terraform-db  && cd terraform-db
  1. สร้างไฟล์ main.tf, variable.tf และ database.tf
touch main.tf variable.tf database.tf 
  1. เปลี่ยนไปใช้มุมมองเครื่องมือแก้ไข Cloud Shell เลือกเอดิเตอร์ และตรวจสอบว่าคุณอนุญาตพรอมต์ที่จำเป็นเพื่อให้โหลดอินเทอร์เฟซได้
  2. เมื่อโหลดแล้ว ให้ไปที่ไฟล์ > เปิดโฟลเดอร์ แล้วไปที่ /home/your-user-name/terraform-db แล้วเลือกตกลงเพื่อเปิดโฟลเดอร์ในโปรแกรมแก้ไข 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 เราจะเพิ่มโค้ด Terraform เพื่อดำเนินการต่างๆ ตามที่อธิบายไว้ด้านล่าง

เปิดใช้ API

resource "google_project_service" "default"

สร้าง VPC

resource "google_compute_network" "default"

เพิ่มกฎไฟร์วอลล์

resource "google_compute_firewall" "allow_icmp"

  1. คัดลอกและวางข้อมูลต่อไปนี้ลงในไฟล์ main .tf
resource "google_project_service" "default" {
  for_each = toset([
    "compute.googleapis.com",
    "sqladmin.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_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"]
 }
  1. กลับไปที่เทอร์มินัล Cloud Shell ตรวจสอบว่าคุณอยู่ในไดเรกทอรี terraform-db cd terraform-db แล้วเรียกใช้คำสั่งต่อไปนี้

terraform init

เริ่มต้นไดเรกทอรีการทำงาน ขั้นตอนนี้จะดาวน์โหลดผู้ให้บริการที่จำเป็นสำหรับการกำหนดค่าที่ระบุ

terraform plan

สร้างแผนการดำเนินการ ซึ่งแสดงการดำเนินการที่ Terraform จะใช้เพื่อทำให้โครงสร้างพื้นฐานใช้งานได้

  1. ตอนนี้หากต้องการสร้างทรัพยากร ให้เรียกใช้terraform applyคำสั่งแล้วพิมพ์ yes เพื่อเรียกใช้

4. งานที่ 2 สร้างอินสแตนซ์ Cloud SQL ด้วยการแนบ PSC (Terraform)

มาใช้ Terraform เพื่อสร้างอินสแตนซ์ Cloud SQL โดยใช้ตัวเลือก PSC เพื่ออนุญาตการเชื่อมต่อกัน ทำการกำหนดค่านี้ในโปรเจ็กต์ฐานข้อมูลให้เสร็จสมบูรณ์

  1. เปลี่ยนไปใช้มุมมองเครื่องมือแก้ไข Cloud Shell ตรวจสอบว่าคุณอยู่ในโฟลเดอร์ terraform-db เลือกไฟล์ database.tf แล้วเพิ่มข้อมูลต่อไปนี้
resource "google_sql_database_instance" "default" {
  name             = "psc-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 {
      psc_config {
        psc_enabled               = true
        allowed_consumer_projects = var.project_id_consumer
      }
      ipv4_enabled = false
    }
  }
  deletion_protection = false 
}

resource "google_sql_user" "users" {
  name     = "testsql"
  instance = google_sql_database_instance.default.name
  password = var.db_password 
}
  1. เปลี่ยนกลับไปใช้เทอร์มินัล Cloud Shell และตรวจสอบว่าคุณอยู่ในไดเรกทอรี terraform-db ตอนนี้หากต้องการสร้างทรัพยากร ให้เรียกใช้terraform applyคำสั่งแล้วพิมพ์ yes เพื่อเรียกใช้ การสร้างอินสแตนซ์ CloudSQL ที่มีการแนบ PSC อาจใช้เวลาถึง 5 นาทีขึ้นไป

ยืนยันฐานข้อมูล

  1. หลังจากเสร็จสิ้น ให้ไปที่ SQL ในคอนโซล แล้วเลือกอินสแตนซ์ฐานข้อมูล psc-sql-db ที่สร้างขึ้นใหม่
  2. ทางด้านซ้าย ให้ขยายแถบเลื่อนตัวเลือก SQL และเลือกการเชื่อมต่อ
  3. คุณดูข้อมูลเกี่ยวกับการเชื่อมต่อได้ในแท็บสรุป
  4. คัดลอกที่อยู่ของ Service Attachment แล้วบันทึกไว้ที่ใดที่หนึ่งในระบบ
  5. คุณจะต้องใช้ข้อมูลนี้เพื่อทํางานที่ 3 ขั้นตอนที่ 8 ให้เสร็จสมบูรณ์

Cloud SQL ที่มีสิ่งที่แนบ PSC

  1. ทางด้านซ้าย ให้ขยายแถบเลื่อนตัวเลือก SQL และเลือกผู้ใช้
  2. คุณควรเห็นผู้ใช้ชื่อ testsql ที่มีรหัสผ่าน cloudsql24 (ระบบจะใช้รหัสผ่านนี้เพื่อเข้าถึง db ในภายหลัง)

5. งานที่ 3 ตั้งค่าสภาพแวดล้อมสำหรับโปรเจ็กต์ของผู้บริโภค (Terraform)

ในโปรเจ็กต์ผู้ใช้ เราจะสร้าง VPC ที่กำหนดเองพร้อมกฎไฟร์วอลล์และซับเน็ต เปิด Cloud Console แล้วเลือกโปรเจ็กต์ที่จะใช้

  1. ที่ด้านบนของคอนโซลทางด้านขวาข้างไอคอน Google Cloud ให้คลิกเมนูแบบเลื่อนลง แล้วเลือกแท็บทั้งหมด

แถบโปรเจ็กต์แถบโปรเจ็กต์ 2

  1. เลือกรหัสโปรเจ็กต์ผู้ใช้จากโปรเจ็กต์ที่แสดงเพื่อดำเนินการต่อ
  2. เปิด Cloud Shell ที่ด้านบนของคอนโซลทางด้านขวา ตรวจสอบว่าคุณเห็นรหัสโปรเจ็กต์ผู้ใช้ใน Cloud Shell และยืนยันข้อความแจ้งเพื่ออนุญาตการเข้าถึง
  3. สร้างโฟลเดอร์ชื่อ terraform-consumer แล้วย้ายไปที่โฟลเดอร์
mkdir terraform-consumer  && cd terraform-consumer
  1. สร้างไฟล์ main.tf, variable.tf และ psc.tf
touch main.tf variable.tf psc.tf 
  1. เปลี่ยนไปใช้มุมมองโปรแกรมแก้ไข Cloud Shell สำหรับรหัสโปรเจ็กต์ของผู้ใช้ทั่วไป เลือกเอดิเตอร์ และตรวจสอบว่าคุณอนุญาตพรอมต์ที่จำเป็นเพื่อให้โหลดอินเทอร์เฟซได้
  2. เมื่อโหลดแล้ว ให้ไปที่ไฟล์ > เปิดโฟลเดอร์ แล้วไปที่ /home/your-user-name/terraform-consumer แล้วเลือกตกลงเพื่อเปิดโฟลเดอร์ในโปรแกรมแก้ไข 78f5eb9f2f82f1b0.png
  3. เลือกไฟล์ variable.tf แล้วเพิ่มข้อมูลต่อไปนี้ แทนที่ข้อความ your-consumer-project-id-here ด้วยรหัสโปรเจ็กต์ของผู้ใช้จริงในเครื่องหมายคำพูด แทนที่ข้อความ your-psc-attachment-id-here ด้วยที่อยู่การเชื่อมต่อ PSC ในเครื่องหมายคำพูด นี่คือรหัสที่คุณคัดลอกไว้ในส่วนงานที่ 2 ข้อ 2-5 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-net"
}

variable "region_id" {
  type = string
  default = "us-east1"
}

variable "region_id2" {
  type = string
  default = "us-central1"
}
  1. จากนั้นเปิดไฟล์ main.tf เราจะเพิ่มโค้ด Terraform เพื่อดำเนินการต่างๆ ตามที่อธิบายไว้ด้านล่าง

เปิดใช้ API

resource "google_project_service"

สร้าง VPC

resource "google_compute_network"

สร้างเกตเวย์ NAT

resource "google_compute_router"
resource "google_compute_router_nat"

เพิ่มกฎไฟร์วอลล์

resource "google_compute_firewall"

  1. คัดลอกและวางข้อมูลต่อไปนี้ลงในไฟล์ 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" {
  name          = "vm-subnet"
  ip_cidr_range = "192.168.50.0/24"
  region        = var.region_id2
  network       = google_compute_network.default.name
  project       = var.project_id
}

resource "google_compute_subnetwork" "psc_subnet" {
  name          = "psc-subnet"
  ip_cidr_range = "192.168.90.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_id2
  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. กลับไปที่เทอร์มินัล Cloud Shell ตรวจสอบว่าคุณอยู่ในไดเรกทอรี terraform-consumer cd terraform-consumer ในโปรเจ็กต์ผู้บริโภค แล้วเรียกใช้คำสั่งต่อไปนี้

terraform init

เริ่มต้นไดเรกทอรีการทำงาน ขั้นตอนนี้จะดาวน์โหลดผู้ให้บริการที่จำเป็นสำหรับการกำหนดค่าที่ระบุ

terraform plan

สร้างแผนการดำเนินการ ซึ่งแสดงการดำเนินการที่ Terraform จะใช้เพื่อทำให้โครงสร้างพื้นฐานใช้งานได้

  1. ตอนนี้หากต้องการสร้างทรัพยากร ให้เรียกใช้terraform applyคำสั่งแล้วพิมพ์ yes เพื่อเรียกใช้

6. งานที่ 4 สร้างปลายทาง PSC เพื่อแนบกับ SQL DB ในโปรเจ็กต์ผู้บริโภคและ VM ทดสอบ (Terraform)

กำหนดค่านี้ให้เสร็จสมบูรณ์ในโปรเจ็กต์ของผู้บริโภค

  1. กลับไปที่โปรแกรมแก้ไข Cloud Shell เปิดไดเรกทอรี terraform-consumer แล้วเลือกไฟล์ psc.tf เพิ่มโค้ด Terraform ต่อไปนี้ลงในไฟล์ ซึ่งจะสร้าง IP ภายในแบบคงที่, ปลายทาง PSC และ VM ทดสอบที่ติดตั้ง Maria DB
resource "google_compute_address" "default" {
  name = "psc-ip"
  region = var.region_id
  address_type = "INTERNAL"
  subnetwork = google_compute_subnetwork.psc_subnet.name
  address = "192.168.90.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         = "sql-test-vm"
  machine_type = "e2-medium"
  zone         = "${var.region_id2}-b"
  project      = var.project_id

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    subnetwork = google_compute_subnetwork.vm_subnet.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. กลับไปที่เทอร์มินัล Cloud Shell ตรวจสอบว่าคุณอยู่ในไดเรกทอรี terraform-consumer cd terraform-consumer ในโปรเจ็กต์ผู้บริโภค แล้วเรียกใช้คำสั่งต่อไปนี้

terraform plan

สร้างแผนการดำเนินการ ซึ่งแสดงการดำเนินการที่ Terraform จะใช้เพื่อทำให้โครงสร้างพื้นฐานใช้งานได้

  1. ตอนนี้หากต้องการสร้างทรัพยากร ให้เรียกใช้คำสั่ง terraform apply แล้วพิมพ์ yes เพื่อเรียกใช้
  2. เนื่องจาก VM และปลายทางของเราอยู่ในภูมิภาคที่แตกต่างกัน เราจึงต้องเปิดใช้ การเข้าถึงทั่วโลกในปลายทาง PSC เราจะดำเนินการผ่านคอนโซล
  3. ในคอนโซลโปรเจ็กต์ของผู้บริโภค ให้ไปที่ Private Service Connect ในแท็บปลายทางที่เชื่อมต่อ ให้ดูในส่วนปลายทาง แล้วเลือก psc-sql-endpoint
  4. ตอนนี้ให้เลือกแก้ไข แล้วคลิกช่องทําเครื่องหมายข้างตัวเลือกเปิดใช้การเข้าถึงส่วนกลางและบันทึก 7eeb5a4162f5f79d.png
  5. ไปยังขั้นตอนถัดไปเพื่อยืนยันการเชื่อมต่อ

7. งานที่ 5 ยืนยันการเชื่อมต่อปลายทางจาก VM ผ่านที่อยู่ IP ของ PSC

ดำเนินการนี้ในโปรเจ็กต์ของผู้บริโภค

  1. ไปที่อินสแตนซ์ VM เลือก sql-test-vm
  2. เลือกตัวเลือก SSH เพื่อเชื่อมต่อกับ VM
  3. เชื่อมต่อกับ DB ผ่านปลายทางด้วยข้อมูลต่อไปนี้
mysql --host=192.168.90.100 --user=testsql --password=cloudsql24
  1. เมื่อสร้างการเชื่อมต่อแล้ว ให้สร้างฐานข้อมูลด้วย psc-sql-db ต่อไปนี้
CREATE DATABASE remotesqldb;
  1. เมื่อเสร็จแล้ว ให้พิมพ์ exit เพื่อออกจากการเชื่อมต่อ

8. งานที่ 6 ยืนยันรายการฐานข้อมูล

ทำการยืนยันนี้ให้เสร็จสมบูรณ์ในโปรเจ็กต์ฐานข้อมูล

  1. ที่ด้านบนของคอนโซลทางด้านขวาข้างไอคอน Google Cloud ให้คลิกเมนูแบบเลื่อนลง แล้วเลือกแท็บทั้งหมด

แถบโปรเจ็กต์แถบโปรเจ็กต์ 2

  1. จากโปรเจ็กต์ที่แสดง ให้เลือกรหัสโปรเจ็กต์ฐานข้อมูลเพื่อดำเนินการต่อ
  2. ไปที่ SQL เลือกฐานข้อมูล psc-sql-db ขยายตัวเลือก SQL แล้วเลือกฐานข้อมูล คุณควรเห็นฐานข้อมูลที่เพิ่งสร้างชื่อ remotesqldb จาก VM ของโปรเจ็กต์ผู้ใช้**.**

ฐานข้อมูล Cloud SQL

9. ล้าง

ทําขั้นตอนนี้ในโปรเจ็กต์ฐานข้อมูล

  1. เลือกรหัสโปรเจ็กต์ฐานข้อมูล
  2. ไปที่ Cloud Shell และตรวจสอบว่าคุณเห็นรหัสโปรเจ็กต์ฐานข้อมูล
  3. ไปที่ไดเรกทอรี terraform-db cd terraform-db แล้วเรียกใช้คำสั่งต่อไปนี้ terraform destroy และพิมพ์ yes ระบบจะนำทรัพยากรทั้งหมดที่คุณสร้างในโปรเจ็กต์ db ด้วย Terraform ออก

ดำเนินการนี้ในโปรเจ็กต์ของผู้บริโภค

  1. เลือกรหัสโปรเจ็กต์ผู้บริโภค
  2. ไปที่ Cloud Shell และตรวจสอบว่าคุณเห็นรหัสโปรเจ็กต์ผู้ใช้
  3. ไปที่ไดเรกทอรี terraform-consumer cd terraform-consumer แล้วเรียกใช้คำสั่งต่อไปนี้ terraform destroy และพิมพ์ yes ระบบจะนำทรัพยากรทั้งหมดที่คุณสร้างในโปรเจ็กต์ db ด้วย Terraform ออก

10. ขอแสดงความยินดี

ยินดีด้วย คุณกำหนดค่าอินสแตนซ์ Cloud SQL ด้วยการแนบ PSC และสร้างปลายทาง Private Service Connect ใน VPC อื่นเรียบร้อยแล้ว คุณเชื่อมต่อจาก VM ระยะไกลผ่านปลายทาง PSC ไปยังฐานข้อมูลได้สำเร็จ

ดูข้อมูลเพิ่มเติม

อ่านข้อมูลเพิ่มเติมเกี่ยวกับ Private Service Connect และ Cloud SQL