Secret и Config в Docker Swarm

Как использовать Docker Secret и Docker Config

Docker Secret и Docker Config — это инструменты для управления конфиденциальными данными (паролями, ключами) и конфигурационными файлами в Docker Swarm. Они обеспечивают безопасность и удобство при работе с распределенными приложениями.


Docker Secret

Что такое Docker Secret?

  • Предназначены для хранения чувствительных данных (пароли, TLS-сертификаты, токены).
  • Данные шифруются при передаче и хранении.
  • Доступны только внутри сервисов Swarm.

Как использовать?

1. Создание Secret

Из файла:

echo "my_db_password" | docker secret create db_password -

Через командную строку:

docker secret create db_password_v2 -
# Введите значение в интерактивном режиме

2. Подключение Secret к сервису

docker service create \
  --name mysql \
  --secret source=db_password,target=db_password \
  -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_password \
  mysql:latest

3. Использование Secret внутри контейнера

cat /run/secrets/db_password

Команды для работы с Secrets

Команда Описание
docker secret create Создать секрет
docker secret ls Список секретов
docker secret inspect Информация о секрете
docker secret rm Удалить секрет

Docker Config

Что такое Docker Config?

  • Для неконфиденциальных конфигурационных файлов (настройки приложений, JSON-файлы).
  • Данные не шифруются.
  • Удобно для управления версиями конфигов.

Как использовать?

1. Создание Config

docker config create nginx_conf /path/to/nginx.conf

2. Подключение Config к сервису

docker service create \
  --name web \
  --config source=nginx_conf,target=/etc/nginx/nginx.conf \
  -p 80:80 \
  nginx:latest

3. Обновление Config

docker config create nginx_conf_v2 /path/to/new-nginx.conf

docker service update \
  --config-rm nginx_conf \
  --config-add source=nginx_conf_v2,target=/etc/nginx/nginx.conf \
  web

Команды для работы с Configs

Команда Описание
docker config create Создать конфиг
docker config ls Список конфигов
docker config inspect Информация о конфиге
docker config rm Удалить конфиг

Пример использования Secret и Config вместе

# Создаем секрет и конфиг
echo "admin123" | docker secret create admin_pass -
docker config create app_settings ./settings.json

# Запускаем сервис
docker service create \
  --name myapp \
  --secret admin_pass \
  --config source=app_settings,target=/app/config.json \
  myapp_image:latest

Лучшие практики

  • Не храните секреты в образах: Используйте --secret вместо ENV.
  • Ограничьте доступ: Только Manager-узлы могут управлять секретами и конфигами.
  • Используйте версионирование: Создавайте новые версии с суффиксами (_v1, _v2).
  • Документируйте зависимости: Указывайте, какие секреты и конфиги требуются.

Docker Compose (для Stacks)

Пример docker-compose.yml:

version: "3.8"

services:
  web:
    image: nginx:latest
    configs:
      - source: nginx_conf
        target: /etc/nginx/nginx.conf
    secrets:
      - source: db_password
        target: db_password

configs:
  nginx_conf:
    file: ./nginx.conf

secrets:
  db_password:
    file: ./db_password.txt

Запуск:

docker stack deploy -c docker-compose.yml myapp

Заключение

Docker Secret и Docker Config упрощают управление данными в распределенных приложениях. Secret защищают чувствительную информацию, а Config помогают централизованно управлять настройками. Используйте их, чтобы сделать ваши сервисы безопаснее и удобнее в поддержке.

Официальная документация:

🇺🇦 Stop Russian Aggression!
See what you can do →

Выберите мессенджер

Telegram Email Discord Forms