Score:0

ตัวแปร URL แบ็กเอนด์ไม่ชี้ไปที่พอร์ตที่ถูกต้อง

ธง in

ฉันเพิ่งปรับใช้พ็อดส่วนหน้าและแบ็กเอนด์ และมีปัญหาเกี่ยวกับการเชื่อมต่อระหว่างพ็อดทั้งสอง

พ็อดแบ็กเอนด์ได้รับการกำหนดค่าด้วยวิธีต่อไปนี้:

api เวอร์ชัน: v1
ชนิด: ฝัก
ข้อมูลเมตา:
  ชื่อ: af-backend-pod
  ป้ายกำกับ:
    ชื่อ: af-backend-pod
    แอพ: adv-format
ข้อมูลจำเพาะ:
  ตู้คอนเทนเนอร์:
  - ชื่อ: af-แบ็กเอนด์
    รูปภาพ: localhost:5000/แบ็กเอนด์:1.2
    พอร์ต:
    - พอร์ตคอนเทนเนอร์: 4040
    สภาพแวดล้อม:
    - ชื่อ: NODE_ENV
      ค่า: "ทดสอบ"

บริการของพ็อดแบ็กเอนด์:

api เวอร์ชัน: v1
ชนิด:บริการ
ข้อมูลเมตา:
  ชื่อ: af-แบ็กเอนด์
  ป้ายกำกับ:
    ชื่อ: af-backend-service
    แอพ: adv-format
ข้อมูลจำเพาะ:
  พอร์ต:
  - พอร์ต: 4040
    พอร์ตเป้าหมาย: 6011
  ตัวเลือก:
    ชื่อ: af-backend-pod
    แอพ: adv-format

ปัญหาเกิดขึ้นเมื่อส่วนหน้าพยายามเรียกส่วนหลังโดยใช้ชื่อที่กำหนดไว้ในการกำหนดค่าพ็อด:

api เวอร์ชัน: v1
ชนิด: ฝัก
ข้อมูลเมตา:
  ชื่อ: af-frontend-pod
  ป้ายกำกับ:
    ชื่อ: af-frontend-pod
    แอพ: adv-format
ข้อมูลจำเพาะ:
  ตู้คอนเทนเนอร์:
  - ชื่อ: af-frontend
    รูปภาพ: localhost:5000/ส่วนหน้า:1.1
    พอร์ต:
    - ตู้คอนเทนเนอร์พอร์ต: 80
    สภาพแวดล้อม:
    - ชื่อ: REACT_APP_SETUP
      ค่า: "ทดสอบ"
    - ชื่อ: REACT_APP_BACKEND_URL
      ค่า: "af-backend" # <- this
    - ชื่อ: REACT_APP_BACKEND_PORT
      ค่า: "6011"

ขณะนี้ ส่วนหน้าถูกเปิดเผยโดยบริการ NodePort ที่พอร์ต 30120 ข้อผิดพลาดในการบันทึกไปยังคอนโซลแสดงว่าส่วนหน้าพยายามเรียกส่วนหลังโดยใช้ URL เช่น http://10.11.12.13:30120/ ซึ่งไม่ถูกต้อง: ฉันคาดว่าจะเห็น API แบ็กเอนด์ที่พอร์ต 6011 ภายใน

ความเข้าใจของฉันถูกต้องหรือไม่? หรือฉันควรเปิดเผยบริการแบ็กเอนด์ให้สามารถเข้าถึงได้จากภายนอกด้วย

หรืออาจมีวิธีจัดรูปแบบ URL ของแบ็กเอนด์ ตัดพอร์ตออกแล้วแทนที่ด้วยอันที่ต้องการ

Mikołaj Głodziak avatar
id flag
คุณใช้ Kubernetes เวอร์ชันใด และตั้งค่าคลัสเตอร์อย่างไร คุณใช้การติดตั้งแบบ Bare Metal หรือผู้ให้บริการระบบคลาวด์หรือไม่ สิ่งสำคัญคือต้องทำซ้ำปัญหาของคุณ
AbreQueVoy avatar
in flag
เฮจ มิโคอัจ. เป็นคลัสเตอร์ 3 โหนดที่ทำงานบนอินสแตนซ์เซิร์ฟเวอร์ OpenStack มันถูกติดตั้งด้วย Kubespray; โหนดทั้งหมดรัน v1.22.2
Mikołaj Głodziak avatar
id flag
ถ้าฉันเห็นถูกต้อง คุณจะตั้งค่าตัวแปรให้กับโฮสต์นั้นเท่านั้น คุณใช้ทางเข้าหรือไม่?
AbreQueVoy avatar
in flag
ไม่ ฉันใช้แค่ NodePortและฉันคิดว่าปัญหาที่นี่เกี่ยวข้องกับข้อเท็จจริงที่ว่าตัวแปร React ได้รับการตั้งค่าตามเวลาบิลด์ ในขณะที่ตัวแปรเหล่านี้จำเป็นในระหว่างรันไทม์
Mikołaj Głodziak avatar
id flag
เป็นไปได้ไหมที่จะฮาร์ดโค้ดในภาพ
Score:0
ธง br

ปัญหาอยู่ในการกำหนดค่า sevice.spec.ports ของแบ็กเอนด์พ็อด พอร์ตเป้าหมายคือพอร์ตที่บริการจะส่งต่อการรับส่งข้อมูล ในกรณีนี้คือ 4040 เนื่องจากพ็อดแบ็กเอนด์กำลังฟังบน 4040 และพอร์ตบริการควรเป็น 6011 เนื่องจากพ็อด FE จะเรียกใช้บริการบนพอร์ตนี้ ไม่จำเป็นต้องเปิดเผยบริการแบ็กเอนด์เป็น NodePort คุณยังสามารถลองใช้คำสั่ง netcat จากคอนเทนเนอร์ FE เพื่อตรวจสอบว่าบริการสามารถเข้าถึงได้หรือไม่ คำสั่ง: nc -v Service_IP 6011 (คาดว่า "สำเร็จ" ในการตอบสนอง)

api เวอร์ชัน: v1
ชนิด:บริการ
ข้อมูลเมตา:
  ชื่อ: af-แบ็กเอนด์
  ป้ายกำกับ:
    ชื่อ: af-backend-service
    แอพ: adv-format
ข้อมูลจำเพาะ:
  พอร์ต:
  - port: 4040 << ผิด ควรเป็น 6011; FE Pod โทรหาบริการที่ 6011
    targetPort: 6011 << ผิด ควรเป็น 4040; พอร์ตคอนเทนเนอร์แบ็กเอนด์ 4040
  ตัวเลือก:
    ชื่อ: af-backend-pod
    แอพ: adv-format
AbreQueVoy avatar
in flag
ขอบคุณ @Rajesh Dutta ฉันเปลี่ยน `targetPort` เป็น 4040 เช่นกัน และตอนนี้พอร์ตนี้ถูกเปิดเผยแล้ว ถึงกระนั้นก็ยังไม่มีการเชื่อมต่อระหว่างส่วนหน้าและส่วนหลังเมื่อเราพูดถึงเว็บไซต์ แต่ส่วนหลังสามารถเข้าถึงได้จากภายในคอนเทนเนอร์ส่วนหน้า อะไรอาจปิดกั้นการรับส่งข้อมูล สมมติว่าส่วนหน้าของเว็บไซต์เรียก URL ที่ถูกต้องของส่วนหลัง
Rajesh Dutta avatar
br flag
คุณเปลี่ยนฟิลด์ `port` เป็น 6011 ด้วยหรือไม่ (1) ลองทำ nslookup af-backend และดูว่า DNS แก้ไขใน FE หรือไม่ (2) ลองด้วยการตั้งค่านี้ในพ็อด FE โดยปกติไม่จำเป็นต้องใช้ - ชื่อ: REACT_APP_BACKEND_URL ค่า: "af-backend.default.svc"

โพสต์คำตอบ

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