Score:1

หลีกเลี่ยงความขัดแย้งของตัวแปรสภาพแวดล้อมของพ็อดกับลิงก์สไตล์นักเทียบท่า

ธง in

เราเรียกใช้หรือคอมโพเนนต์ใน Kubernetes โดยมี Docker เป็นคอนเทนเนอร์รันไทม์ ปัญหาคือสภาพแวดล้อมของพ็อดนั้นปนเปื้อนด้วยตัวแปรลิงค์สไตล์นักเทียบท่าเช่น

  • SERVICENAME_PORT_8181_TCP
  • SERVICENAME_PORT_HTTP
  • .....
  • SERVICENAME_PORT

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

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

Score:2
ธง in

มีวิธีกำหนดค่าคลัสเตอร์ไม่ให้เพิ่มตัวแปรอัตโนมัติสำหรับบริการที่มองเห็นแต่ละรายการหรือไม่

ใช่และไม่ใช่: ไม่ใช่ทั้งคลัสเตอร์, AFAIK แต่เป็น enableServiceLinks: เท็จ ฟิลด์ใน ข้อมูลจำเพาะ: ได้รับการออกแบบมาเพื่อให้คุณปิดได้

อีกทางหนึ่ง การใช้รันไทม์อื่นเช่นคอนเทนเนอร์จะช่วยแก้ปัญหานี้ได้หรือไม่

ไม่ ชื่อเหล่านั้นถูกเพิ่มเข้าไปในจิตวิญญาณของความเข้ากันได้กับนักเทียบท่า แต่ไม่เกี่ยวข้องกับนักเทียบท่าเลย -- พวกเขาคือ ฉีดโดย kubelet

โดยทั่วไปแล้วฉันจะใช้สภาพแวดล้อมโดยไม่พบกับความขัดแย้งในการตั้งชื่อได้อย่างไร หรือชื่อบริการถือเป็นส่วนหนึ่งของสัญญากับคอนเทนเนอร์ และฉันไม่ควรเปลี่ยนโดยอิสระ?

อีกทางเลือกหนึ่งคือแทนที่จะห้ามขายขายส่ง คุณยังสามารถปกปิดได้ เฉพาะเจาะจง สิ่งที่รบกวนแอปของคุณ พวกที่ลงท้ายด้วย _HTTP เป็นปัญหาอย่างยิ่งกับ Spring Boot ที่มี บริการ ของใคร ข้อมูลเมตา: { ชื่อ: เป็นชื่อทั่วไปบางอย่างเช่น บริการ หรือ เซิร์ฟเวอร์

คุณสามารถทำได้ต่อการปรับใช้:

สภาพแวดล้อม:
- ชื่อ: SERVICENAME_PORT_HTTP
  # ละเว้นค่า: เพียงตั้งค่าเป็นสตริงว่างในคอนเทนเนอร์
# และที่เหลือ

หรือคุณสามารถประกาศ ConfigMap ที่มีเนื้อหาที่ไม่เหมาะสมและเขียนทับด้วย envจาก: (เพื่อไม่ต้องแก้ไขการปรับใช้แต่ละรายการที่ได้รับผลกระทบ

in flag
ขอบคุณ! ฉันชอบ `enableServiceLinks: false` ตัวเลือกสุดท้าย กำบังตัวแปรอย่างชัดเจน ดูเหมือนจะใช้ไม่ได้จริงอย่างที่ควรจะรู้อยู่แล้วว่ามันกำลังเข้ามาขวางทาง ซึ่งตัวมันเองอาจไม่ชัดเจน (นั่นคือปัญหาที่ฉันเริ่มต้น) และชื่อจะเปลี่ยนไปหากมีใครเปลี่ยนชื่อบริการ หรือสร้างใหม่

โพสต์คำตอบ

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