การเชื่อมต่อกับ Cloud SQL: IP สาธารณะและเครือข่ายที่ได้รับอนุญาต

1. บทนำ

อัปเดตล่าสุด: 04-05-2020

พิจารณาการเชื่อมต่อ

มีแอปพลิเคชันและเฟรมเวิร์กหลายประเภท ในโค้ดแล็บนี้ เราจะพูดถึงการเชื่อมต่อกับ Cloud SQL จากทุกที่ ความสามารถในการเชื่อมต่อจะเปิดใช้โดยการให้สิทธิ์ IP ที่อนุญาตให้เชื่อมต่ออย่างชัดเจน ตัวเลือกนี้อาจเป็นตัวเลือกที่มีความปลอดภัยน้อยที่สุดสำหรับการเชื่อมต่อกับฐานข้อมูล Cloud SQL แต่ก็เป็นตัวเลือกที่ตั้งค่าและเริ่มใช้งานได้ง่ายที่สุดเช่นกัน

บางครั้งก็จำเป็นต้องดำเนินการนี้ในสภาพแวดล้อมการใช้งานจริง แต่หากหลีกเลี่ยงได้ คุณควรเลือกใช้ทางเลือกที่ปลอดภัยกว่า (เช่น ใช้ Cloud SQL Proxy) การตั้งค่านี้เหมาะที่สุดสำหรับการพัฒนาและการทดสอบ

สิ่งที่คุณจะสร้าง

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

คำสั่งจะรวมทั้งคำแนะนำแบบทีละขั้นตอนในการดำเนินการต่างๆ ในคอนโซล GCP รวมถึงคำสั่ง gcloud ที่เทียบเท่าสำหรับการใช้ใน CLI หรือการทำงานอัตโนมัติ

ขั้นตอนแต่ละขั้นตอนมีดังนี้

  • สร้างอินสแตนซ์ Cloud SQL (บทแนะนำนี้ใช้ Postgres แต่จะทำงานคล้ายกันสำหรับ MySQL หรือ SQL Server) และให้สิทธิ์ IP ที่เฉพาะเจาะจงที่ได้รับอนุญาตให้เชื่อมต่อกับอินสแตนซ์

สิ่งที่คุณต้องมี

  • บัญชี GCP ที่คุณมีสิทธิ์เปิดใช้ API และสร้างบริการ
  • ไคลเอ็นต์ Postgres ที่ติดตั้งเพื่อยืนยันการเชื่อมต่อ (หรือไคลเอ็นต์ MySQL หากต้องการใช้ MySQL แทน Postgres)

2. การสร้างอินสแตนซ์ Cloud SQL

Cloud SQL คือข้อเสนอฐานข้อมูลเชิงสัมพันธ์ที่มีการจัดการของเรา โดยรองรับ MySQL, PostgreSQL และเซิร์ฟเวอร์ SQL สำหรับ Codelab นี้ เราจะสร้างฐานข้อมูล Postgres แต่คำสั่งจะคล้ายกันสำหรับทั้ง 3 ฐานข้อมูล

ในคอนโซล

ไปที่หน้า Cloud SQL แล้วคลิกปุ่ม 241836b315e11bf5.png

ดังที่ได้กล่าวไปแล้วว่า Codelab นี้ส่วนใหญ่ใช้ได้กับ SQL ทุกรูปแบบ แต่สำหรับ Codelab นี้ ให้เลือก PostgreSQL

  1. กำหนดรหัสให้แก่อินสแตนซ์
  2. เลือกภูมิภาคที่อยู่ใกล้กับคุณ
  3. ป้อนรหัสผ่านสำหรับผู้ใช้เริ่มต้น (ชื่อผู้ใช้จะเป็นค่าเริ่มต้นสำหรับ DB ที่เลือก เช่น root สำหรับ MySQL หรือ postgres สำหรับ PostgreSQL)
  4. เลื่อนลงแล้วคลิก show configuration options
  5. ขยายส่วน Connectivity
  6. ตรวจสอบว่าได้เลือก Public IP และไม่ได้เลือก Private IP
  7. คลิกปุ่ม 883b32ec2734de01.png
  8. รับที่อยู่ IP จากตำแหน่งที่คุณเชื่อมต่อ วิธีที่ง่ายที่สุดคือการค้นหาใน Google ว่า "IP ของฉันคืออะไร" แล้วผลการค้นหาจะแสดง IP สาธารณะของคุณ
  1. ป้อนข้อกำหนด IP ลงในช่องเครือข่าย ตั้งชื่อหากต้องการ แล้วคลิกเสร็จสิ้นในช่อง New Network
  2. เลื่อนลงแล้วคลิกสร้าง

โดยปกติแล้วอินสแตนซ์จะใช้เวลา 2-3 นาทีในการเริ่มต้น

เมื่อสร้างอินสแตนซ์เสร็จแล้ว ให้คลิกอินสแตนซ์ในรายการ แล้วคัดลอก public IP address ที่แสดงในหน้าภาพรวมใต้ส่วนหัว Connect to this instance โดยจะยังไม่ปรากฏจนกว่าจะสร้างอินสแตนซ์เสร็จสมบูรณ์ แม้ว่าคุณจะคลิกดูรายละเอียดก่อนที่จะสร้างอินสแตนซ์เสร็จสมบูรณ์ได้ก็ตาม

การใช้ gcloud

ก่อนอื่น คุณต้องรับที่อยู่ IP ที่ต้องการให้สิทธิ์เชื่อมต่อกับอินสแตนซ์ Cloud SQL วิธีที่ง่ายที่สุดคือการเปิดเบราว์เซอร์ แล้วค้นหา "IP ของฉันคืออะไร" จากนั้นผลการค้นหาจะแสดงที่อยู่ IP สาธารณะของคุณ หากคุณไม่มีสิทธิ์เปิดเบราว์เซอร์จากตำแหน่งที่คุณกำลังดำเนินการนี้ คุณสามารถใช้ยูทิลิตี เช่น dig

dig @resolver1.opendns.com ANY myip.opendns.com +short -4

คุณจะต้องระบุภูมิภาคสำหรับอินสแตนซ์ Cloud SQL ที่อยู่ใกล้กับคุณมากที่สุด คุณดูรายการภูมิภาคได้โดยเรียกใช้คำสั่งต่อไปนี้

gcloud sql tiers list

แต่ละระดับพร้อมให้บริการในบางภูมิภาคเท่านั้น สำหรับส่วน gcloud ของบทแนะนำ เราจะสร้างอินสแตนซ์ขนาดเล็กเท่านั้น คุณจึงดูภูมิภาคสำหรับระดับนี้ได้โดยการเรียกใช้คำสั่งต่อไปนี้ (ตราบใดที่คุณติดตั้ง grep ไว้)

gcloud sql tiers list | grep db-f1-micro

จากนั้นคำสั่งในการสร้างอินสแตนซ์จะมีลักษณะดังนี้ (อย่าลืมแทนที่ <AUTHORIZED_IP > ด้วย IP ที่คุณได้รับจากเบราว์เซอร์หรือ dig และ<REGION > ด้วยภูมิภาคที่อยู่ใกล้คุณ รวมถึงรหัสผ่านสำหรับผู้ใช้รูท"postgres")

gcloud sql instances create sql-codelab-00 --database-version=POSTGRES_11 --tier=db-f1-micro --region=<REGION> --authorized-networks=<AUTHORIZED_IP> --root-password=<PASSWORD>

ขั้นตอนนี้ใช้เวลาไม่กี่นาที

เมื่อเสร็จแล้ว เอาต์พุตใน CLI จะมี PRIMARY_ADDRESS ของอินสแตนซ์แสดงอยู่ คัดลอกไว้สำหรับขั้นตอนถัดไป

3. ทดสอบการเชื่อมต่อและสรุป

หากต้องการยืนยันว่าตั้งค่าอินสแตนซ์อย่างถูกต้องแล้ว ให้เรียกใช้คำสั่งต่อไปนี้ในบรรทัดคำสั่งจากเครื่องที่มีที่อยู่ IP ที่คุณป้อน

psql "host=<IP copied from previous step> port=5432 sslmode=disable user=postgres"

จากนั้นระบุรหัสผ่านของผู้ใช้เริ่มต้นที่คุณตั้งค่าไว้เมื่อสร้างอินสแตนซ์ Cloud SQL

ยินดีด้วย หากทุกอย่างเป็นไปด้วยดี คุณควรมีพรอมต์ Postgres และเรียกใช้คำสั่งกับฐานข้อมูลได้

สิ่งต่อไปที่ควรทำ

ลองใช้ Codelab เหล่านี้

เอกสารอ้างอิง