Предварительная версия. Функциональность может измениться, но основные возможности сохранятся. Совместимость с будущими версиями может потребовать ручных действий по миграции.

Работоспособность модуля гарантируется только при соблюдении системных требований. Использование в других условиях возможно, но стабильная работа в таких случаях не гарантируется.

Модуль storage-volume-data-manager обеспечивает механизм экспорта содержимого пользовательского тома по протоколу HTTP.

Создает namepsaced-ресурс “DataExport” в том namespace, в котором нужно создать экспорт данных. В этом ресурсе указывается targetRef - ссылка на ресурс, который нужно экспортировать. Поддерживаются только PersistentVolumeClaim и VolumeSnapshot.

За основу взят стандартный файловый сервер Go. Поддерживается экспорт томов в режиме файловой системы и в блочном режиме. Обеспечены авторизации пользователя средствами k8s, механизм скачивания файлов/блочки в диапазонах байт (поддерживаются заголовки ‘Range’).

##Ключевые параметры

  • ttl - это время после последнего обращения к серверу: скачивания файла или листинга директории. По истечении ttl экспортер-под удаляется, пользовательская PVC возвращается к пользовательскому PV. В ресурсе DataExport в Condition Ready устанавливается статус false, Reason - в Expired

  • publish - значение true в publish означает, что к экспортер-поду будет открыт доступ извне кластера. При этом в поле PublicURL появится строка для публичного доступа вида: publicURL: https://data-exporter.///

##Быстрый старт

Включение модуля:

kubectl apply -f - <<EOF
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: storage-volume-data-manager
spec:
  enabled: true
  version: 1
EOF

Для создания и работы с ресурсами DataExport используется команда d8, структура выглядит следующим образом:

d8 data -n <namespace> create <DataExport resource name> <тип ресурса для экспорта>/<имя ресурса для экспорта> --ttl 5m  --publish (true/false)

Важно! Работа с PVC ресурсами вожможна, если PVC не используется подами в данный момент

Для примера, создание ресурса DataExport для PVC с именем “data” в namespace “project” c ttl 5m:

d8 data -n project create my-export pvc/data --ttl 5m

Получить информацию о созданном ресурсе можно командой:

d8 k -n project get de my-export

Скачивание данных производится следующей командой:

d8 data -n <namespace> download <тип ресурса (pvc/vs/dataexport)>/<имя ресурса>/<путь к файлу> -o <имя файла>

Например:

d8 data -n project download dataexport/my-export -o test_file.txt --publish true