Swarm overlay networks обеспечивают изолированную сеть между контейнерами на разных физических серверах:
# Overlay-сеть создаётся автоматически при stack deploy
# Или вручную:
docker network create --driver overlay --internal backend-net
# internal: true — контейнеры в этой сети не имеют выхода в интернет
# Только сервисы, подключённые к backend, видят друг друга
# Service discovery через DNS:
# Внутри контейнера tracking можно обратиться к routing по имени:
curl http://routing:8080/api/v1/route
# Docker DNS автоматически резолвит имя сервиса в VIP (Virtual IP)
# Ingress routing mesh:
# Запрос на порт 8080 любого узла кластера попадёт в tracking
# Даже если tracking не запущен на этом узле
curl http://srv4.transcargo.local:8080/healthz # Работает, хотя tracking на srv4 нет
Docker Secrets — встроенное управление секретами:
# Создание секретов
echo "SuperStr0ngP@ss" | docker secret create db_password -
echo "RedisP@ss123" | docker secret create redis_password -
docker secret create tls_cert ./certs/server.crt
docker secret create tls_key ./certs/server.key
# Секреты монтируются как файлы в /run/secrets/
# Внутри контейнера:
cat /run/secrets/db_password
# SuperStr0ngP@ss
# Ротация секрета:
echo "NewP@ssw0rd!" | docker secret create db_password_v2 -
docker service update \
--secret-rm db_password \
--secret-add db_password_v2 \
transcargo_tracking
# Список секретов
docker secret ls
# ID NAME CREATED
# abc123 db_password 2 weeks ago
# def456 redis_password 2 weeks ago
Масштабирование — одна команда:
# Горизонтальное масштабирование
docker service scale transcargo_tracking=5
# transcargo_tracking scaled to 5
# Rolling update (обновление без даунтайма)
docker service update \
--image registry.transcargo.local/tracking:2.4.0 \
--update-parallelism 1 \
--update-delay 30s \
--update-order start-first \
--update-failure-action rollback \
transcargo_tracking
# Откат к предыдущей версии
docker service rollback transcargo_tracking
# Мониторинг обновления в реальном времени
docker service ps transcargo_tracking
# ID NAME IMAGE NODE STATE
# abc tracking.1 tracking:2.4.0 srv4 Running
# def tracking.2 tracking:2.4.0 srv5 Running
# ghi tracking.3 tracking:2.3.1 srv4 Running (updating...)
# jkl \_ tracking.3 tracking:2.3.1 srv5 Shutdown
Оставить комментарий