Încerc să asigur containerele în laboratorul meu de acasă.
Scopul principal este:
- izolare nginxA și nginxB, așa că nu pot vorbi între ei prin intermediul
172.17.0.1
(de ex. prevenirea nginxA de la a ajunge nginxB prin intermediul 172.17.0.1:5001
)
- izolare nginxA și nginxB de la localhost, făcându-le accesibile exclusiv prin traefik
- Permițând nginxA a vorbi cu nginxA_DB, care sunt în aceeași stivă, dar fără a permite altor containere sau traefik să vorbească nginxA_DB
Fiecare stivă docker are un serviciu nginx/apache cu portul expus în docker-compose în următorul mod:
docker-compose-nginxA.yml:
retele:
intern:
ipam:
config:
- subrețea: 10.0.0.0/29
...CROITOR...
nginxA:
retele:
intern:
adresa_ipv4: 10.0.0.2
porturi:
- „172.17.0.1:5000:80”
docker-compose-nginxB.yml:
retele:
intern:
ipam:
config:
- subrețea: 10.0.0.8/29
...CROITOR...
nginxB:
retele:
intern:
adresa_ipv4: 10.0.0.10
porturi:
- „172.17.0.1:5001:80”
Făcând aceste servicii accesibile numai prin gazdă locală (172.17.0.1) sau traefik,
Traefik fiind, de asemenea, pe aceeași mașină cu următoarea configurație:
http:
routere:
nginxA:
puncte de intrare:
- web
serviciu: nginxA
nginxB:
puncte de intrare:
- web
serviciu: nginxB
...CROITOR...
Servicii:
nginxA:
echilibrarea greutății:
servere:
- url: http://172.17.0.1:5000
nginxB:
echilibrarea greutății:
servere:
- url: http://172.17.0.1:5001
O idee a fost să conectați toate containerele într-un același /24
rețea cu traefik, fără a expune niciun port prin compose, dar o singură rețea traefik nu ar izola containerele unul de celălalt, ci doar din exterior.
O altă idee a fost crearea unui /31
rețeaua pentru fiecare container și îmbina toate rețelele traefik, dar nu sunt sigur dacă acest lucru va face izolarea conform intenției. de exemplu.
nginxA:
retele:
intern:
adresa_ipv4: 10.0.0.2 # /29
nginxA-traefik:
adresa_ipv4: 10.50.0.1 # /31
traefik:
retele:
nginxA-traefik:
nginxB-traefik:
...
Mulțumesc că ai citit până aici! Aveți vreo idee cum se poate face acest lucru?