Wireguard em Cluster Swarm
Ainda sinto que o Docker Swarm é subestimado. Swarm é ótimo para cargas de trabalho simples, especialmente se você estiver construindo no local. Se você usa Swarm em VPS, é muito útil ter a possibilidade de se conectar ao cluster Swarm de fora. Eu pessoalmente prefiro o Wireguard por causa de sua velocidade, design leve e estabilidade. Ele oferece uma solução VPN eficiente e simplificada que constantemente entrega um desempenho confiável.
Vamos criar uma rede separada para o Wireguard:
docker network create wg_net
Em seguida, precisamos de um diretório para configuração que será montado dentro do contêiner.
mkdir -p wg/config
chmod 777 -R wg/config
Depois, podemos modificar a stack com alguns serviços do sistema. Eu uso uma stack separada para isso. As propriedades mais importantes são:
SERVERURL=*.*.*.*
você deve alterar isso para o seu endereço IP ou nome de domínioPEERS=1
quando o Swarm inicia o contêiner, o Wireguard cria 1 configuração para o peer e a adiciona na configuração do servidor.
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
Podemos então implantar a stack com docker stack deploy --with-registry-auth -c system.yaml system
Após iniciar o contêiner, o Wireguard cria a configuração do peer em wg/config/peer1
peer1.conf
é a nossa configuração de cliente do Wireguard.
Para usar a rede Wireguard dentro do cluster, precisamos adicionar sua rede explicitamente a qualquer serviço desejado, por exemplo, temos a stack monitoring.yaml
, e queremos conectar ao Prometheus.
services:
prometheus:
image: prom/prometheus:v2.55.1
networks:
- wg_net
Para conectar ao Prometheus, podemos usar http://monitoring_prometheus:9090