Развертывание Docker Swarm: инициализация нод, Ingress-сеть и Docker Secrets
- Необходимость оркестрации нескольких Docker-хостов без накладных расходов Kubernetes.
- Ошибки синхронизации Raft-консенсуса между управляющими менеджерами Swarm.
- Проблемы с маршрутизацией входящего трафика через встроенный Ingress Routing Mesh.
- Небезопасное хранение паролей и SSL-сертификатов в открытом виде в переменных окружения.
1. Инициализация первичного Swarm Manager
docker swarm init --advertise-addr 192.168.1.10 --data-path-port=47892. Добавление Worker и дополнительных Manager нод
Получите токен для подключения:
# Токен для воркеров
docker swarm join-token worker
# Токен для менеджеров (кворум Raft)
docker swarm join-token managerВыполните команду на подключаемом сервере:
docker swarm join --token SWMTKN-1-xxx 192.168.1.10:23773. Создание шифрованной Overlay сети
docker network create \
--driver overlay \
--opt encrypted \
--attachable \
production_overlay4. Безопасная работа с Docker Secrets
# Создание секрета из файла или потока stdin
echo "MyUltraSecretDBPassword_2024" | docker secret create db_root_password -5. Развертывание сервиса через Docker Stack
Создайте файл stack.yml:
version: "3.8"
services:
web:
image: nginx:alpine
ports:
- "80:80"
networks:
- production_overlay
secrets:
- db_root_password
deploy:
replicas: 3
update_config:
parallelism: 1
delay: 10s
order: start-first
restart_policy:
condition: on-failure
secrets:
db_root_password:
external: true
networks:
production_overlay:
external: trueЗапустите стек в кластере:
docker stack deploy -c stack.yml prod_infra Частые вопросы (FAQ)
Какое количество Manager-нод считается оптимальным?
Для обеспечения кворума Raft требуется нечетное число менеджеров: 3 менеджера (допускается потеря 1) или 5 менеджеров (допускается потеря 2). Четное количество узлов снижает отказоустойчивость.
Куда монтируются Docker Secrets внутри контейнера?
Секреты монтируются в оперативную память контейнера (tmpfs) по пути /run/secrets/<secret_name> в расшифрованном виде и не сохраняются на дисковый накопитель.