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

Резервные копии можно сохранять на локальный диск в выбранную директорию или в S3-совместимое хранилище.

Управлять настройками и просматривать статус работы автоматического создания резервных копий можно через API, Stronghold CLI и веб-интерфейс.

Создание или обновление конфигурации автоматического резервного копирования

МетодПуть
POST/sys/storage/raft/snapshot-auto/config/:name

Для работы с данным методом API потребуются права sudo.

Описание параметров

ПараметрТипОбязательныйЗначение по умолчаниюОписание
nameСтрокаДаИмя конфигурации, которую необходимо создать или изменить.
intervalЦелое число или строкаДаИнтервал между резервным копированием. Может задаваться в секундах или в формате Go duration (например, 24h).
retainЦелое числоНет3Количество резервных копий, которые должны храниться. При превышении этого числа самые старые резервные копии удаляются.
storage_typeНеизменяемая строкаДаТип хранилища резервных копий: local (локальное) или aws-s3 (облачное). Остальные параметры ниже зависят от выбранного типа хранилища.
path_prefixНеизменяемая строкаДаЕсли в параметре storage_type выбрано локальное хранилище, здесь указывается директория хранения резервных копий (завершающий / необязателен). Если выбрано облачное хранилище, здесь указывается префикс объекта (начальный / игнорируется, завершающий / необязателен).
file_prefixНеизменяемая строкаНетstronghold-snapshotПрефикс имени файла для локального типа хранилища. Для облачного типа хранилища – следующий префикс, добавляемый после path_prefix/ (подробнее).

Дополнительные параметры для локального хранилища

ПараметрТипОбязательныйЗначение по умолчаниюОписание
local_max_spaceЦелое числоНет0Максимальный объём (в байтах), доступный для хранения резервных копий с заданным file_prefix в директории path_prefix. При недостатке места создание резервной копии завершится с ошибкой. Значение 0 отключает проверку занимаемого места на диске.

Дополнительные параметры для облачного хранилища

ПараметрТипОбязательныйЗначение по умолчаниюОписание
aws_s3_bucketСтрокаДаИмя S3 bucket для хранения резервных копий.
aws_s3_regionСтрокаНетРегион S3 bucket.
aws_access_key_idСтрокаНетИдентификатор ключа для доступа к S3 bucket.
aws_secret_access_keyСтрокаНетСекретный ключ для доступа к S3 bucket.
aws_s3_endpointСтрокаНетЭндпоинт S3-сервиса.
aws_s3_disable_tlsБулевыйНетОтключает TLS для S3-эндпоинта. Используется только для тестирования, обычно в сочетании с aws_s3_endpoint.
aws_s3_ca_certificateСтрокаНетСертификат CA для S3-эндпоинта в формате 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 указывает на отсутствие целевой директории или проблемы с её созданием.

Применяем конфигурацию

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 расположения снимка текущего (выполняющегося) резервного копирования.