ฉันมีแอปพลิเคชันเดียวที่ทำงานในหลายคลัสเตอร์ K8s; สมมติว่ามีบริการส่วนหน้าและส่วนหลังสองบริการ
ฉันใช้พร็อกซี NGINX ตามคำขอจากส่วนหน้าไปยังบริการส่วนหลัง รุ่น NGINX ปกติ ไม่ NGINX+
นี่คือ nginx.conf:
เซิร์ฟเวอร์ {
....
ตั้ง $back1 "<ชื่อโฮสต์ k8s สำหรับบริการ backend1>";
ตั้ง $back2 "<k8s ชื่อโฮสต์สำหรับบริการ backend2>";
ตำแหน่ง /back1 {
เขียนใหม่ ^/back1/(.*)$ /$1 แตก;
proxy_pass http://$back1;
}
<และเหมือนกันสำหรับบริการแบ็กเอนด์ 2>
}
โดยพื้นฐานแล้ว สิ่งที่เกิดขึ้นคือในแอปพลิเคชันส่วนหน้าของฉัน ฉันตั้งค่าที่อยู่บริการส่วนหลังเป็น localhost/back1 และ localhost/back2คำขอกด NGINX ซึ่งตัดออก กลับ1 และ กลับ2 คำนำหน้าและเรียกปลายทางใดก็ตามที่ฉันระบุหลังจากบริการแบ็กเอนด์จริงใน K8s
เนื่องจากฉันมีคลัสเตอร์ K8 หลายตัว ชื่อโฮสต์ของบริการแบ็กเอนด์จึงแตกต่างกัน และฉันจำเป็นต้องคำนึงถึงสิ่งนั้นในการกำหนดค่า NGINX ของฉัน
คำถามคือ:
มีวิธีให้ NGINX แยกความแตกต่างระหว่างคลัสเตอร์ K8 ของฉันหรือไม่
บางทีฉันสามารถส่งตัวแปรสภาพแวดล้อมไปยังคอนเทนเนอร์ที่เรียกใช้บริการส่วนหน้าของฉัน และสร้าง ถ้า คำสั่งใน nginx.conf สิ่งที่ต้องการ:
เซิร์ฟเวอร์ {
ถ้า (${env} = "cluster1") {
ตั้ง $back1 = "<ชื่อโฮสต์คลัสเตอร์ 1>"
}
ถ้า (${env} = "cluster2") {
ตั้ง $back1 = "<ชื่อโฮสต์คลัสเตอร์2>"
}
}
หรือถ้าฉันสามารถรันคำสั่งเชลล์ใน nginx conf เพื่อรับชื่อโฮสต์และเขียน if บล็อกที่คล้ายกัน
ฉันขอขอบคุณสำหรับความช่วยเหลือในเรื่องนี้!