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

1. บทนำ

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

คำนึงถึงความเชื่อมโยง

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

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

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

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

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

ขั้นตอนแต่ละรายการมีดังนี้

  • สร้างอินสแตนซ์ Cloud SQL (บทแนะนำนี้ใช้ Postgres แต่ทำงานคล้ายกับ MySQL หรือเซิร์ฟเวอร์ SQL) และให้สิทธิ์ 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. ป้อนรหัสผ่านสำหรับผู้ใช้เริ่มต้น (ชื่อผู้ใช้จะเป็นค่าเริ่มต้นสำหรับฐานข้อมูลที่เลือก เช่น root สำหรับ MySQL หรือ postgres สำหรับ PostgreSQL)
  4. เลื่อนลงและคลิก show configuration options
  5. ขยายส่วน Connectivity
  6. ตรวจสอบว่าได้เลือก Public IP และยกเลิกการทำเครื่องหมาย Private IP แล้ว
  7. คลิกปุ่ม 883b32ec2734de01.png
  8. รับที่อยู่ IP จากจุดที่คุณเชื่อมต่อ ที่ง่ายที่สุดคือการค้นหาใน Google ว่า "What's my IP" และผลการค้นหามี IP สาธารณะของคุณอยู่
  1. ป้อนข้อมูลจำเพาะของ IP ลงในช่องเครือข่าย ตั้งชื่อตามต้องการ แล้วคลิก "เสร็จสิ้น" ในช่อง New Network
  2. เลื่อนลงแล้วคลิก "สร้าง"

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

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

การใช้ 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 คัดลอกจากขั้นตอนก่อนหน้า> Port=5432 sslmode=disable user=postgres"

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

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

สิ่งที่ต้องทำต่อไป

ลองดู Codelab เหล่านี้...

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