ฉันกำลังพยายามยึดคอนเทนเนอร์บนโฮมแล็บ
เป้าหมายหลักคือ:
- แยก nginxA และ nginxBจึงไม่สามารถพูดคุยกันผ่านทาง
172.17.0.1
(เช่น ป้องกัน nginxA จากการเข้าถึง nginxB ทาง 172.17.0.1:5001
)
- แยก nginxA และ nginxB จาก localhost ทำให้สามารถเข้าถึงได้ผ่าน traefik เท่านั้น
- อนุญาต nginxA เพื่อพูดคุย nginxA_DBซึ่งอยู่ในสแต็กเดียวกัน แต่ไม่อนุญาตให้คอนเทนเนอร์อื่นหรือ traefik พูดคุยด้วย nginxA_DB
แต่ละ docker stack มีบริการ nginx/apache โดยมีพอร์ตที่เปิดเผยใน docker-compose ในลักษณะต่อไปนี้:
นักเทียบท่า-compose-nginxA.yml:
เครือข่าย:
ภายใน:
ไอแพม:
การกำหนดค่า:
- เครือข่ายย่อย: 10.0.0.0/29
...สนิป...
nginxA:
เครือข่าย:
ภายใน:
ipv4_address: 10.0.0.2
พอร์ต:
- "172.17.0.1:5000:80"
นักเทียบท่าเขียน nginxB.yml:
เครือข่าย:
ภายใน:
ไอแพม:
การกำหนดค่า:
- เครือข่ายย่อย: 10.0.0.8/29
...สนิป...
nginxB:
เครือข่าย:
ภายใน:
ipv4_address: 10.0.0.10
พอร์ต:
- "172.17.0.1:5001:80"
ทำให้บริการเหล่านี้เข้าถึงได้ทาง โลคัลโฮสต์ (172.17.0.1) หรือ เทรฟิค,
Traefik อยู่ในเครื่องเดียวกันด้วยการกำหนดค่าต่อไปนี้:
http:
เราเตอร์:
nginxA:
จุดเข้า:
- เว็บ
บริการ: nginxA
nginxB:
จุดเข้า:
- เว็บ
บริการ: nginxB
...สนิป...
บริการ:
nginxA:
โหลดบาลานเซอร์:
เซิร์ฟเวอร์:
- url: http://172.17.0.1:5000
nginxB:
โหลดบาลานเซอร์:
เซิร์ฟเวอร์:
- url: http://172.17.0.1:5001
มีแนวคิดที่จะเชื่อมต่อคอนเทนเนอร์ทั้งหมดเข้าด้วยกัน /24
เครือข่ายด้วย traefik โดยไม่เปิดเผยพอร์ตใด ๆ ผ่านการเขียน แต่เครือข่าย traefik เดียวจะไม่แยกคอนเทนเนอร์ออกจากกัน แต่จะแยกจากภายนอกเท่านั้น
อีกแนวคิดหนึ่งคือการสร้างไฟล์ /31
เครือข่ายสำหรับแต่ละคอนเทนเนอร์และรวม traefik เครือข่ายทั้งหมด แต่ฉันไม่แน่ใจว่าสิ่งนี้จะทำการแยกตามที่ตั้งใจไว้หรือไม่ เช่น.
nginxA:
เครือข่าย:
ภายใน:
ipv4_address: 10.0.0.2 # /29
nginxA-traefik:
ipv4_address: 10.50.0.1 # /31
เทรฟิค:
เครือข่าย:
nginxA-traefik:
nginxB-traefik:
...
ขอบคุณที่อ่านมาถึงตรงนี้! คุณมีความคิดใด ๆ ว่าสามารถทำได้หรือไม่?