Sinon,
Pour ne pas exposer Jeedom en Macvlan ou host, il y aurait plusieurs solutions
1°) Faire transiter les traffics multicast via un reverse proxy gérant le multicast (Mais pas Trafik, car il y a un Bug il me semble, à moins que cela ait été corrigé depuis).
2°) Créer une gateway (qui serait en host / macvlan) permettant ensuite d’analyser et d’envoyer les données via mqtt par exemple.
Tu orchestres le tout dans un swarm (par exemple)
Au final, cela donnerait par exemple (et pour prendre en compte le Zwave, en plus)
1 Stack « Jeedom » avec 2 services.
1 réseaux « backend » (lien en Jeedom et Bdd)
1 réseaux « mqtt » (Jeedom et ton Serveur mqtt)
1 service « bdd » (sans exposition des ports, la communication passe dans le network backend, le nom d’hote de la base de données sera Alors Jeedom_bdd (Nom_de_la_stack _ nom_du_service)
la bdd aura en dépendances le réseaux backend uniqement.
1 service jeedom avec en réseaux : backend et mqtt. jeedom sera configurer avec Jeedom_mqtt, pour le nom d’^hote mqtt. Port ouvert :80 et 443 (ou si tu utilise un reverse proxy, port fermé et c’est le proxy qui gère avec un réseau en backend)
1 service pour ton master Mqtt, avec en réseau : mqtt. Le réseau mqtt doit être external :true et attachable
2 services externes à la stack :
1 pour Zwave2mqtt attaché au réseau mqtt. En mode réseau Overlay. Ca récupère les trames Wave, et les transmet au serveur mqtt, Jeedom, l’abonnée récupèrera les infos.
On ne peux pas faire un swarm avec du matériels associées. Swarm ne gère par --device de docker
1 Services pour Xiaomi, permettant de faire la gateway et envoyant les données au serveur mqtt. attaché au réseaux mqtt. en mode macvlan / host
Voilà, les idées. Attention, ce ne sont que des idées pour que tu t’amuse un peu lol, si le coeur t’en dis.
Si tu as besoin de conseils sur Swarm, Kubernetes, etc, n’hésites pas
Du coup, seul le service Xiaomi est full exposé au réseau. Les autres conteneurs sont exposés à des réseaux en backend et ne voient uniquement que les services dont ils ont besoins.
Exemple de mon cluster
7 stacks - 12 services
Master
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d55f85655e3b robertslando/zwave2mqtt:latest "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:8091->8091/tcp zwave2mqtt
b97f916c20d1 registry.gitlab.com/XXXXXX/jeedom/mqtt-master:3.0 "docker-entrypoint.s…" 3 hours ago Up 3 hours 1883/tcp, 8883/tcp Controllers_mqtt-master.1.v2mys0phs5lmz1rgy
zg66gqpa
d1c66375d734 registry.gitlab.com/XXXXX/jeedom/iptv-web:2.7.4 "docker-entrypoint.s…" 10 hours ago Up 10 hours (healthy) 80/tcp, 443/tcp SigmaTv_iptv-web.1.hs3s4xahon2kl788x0qb7fp4
g
e4bda1ee3200 prom/node-exporter:latest "/bin/node_exporter …" 10 hours ago Up 10 hours 0.0.0.0:9100->9100/tcp Monitor_node-exporter.53px49j41iorujziqkubr
lmco.2i058rei0ho6mnhrosxa9qqie
49130bc393a2 raymondmm/cadvisor:latest "/usr/bin/cadvisor -…" 10 hours ago Up 10 hours (healthy) 0.0.0.0:8090->8080/tcp Monitor_cadvisor.53px49j41iorujziqkubrlmco.
09k4xvafli0wst3mp32x481r8
21af0aef47b9 prom/prometheus:latest "/bin/prometheus --c…" 10 hours ago Up 10 hours 9090/tcp Monitor_prometheus.53px49j41iorujziqkubrlmc
o.rciv8xdryuravpix9c7but8b1
8bd9166cacc1 grafana/grafana:6.7.1 "/run.sh" 10 hours ago Up 10 hours 3000/tcp Monitor_grafana.1.x09cjr3napuha70et98vs9dm4
3eb11a8c878d traefik:latest "/entrypoint.sh --pr…" 11 hours ago Up 11 hours 80/tcp Network_treafik.1.hyl2lhedzv7fdhswq9gbt1aet
c4b3407b7ceb portainer/portainer:latest "/portainer" 11 hours ago Up 11 hours 9000/tcp Administration_portainer.1.p277qxyciz6orjsz
ree7hirvb
e16bbc340229 portainer/agent:latest "./agent" 11 hours ago Up 11 hours 0.0.0.0:9001->9001/tcp Administration_agent.53px49j41iorujziqkubrl
mco.w2rd9waih1btc350m5qaz0l7i
Worker 1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa23094236f1 registry.gitlab.com/gsyltc/jeedom/jeedom:3.4.11 "docker-entrypoint.s…" 3 hours ago Up 3 hours 80/tcp, 443/tcp, 3456-3457/tcp Jeedom_jeedom-web.1.9p5xutshtkd
b6q3ke86dassy9
994c5ef6f6f0 registry.gitlab.com/XXXXX/jeedom/jeedom-database:3.3 "overrided-entrypoin…" 3 hours ago Up 3 hours (healthy) 3306/tcp Jeedom_jeedom-bdd.1.tiwq8ktuxgz
h6xuo8h8fap4fd
85e7bfba0e45 registry.gitlab.com/XXXXX/jeedom/iptv-web:2.7.4 "docker-entrypoint.s…" 10 hours ago Up 10 hours (healthy) 80/tcp, 443/tcp SigmaTv_iptv-web.2.r119tihjr8bm
bxjucaw67o72x
22e9fcc54843 registry.gitlab.com/XXXXX/jeedom/iptv-updater:4.3.6 "docker-entrypoint.s…" 10 hours ago Up 10 hours SigmaTv_iptv-updater.1.avt9uqmr
n41hwqbotfvksgivf
3f9cf6cc416a prom/node-exporter:latest "/bin/node_exporter …" 10 hours ago Up 10 hours 0.0.0.0:9100->9100/tcp Monitor_node-exporter.m26e41opn
3y4r6ull9cbtqwma.r6kigei30lyy53bz6s93ybz22
2014bddb4dd2 raymondmm/cadvisor:latest "/usr/bin/cadvisor -…" 10 hours ago Up 10 hours (healthy) 0.0.0.0:8090->8080/tcp Monitor_cadvisor.m26e41opn3y4r6
ull9cbtqwma.w1jda000x5g9gg3izere993nw
03f28a205c15 prom/prometheus:latest "/bin/prometheus --c…" 10 hours ago Up 10 hours 9090/tcp Monitor_prometheus.m26e41opn3y4
r6ull9cbtqwma.jvwm71oi5p055lhbfzedhay2m
705008f13255 portainer/agent:latest "./agent" 12 hours ago Up 12 hours 0.0.0.0:9001->9001/tcp Administration_agent.m26e41opn3
y4r6ull9cbtqwma.scwg8nic4j4hhpyyt8a8pccfs
Seul les conteneur de monitoring et zwave2mqtt sont exposés (8080, 9100, 9090, 9001, 8091) car les conteneurs car le déploiement est « global » (ne doit pas être Load Balancer pour que chaque noeuds envoie ses propres données). Mais il ne sont pas exposées en externe. Tous les services exposés (Jeedom, Sigma, Grafana, Portainer passe par un proxy https nommé Trafik).