Wireguard dans le cluster Swarm
Je pense toujours que docker Swarm est sous-estimé. Swarm est excellent pour des charges de travail simples, en particulier si vous construisez en local. Si vous utilisez Swarm sur un VPS, il est très utile de pouvoir se connecter au cluster Swarm depuis l'extérieur. Personnellement, je préfère Wireguard en raison de sa rapidité, de son design léger et de sa stabilité. Il offre une solution VPN rationalisée et efficace qui fournit constamment des performances fiables.
Créons un réseau séparé pour Wireguard
docker network create wg_net
Ensuite, nous avons besoin d'un répertoire pour la configuration qui sera montée à l'intérieur du conteneur.
mkdir -p wg/config
chmod 777 -R wg/config
Ensuite, nous pouvons modifier la pile avec certains services système que j'utilise dans une pile séparée. Les propriétés les plus importantes sont :
SERVERURL=*.*.*.*
vous devez le changer pour votre adresse IP ou nom de domainePEERS=1
lorsque Swarm démarre le conteneur, Wireguard crée 1 configuration pour pair et l'ajoute dans la configuration du serveur.
services:
Wireguard:
image: lscr.io/linuxserver/Wireguard:latest
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- SERVERURL=*.*.*.*
- SERVERPORT=51820
- PEERS=1
- PEERDNS=auto
- INTERNAL_SUBNET=10.11.11.0
- ALLOWEDIPS=0.0.0.0/0
- LOG_CONFS=true
volumes:
- $PWD/wg/config:/config
- /lib/modules:/lib/modules
networks:
- wg_net
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
deploy:
placement:
constraints: [node.role == manager]
networks:
wg_net:
external: true
Ensuite, nous pouvons déployer la pile via docker stack deploy --with-registry-auth -c system.yaml system
Après le démarrage du conteneur, Wireguard crée la configuration du pair dans wg/config/peer1
peer1.conf
est notre configuration client Wireguard.
Pour utiliser le réseau Wireguard à l'intérieur du cluster, nous devons ajouter explicitement son réseau à tout service désiré, par exemple, nous avons une pile monitoring.yaml
et nous voulons nous connecter à Prometheus.
services:
prometheus:
image: prom/prometheus:v2.55.1
networks:
- wg_net
Pour se connecter à prometheus, nous pouvons utiliser http://monitoring_prometheus:9090