Wireguard в Swarm кластере
Мне все еще кажется, что docker Swarm недооценен. Swarm отлично подходит для выполнения простых задач, особенно если вы работаете на собственной инфраструктуре. Если вы используете Swarm на VPS, то очень удобно иметь возможность подключиться к Swarm кластеру извне. Я лично предпочитаю Wireguard из-за его скорости, легковесного дизайна и стабильности. Это оптимизированное и эффективное VPN решение, которое обеспечивает надежную работу.
Давайте создадим отдельную сеть для Wireguard
docker network create wg_net
Затем нам нужна папка для конфигурации, которая будет смонтирована внутри контейнера.
mkdir -p wg/config
chmod 777 -R wg/config
Затем мы можем изменить стек некоторыми системными сервисами, я использую отдельный стек для этого. Самые важные свойства:
SERVERURL=*.*.*.*
вы должны заменить это на ваш IP адрес или доменное имяPEERS=1
при старте контейнера Swarm Wireguard создает 1 конфигурацию для клиента и добавляет его в конфигурацию сервера.
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
Затем мы можем развернуть стек через docker stack deploy --with-registry-auth -c system.yaml system
После запуска контейнера Wireguard создаст конфигурацию клиента в wg/config/peer1
peer1.conf
— это наша конфигурация клиента Wireguard.
Чтобы использовать сеть Wireguard внутри кластера, нам нужно явно добавить ее к любому нужному сервису, например, у нас есть стек monitoring.yaml
, и мы хотим подключиться к Prometheus.
services:
prometheus:
image: prom/prometheus:v2.55.1
networks:
- wg_net
Для подключения к prometheus мы можем использовать http://monitoring_prometheus:9090