Deckhouse Stronghold поддерживает создание расписания для выполнения автоматических резервных копий хранилища секретов. Так как Stronghold хранит данные на диске в зашифрованном виде, то резервная копия тоже будет содержать только зашифрованные данные. Для получения доступа к данным нужно будет развернуть резервную копию в кластер Stronghold и провести процедуру распечатывания хранилища.
Поддерживается сохранение резервных копий на локальный диск в выбранную папку, или в S3-совместимое хранилище.
Управление настройками резервных копий и просмотр их статуса доступны через API, CLI и UI.
Создание/обновление конфигурации автоматического бэкапа
| Метод | Путь |
|---|---|
| POST | /sys/storage/raft/snapshot-auto/config/:name |
Для взаимодействия с данным методом API потребуются sudo права
Параметры
-
name(string: <required>)– Название конфигурации для изменения. -
interval(integer or string: <required>)- Интервал времени между созданием снэпшотов. Это может быть либо целое число секунд, либо строка формата Go duration (например, 24h). -
retain(integer: 3)- Количество снимков, которые будут храниться. При записи нового снимка, если общее количество снимков превышает это число, самые старые снимки будут удалены. -
storage_type(immutable string: <required>)- Одно из значенийlocalилиaws-s3. Остальные параметры, описанные ниже, доступны только для выбранногоstorage_typeи имеют соответствующий префикс. Параметр не доступен к редактированию после создания. -
path_prefix(immutable string: <required>)- Дляstorage_type = local– каталог, в который будут записываться снимки. Завершающий символ/необязателен. Дляstorage_type = aws-s3– это префикс, добавляемый перед именем объекта в формате путиpath_prefix/file_prefix. Корневой симовол/игнорируется. Завершающий символ/необязателен. Параметр не доступен к редактированию после создания. -
file_prefix(immutable string: "stronghold-snapshot")- Строка, с которой будет начинаться имя снэпшота. Для локального типа хранилища это префикс файла. Для облачного типа хранилища – префикс, добавляемый послеpath_prefix/. Параметр не доступен к редактированию после создания.
storage_type = "local"
local_max_space(integer: 0)- Дляstorage_type=localмаксимальное пространство в байтах, которое будет использоваться для всех снимков с заданнымfile_prefixв каталогеpath_prefix. Попытки создания снэпшотов будут неудачны, если будет недостаточно места. Значение 0 (по умолчанию) отключает проверку занимаемого места.
storage_type = "aws-s3"
aws_s3_bucket(string: <required>)- Название S3 бакета для записи снэпшотов.aws_s3_region(string)- Регион S3 бакета.aws_access_key_id(string)- Идентификатор ключа для доступа к S3 бакету.aws_secret_access_key(string)- Секретный ключ для доступа к S3 бакету.aws_s3_endpoint(string)- Адрес сервиса S3 бакета.aws_s3_disable_tls(boolean)- Отключение TLS для конечной точки S3. Этот параметр следует использовать только для тестирования, обычно в сочетании сaws_s3_endpoint.aws_s3_ca_certificate(string)- Сертификат центра сертификации для конечной точки в формате PEM.
Примеры
Создание расписания автоматического резервного копирования на локальный диск
Следующий JSON файл local-snapshot.json описывает настройки для сохранения резервной копии на локальном диске по пути /stronghold/data/backups/ с именем файла main_stronghold_*.tar.gz, где вместо * будет указана дата создания резервной копии. Резервная копия будет сохраняться каждые 5 минут и общее количество файлов резервной копии не будет превышать 4.
{
"interval": "5m",
"path_prefix": "/stronghold/data/backups",
"file_prefix": "main_stronghold",
"retain": "4",
"storage_type": "local"
}
Перед созданием конфигурации убедитесь, что по пути, указанному в path_prefix, есть права на запись. Стандартная ошибка failed to create snapshot directory at destination указывает на отсутствие целевой директории или проблемы с её созданием.
В примере путь /stronghold/data/ – это путь внутри контейнера, и он смонтирован по пути /var/lib/deckhouse/stronghold/ на мастер нодах кластера DKP. Созданные снэпшоты можно найти и скачать с мастер нод по пути /var/lib/deckhouse/stronghold/backups/. При перезагрузке подов снэпшоты останутся неизменными.
Применяем конфигурацию
d8 stronghold write sys/storage/raft/snapshot-auto/config/my-local-snapshots @local-snapshot.json
Ответ:
Key Value
--- -----
msg successfully created config
Первая резервная копия будет создана сразу после применения конфигурации, последующие копии – через интервал, указанный в настройках.
Создание расписания автоматического резервного копирования на S3-совместимое хранилище
В случае, когда созданную резервную копию требуется разместить в S3-совместимом хранилище (в примере minio), в настройках указываем тип хранилища aws-s3 и необходимые данные для подключения к вашему хранилищу: название бакета, адрес хранилища, ID ключа доступа и секретный ключ доступа.
Пример конфигурационного JSON файла minio-snapshot.json:
{
"interval": "3m",
"path_prefix": "snapshots",
"file_prefix": "stronghold_backup",
"retain": "15",
"storage_type": "aws-s3",
"aws_s3_bucket": "my_bucket",
"aws_s3_endpoint": "minio.domain.ru",
"aws_access_key_id": "<ACCESS_KEY>",
"aws_secret_access_key": "<SECRET_ACCESS_KEY>"
}
Объект с резервной копией будет расположен по адресу minio.domain.ru/my_bucket/snapshots/stronghold_backup_*.tar.gz, где вместо * будет указана дата создания.
Перед созданием конфигурации убедитесь, что по адресу и пути, указанным в конфигурации, есть права на чтение и запись, и сам бакет существует.
Применяем конфигурацию
d8 stronghold write sys/storage/raft/snapshot-auto/config/my-remote-snapshots @minio-snapshot.json
Ответ:
Key Value
--- -----
msg successfully created config
Первая резервная копия будет создана сразу после применения конфигурации, последующие копии – через интервал, указанный в настройках.
Обновление
В файл обновления конфигурации local-snapshot-update.json в формате JSON пишем поля и значения, которые хотим поменять:
{
"interval": "3m",
"retain": "10"
}
Можно не указывать все поля, уже существующие поля не будут изменены.
Применяем обновление
d8 stronghold write sys/storage/raft/snapshot-auto/config/my-local-snapshots @local-snapshot-update.json
Ответ:
Key Value
--- -----
msg successfully updated config
Вывод списка существующих конфигураций автоматического бэкапа
| Метод | Путь |
|---|---|
| LIST | /sys/storage/raft/snapshot-auto/config |
Используется для получения списка названий всех существующих конфигураций автоматических снэпшотов.
Пример
d8 stronghold list sys/storage/raft/snapshot-auto/config
Ответ:
Keys
----
my-local-snapshots
my-remote-snapshots
Получение параметров конфигурации автоматического бэкапа
| Метод | Путь |
|---|---|
| GET | /sys/storage/raft/snapshot-auto/config/:name |
Пример
d8 stronghold read sys/storage/raft/snapshot-auto/config/my-remote-snapshots
Ответ:
Key Value
--- -----
interval 180
path_prefix snapshots
file_prefix stronghold_backup
retain 10
storage_type aws-s3
aws_s3_bucket my_bucket
aws_s3_disable_tls false
aws_s3_endpoint minio.domain.ru
aws_s3_region n/a
aws_s3_ca_certificate n/a
Для облачного типа хранилища значения полей: ID ключа доступа (aws_access_key_id) и секретного ключа доступа (aws_secret_access_key) не отображаются.
Удаление конфигурации автоматического бэкапа
| Метод | Путь |
|---|---|
| DELETE | /sys/storage/raft/snapshot-auto/config/:name |
Пример
d8 stronghold delete sys/storage/raft/snapshot-auto/config/my-remote-snapshots
Ответ:
Key Value
--- -----
msg successfully deleted config
Операция удаления конфигурации автоматического резервного копирования не затрагивает созданные резервные копии хранилища Stronghold. Их можно будет обнаружить по тому же адресу, который был указан в удаленной конфигурации.
Получение статуса работы автоматического бэкапа
| Метод | Путь |
|---|---|
| GET | /sys/storage/raft/snapshot-auto/status/:name |
Пример
d8 stronghold read sys/storage/raft/snapshot-auto/status/my-remote-snapshots
Ответ:
Key Value
--- -----
consecutive_errors 0
last_snapshot_end 2025-01-31T15:24:14Z
last_snapshot_error n/a
last_snapshot_start 2025-01-31T15:24:12Z
last_snapshot_url s3://my_bucket/snapshots/stronghold_backup_2025-10-07T12:42:54Z.tar.gz
next_snapshot_start 2025-01-31T15:29:12Z
snapshot_start 2025-01-31T15:24:12Z
snapshot_url s3://my_bucket/snapshots/stronghold_backup_2025-01-31T15:24:12Z.tar.gz
Значения полей:
consecutive_errors- Количество аккумулированных ошибок, с момента первой ошибки резервного копирования. Обнуляется после успешно завершенной процедуры резервного копирования.last_snapshot_end- Время завершения последнего резервного копирования.last_snapshot_error- Текст последней ошибки при выполнении резервного копирования (илиn/a, если ошибок не было).last_snapshot_start- Время начала последнего завершенного резервного копирования.last_snapshot_url- URL расположения последнего успешно созданного снэпшота.next_snapshot_start- Время следующего запланированного резервного копирования.snapshot_start- Время начала текущего (выполняющегося) резервного копирования.snapshot_url- URL расположения снэпшота текущего (выполняющегося) резервного копирования.