Score:1

วิธีกำหนดเส้นทางการรับส่งข้อมูลไปยังบริการ Compute หรือ Cloud Run ตาม URL

ธง jp

ขณะนี้เรามีเว็บแอปที่ทำงานบน Compute VM และกำลังดำเนินการค่อยๆ ย้ายไปยัง Cloud Run (เรากำลังดำเนินการอย่างค่อยเป็นค่อยไปเนื่องจากแบ็กเอนด์ปัจจุบันอยู่ใน PHP และเรากำลังเขียนใหม่ใน Go ทีละจุดปลายทาง)

เว็บไซต์ของเราสามารถเข้าถึงได้เช่น:
https://www.myapp.com
และ API ได้ที่:
https://www.myapp.com/books

แผนของเราคือให้ Cloud Run/Go API ใหม่สามารถเข้าถึงได้ในเส้นทาง 'v2':
https://www.myapp.com/v2/books
หรือบนโดเมนย่อย
https://v2.myapp.com/books
จากนั้นตัดสินใจว่าจะใช้ API ใดในไคลเอนต์โดยพิจารณาจากสิ่งที่ย้ายเสร็จแล้ว

ฉันสงสัยว่าวิธีที่ดีในการทำสิ่งนี้จะเป็นอย่างไร

สิ่งที่ฉันพิจารณา (ในฐานะผู้เริ่มต้น GCP)

  • เรามี nginx ที่ทำงานบน Compute VM อยู่แล้ว ดังนั้นการตั้งค่าพร็อกซีย้อนกลับสำหรับ https://www.myapp.com/v2 ดูเหมือนจะเป็นความคิดที่ดีในตอนแรก แต่ดูเหมือนว่าขณะนี้ยังไม่มีวิธีเข้าถึง Cloud Run จาก Compute ผ่าน IP ส่วนตัว ดังนั้นคำขอจะต้องออกไปทางอินเทอร์เน็ตเพื่อทำให้สิ่งต่าง ๆ ช้าลง (ยังไม่แน่ใจว่าการย้อนกลับพร็อกซีไปยังภายนอก URL จะทำให้เกิดปัญหากับการรับรองความถูกต้อง ฯลฯ ?)

  • กับ https://v2.myapp.com/books ตัวเลือก ดูเหมือนว่าการแมปโดเมนที่กำหนดเองสำหรับ Cloud Run ยังคงอยู่ ปล่อยตัวอย่าง ดังนั้นฉันจึงลังเลที่จะใช้มันในระบบที่ใช้งานจริง นอกจากนี้ เรายังต้องการใช้ใบรับรอง SSL ของเราเองซึ่งดูเหมือนจะไม่รองรับ

  • ตัวเลือกโฮสติ้งของ Firebase ดูเหมือนว่าจะค่อนข้างซับซ้อนและยังมีระยะหมดเวลาของคำขอที่ 60 วินาที ซึ่งสั้นเกินไปสำหรับการอัปโหลดวิดีโอบางรายการ ฯลฯ ที่เราได้รับ

  • ตัวโหลดบาลานเซอร์ไปยัง NEG จะเพิ่มความซับซ้อน/ค่าใช้จ่ายอีกเล็กน้อย แต่นั่นดูเหมือนจะเป็นตัวเลือกอื่น ดูเหมือนว่า NEG แบบไร้เซิร์ฟเวอร์ไม่สามารถเชื่อมต่อกับ Compute และ VM NEG ที่มีการจัดการไม่สามารถเชื่อมต่อกับ Cloud Run ดังนั้นฉันต้องใช้อย่างใดอย่างหนึ่งในกรณีนี้หรือไม่

Goli Nikitha avatar
ng flag
อ้างถึง [เอกสารประกอบ] (https://cloud.google.com/run/docs/configuring/connecting-vpc) สำหรับการใช้ cloud run และ GCE (compute engine) IP ส่วนตัวผ่าน VPC ที่ใช้ร่วมกัน
Score:0
ธง br

แสดงความคิดเห็นด้านล่างสำหรับทั้ง 4 ตัวเลือกที่คุณกล่าวถึง

  • เรามี nginx ที่ทำงานบน Compute VM อยู่แล้ว ดังนั้นการตั้งค่า พร็อกซีย้อนกลับสำหรับ https://www.myapp.com/v2 ดูเหมือนจะเป็นความคิดที่ดีที่ ก่อน แต่ดูเหมือนว่าตอนนี้ยังไม่มีวิธีเข้าถึง Cloud เรียกใช้จาก Compute ผ่าน IP ส่วนตัว ดังนั้นคำขอจะต้องออกไป ทางอินเทอร์เน็ตทำให้สิ่งต่าง ๆ ช้าลง (ไม่แน่ใจว่าย้อนกลับหรือไม่ พร็อกซีไปยัง URL ภายนอกจะทำให้เกิดปัญหากับการรับรองความถูกต้อง ฯลฯ?)

สิ่งนี้ถูกต้องในทางเทคนิค คุณสามารถตั้งค่าบริการ Cloud Run ให้ยอมรับการรับส่งข้อมูลจาก VPC เท่านั้น (เรียกว่าตัวเลือก Ingress คุณสามารถอ่านเกี่ยวกับบริการดังกล่าวได้ในเอกสารที่นี่ [1]) และเมื่อคุณทำเช่นนั้น บริการ Cloud Run ของคุณจะยังคงแสดงต่อสิ่งที่ดูเหมือนจะเป็น URL สาธารณะ (อันที่สร้างขึ้นเมื่อคุณปรับใช้บริการ)แต่ URL นั้นสามารถเข้าถึงได้จาก VPC เท่านั้น และแม้ว่าจะดูเหมือนว่าไคลเอนต์จะทำการโทรไปยังบริการอินเทอร์เน็ต ทราฟฟิกนั้นยังคงอยู่ในเครือข่ายของเราและไม่เคยออกจากแกนหลักของเรา ดังนั้นในทางเทคนิคแล้ว สิ่งนี้ไม่ควรเพิ่มเวลาแฝง

  • กับ https://v2.myapp.com/books ตัวเลือกดูเหมือนว่าการทำแผนที่ โดเมนที่กำหนดเองสำหรับ Cloud Run ยังอยู่ในรุ่นตัวอย่าง ดังนั้นฉันจึง ลังเลว่าจะใช้มันในระบบการผลิตหรือไม่ เราก็ยังต้องการ ชอบใช้ใบรับรอง SSL ของเราเอง ซึ่งดูเหมือนจะไม่ใช่ ได้รับการสนับสนุน.

ฉันจะไม่แนะนำให้ใช้คุณลักษณะการแสดงตัวอย่างในการผลิต เนื่องจากมีความเสี่ยงที่คุณลักษณะจะเปลี่ยนไปในทางที่เข้ากันไม่ได้แบบย้อนกลับ ในหัวข้อการใช้ใบรับรอง SSL ของคุณเอง คุณสามารถปรับใช้ HTTP LoadBalancer ต่อหน้าบริการ Cloud Run ของคุณ (ซึ่งตั้งค่าเป็นส่วนตัว) และปรับแต่ง LoadBalancer ให้เหมาะกับความต้องการของคุณ

  • ตัวเลือกการโฮสต์ Firebase ดูเหมือนว่าจะค่อนข้างซับซ้อน และยังมีระยะหมดเวลาของคำขอที่ 60 ซึ่งสั้นเกินไปสำหรับบางคน การอัปโหลดวิดีโอ ฯลฯ ที่เราได้รับ

ฉันไม่ค่อยคุ้นเคยกับ Firebase

  • ตัวโหลดบาลานเซอร์ไปยัง NEG จะเพิ่มความซับซ้อน/ค่าใช้จ่ายอีกเล็กน้อย แต่นั่นก็เป็นเช่นนั้น น่าจะเป็นอีกทางเลือกหนึ่ง ดูเหมือนว่า NEG แบบไร้เซิร์ฟเวอร์ไม่สามารถทำได้ เชื่อมต่อกับ Compute และ Managed VM NEG จึงไม่สามารถเชื่อมต่อกับ Cloud Run ได้ ฉันต้องการอย่างใดอย่างหนึ่งในกรณีนั้นหรือไม่

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

หวังว่าสิ่งนี้จะช่วยให้แสงสว่างแก่ตัวเลือกของคุณ [1] https://cloud.google.com/run/docs/securing/ingress

jezjez avatar
jp flag
ขอบคุณสำหรับคำตอบ ประเด็นของคุณเกี่ยวกับการโทรผ่านอินเทอร์เน็ตเป็นเรื่องที่น่ารู้ ฉันคิดว่านี่จะทำให้สิ่งต่างๆ ช้าลงมาก แต่ถ้าไม่ ฉันคิดว่าเราอาจใช้ตัวเลือกนั้น ฉันจะตรวจสอบโหลดบาลานเซอร์และ Terraform ให้มากขึ้นด้วย

โพสต์คำตอบ

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