Стадия жизненного цикла модуля: Общедоступная версия

У модуля есть требования для установки

VolumeCaptureRequest (VCR) и VolumeRestoreRequest (VRR) — one-shot служебные ресурсы, предназначенные для контроллеров наподобие state-snapshotter, а не стабильный пользовательский backup UX. Фактический create/read-доступ определяется RBAC кластера; admission пока не enforce’ит controller-only policy. Оба ресурса namespaced и находятся в storage-foundation.deckhouse.io/v1alpha1; namespace запроса совпадает с namespace исходного/целевого PVC.

Эта страница резюмирует текущие generated CRD и поведение controller/sidecar. Схема истины — generated CRD. Контракт использования этих ресурсов доменными контроллерами задаёт domain snapshot SDK state-snapshotter, он же владеет core-маппингом Ready reasons.

VolumeCaptureRequest

VCR создаёт durable data artifact для одного PVC. Domain snapshot SDK использует только spec.mode: Snapshot; Detach — отдельный flow storage-foundation.

apiVersion: storage-foundation.deckhouse.io/v1alpha1
kind: VolumeCaptureRequest
metadata:
  name: nss-vcr-4f2c8a91d0e3b7c2
  namespace: my-app
spec:
  mode: Snapshot
  target:
    uid: "2b4f6c7e-7e1d-4d85-95d0-8b52d61534d8"
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: data
status:
  data:
    artifactRef:
      apiVersion: snapshot.storage.k8s.io/v1
      kind: VolumeSnapshotContent
      name: snapshot-73a4cda0-4f2c8a91d0e3
      uid: "1148b6bd-9de2-4c86-a814-7688300932eb"
  completionTimestamp: "2026-07-23T12:34:56Z"
  conditions:
    - type: Ready
      status: "True"
      lastTransitionTime: "2026-07-23T12:34:56Z"
      reason: Completed
      message: "target ready"

Контракт:

  • spec.target — identity одного PVC; namespace неявно равен namespace VCR. Это single-target request, а не bulk capture API.
  • Request point-in-time, но enforcement неполон. Для Snapshot-mode CRD требует непустые uid, apiVersion, kind и name, однако transition-CEL с иммутабельностью spec отсутствует. SDK обнаруживает изменение существующего target только при следующем reconcile EnsureVCR. Controller storage-foundation сейчас резолвит live PVC по namespace запроса и имени target, не требует точные apiVersion: v1 и kind: PersistentVolumeClaim и не сравнивает UID live PVC с spec.target.uid; UID используется в детерминированном имени артефакта. Server-side immutability/typed drift вынесены в backlog #26, остальные UID/GVK/admission hardening — в #28. CRD требует target только для Snapshot-mode, хотя controller-path Detach тоже без него не работает.
  • status.data.artifactRef указывает на durable VolumeSnapshotContent/PersistentVolume. Identity исходного PVC остаётся в spec.target и в status не дублируется.
  • Ready=True/Completed — успех.
  • Ready=False/TargetsPending — нетерминальное ожидание: CSI capture продолжает retry. Сам по себе VolumeSnapshotContent.status.error request не терминалит.
  • Любой другой VCR Ready=False терминален.
  • Capture-домены на текущем SDK-контракте state-snapshotter создают или принимают VCR через snapshotsdk.EnsureVolumeCapture, публикуют его имя и управляют собственным lifecycle через DomainCaptureStatus(...).Phase(...).Reason(...).Message(...).Apply(ctx). Обычные домены публикуют планы MCR/VCR до PhasePlanned; текущие subtree-gated агрегаторы могут публиковать собственный MCR после PhasePlanned как compatibility exception, пока ожидают сохранения манифестов потомков.
  • Домены не читают conditions VCR и не пишут его status. Core state-snapshotter классифицирует терминальный VCR как Ready=False/VolumeCaptureFailed на snapshot-пути. Домен наблюдает core-owned результат через snapshotsdk.CoreCaptureOutcome и публикует PhaseFinished после завершения capture и доменного consistency-action. Childless-домен может сразу опубликовать PhaseFinished, когда core сообщает о завершении capture. Целевой протокол убирает late-own-MCR exception: собственный MCR каждого узла публикуется до PhasePlanned.
  • Встроенный VolumeSnapshot domain controller следует этому контракту: отсутствующий source PVC остаётся восстанавливаемым ожиданием в PhasePlanning, опубликованный MCR фиксирует план в PhasePlanned, успешный core capture переводит leaf в PhaseFinished, а терминальные ошибки core остаются в Ready.

VolumeRestoreRequest

VRR просит patched external-provisioner создать и забайндить один PVC из VolumeSnapshotContent или PersistentVolume.

apiVersion: storage-foundation.deckhouse.io/v1alpha1
kind: VolumeRestoreRequest
metadata:
  name: restore-data
  namespace: restore-ns
spec:
  sourceRef:
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotContent
    name: snapshot-73a4cda0-4f2c8a91d0e3
  pvcTemplate:
    metadata:
      name: data
    spec:
      accessModes: [ReadWriteOnce]
      storageClassName: local
      volumeMode: Filesystem
  fsType: ext4
status:
  pvcRef:
    kind: PersistentVolumeClaim
    namespace: restore-ns
    name: data
    uid: "8c37aa04-af6e-4671-9446-87062a18c189"
  completionTimestamp: "2026-07-23T12:36:04Z"
  conditions:
    - type: Ready
      status: "True"
      lastTransitionTime: "2026-07-23T12:36:04Z"
      reason: Completed
      message: "PVC restore-ns/data restored successfully"

Контракт:

  • CRD schema требует sourceRef.name, pvcTemplate и pvcTemplate.metadata.name. Cross-namespace restore не поддерживается.
  • Executor дополнительно требует непустой pvcTemplate.spec.storageClassName и точный pvcTemplate.spec.volumeMode со значением Block или Filesystem. В текущей schema эти поля optional. Schema-accepted request без любого из них executor игнорирует с Event, а controller продолжает ждать PVC без записи Ready и completionTimestamp. Такой VRR нетерминален и потому бессмертен для generic GC. Этот malformed empty-status gap требует исправления кода; документация не объявляет его допустимым execution-контрактом.
  • Такое же empty-status ожидание возможно при невалидных accessModes, отсутствующем StorageClass или StorageClass другого provisioner. Часть путей публикует Event, часть игнорируется молча; ни один из них сейчас не передаёт VRR controller терминальный результат.
  • pvcTemplate материализуется лишь частично, и source kinds ведут себя по-разному. Executor валидирует template storage class и volume mode для каждого request. Для источника VolumeSnapshotContent он использует template storage class, volume mode и access modes (default ReadWriteOnce), а также root fsType для Filesystem-томов. Для источника PersistentVolume авторитетен source PV: volume mode, access modes, filesystem type и capacity берутся из него, а соответствующие template-поля не определяют фактическую форму restore. Ни один путь не копирует template labels/annotations и не считает pvcTemplate.spec.resources.requests.storage авторитетным.
  • Поддерживаемые source kinds — VolumeSnapshotContent и PersistentVolume. Текущие controller и executor выбирают источник по kind и name; sourceRef.apiVersion, namespace и uid не проверяются относительно live source. Hardening source identity и admission отслеживается в backlog #28.
  • Patched external-provisioner watch’ит VRR, вызывает CSI CreateVolume и создаёт PV/PVC, но не пишет VRR status.
  • VolumeRestoreRequestController — единственный status writer: валидирует source, наблюдает PVC и публикует pvcRef, completionTimestamp, Ready.
  • Текущий writer pvcRef публикует kind, namespace, name и uid, но оставляет optional apiVersion пустым; пример намеренно совпадает с writer. Пока writer не начнёт публиковать это поле, consumers не должны считать его обязательным.
  • Терминальный VRR одноразовый; для новой попытки создаётся новый request.

Текущие conditions и reasons

Ресурс Reasons, которые пишет текущий controller
VCR Completed, TargetsPending, InternalError, NotFound, RBACDenied; InvalidMode остаётся defensive writer path, хотя CRD enum отклоняет неизвестный mode
VRR Completed, InvalidSource, InternalError, NotFound

SnapshotCreationFailed оставлен только для совместимости и больше не выставляется: на VCR-пути VolumeSnapshotContent.status.error остаётся TargetsPending. Общие константы Incompatible, UnsupportedTargetKind, PVBound и RestoreFailed сейчас не используются ни одним из двух request controllers. Ошибка status.error у VSC-источника VRR — другой путь: он терминалится как Ready=False/InternalError.

Retention и удаление

Терминальные VCR/VRR удаляет cron-driven generic GC по status.completionTimestamp.

Переменная Default
GC_VCR_TTL / GC_VRR_TTL 24h
GC_VCR_SCHEDULE / GC_VRR_SCHEDULE 0 * * * *

Per-object TTL-аннотаций и module settings для этих значений нет. На успешном пути state-snapshotter может удалить VCR раньше, после durable handoff; generic GC чистит терминальные остатки. Request без терминального Ready и completionTimestamp, включая malformed VRR выше, collector не удаляет. Текущий VRR keeper не связан с созданным executor’ом restore target PVC, поэтому GC запроса не удаляет этот PVC.

Валидация и RBAC

Валидация выполняется CRD schema/CEL и контроллерами; admission webhook с SelfSubjectAccessReview для VCR/VRR отсутствует.

Actor Фактический/request-specific доступ
Deckhouse User / RBAC v2 viewer Cluster-wide get, list, watch VCR и VRR
Deckhouse ClusterEditor / RBAC v2 manager Mutating verbs create, update, patch, delete, deletecollection; эффективный read-доступ наследуется через отдельно агрегированные viewer/User grants; grant на request /status отсутствует
Capture-domain на snapshotsdk Нужны VCR get/create/patch (и list/watch, если deployment их watch’ит); VCR status домен не пишет
Core state-snapshotter Текущий template выдаёт VCR CRUD/delete и update/patch VCR /status, хотя служебный контракт отдаёт VCR status storage-foundation; после durable handoff core реапит VCR
Restore-consumer (текущий DataExport path) Роль data-manager выдаёт VCR/VRR create, delete, list, get, watch, update; request /status не выдаётся
Patched CSI provisioner executor Cluster-wide VRR get, list, watch и target-PVC get, list, watch, create, update, patch; VRR /status отсутствует
Controller storage-foundation CRUD VCR/VRR плюс оба /status subresource; пишет request status и управляет следующими за request ObjectKeeper

Из-за user-facing grants эти ресурсы фактически не controller-only, несмотря на предназначение служебного API. Хук 040-vrr-provisioner-rbac сейчас bind’ит executor-grant только ServiceAccount csi в d8-sds-local-volume. Generic cross-driver VRR требует расширения общего CSI deployment/RBAC-контракта.

Deckhouse Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.

DataExport

Короткие имена: de

Область: Namespaced
Версия: v1alpha1

Ресурс для экспорта файлов и блоков PV.
  • spec
    объект
    • spec.publicIngress
      строка
      Тип публичного доступа к экспортеру.

      Допустимые значения: KubernetesAPI, ConsoleFrontend

    • spec.publish
      булевый
      Включение внешнего доступа к экспортер-поду за пределами кластера.
    • spec.targetRef
      объект

      Обязательный параметр

      GroupKind-ссылка на целевой ресурс для экспорта (namespace неявный — тот же, что у DataExport).
      • spec.targetRef.group
        строка
        API-группа целевого ресурса ("" или отсутствует для core-группы, например для PersistentVolumeClaim).
      • spec.targetRef.kind
        строка

        Обязательный параметр

        Kind целевого объекта (например, PersistentVolumeClaim, VirtualDisk, VolumeSnapshot, VirtualDiskSnapshot).

        Минимальная длина: 1

      • spec.targetRef.name
        строка

        Обязательный параметр

        Имя целевого ресурса для экспорта.

        Минимальная длина: 1

    • spec.ttl
      строка

      Обязательный параметр

      Время жизни после последнего запроса пользователя.

      Шаблон: ^([0-9]+(\.[0-9]+)?h)?([0-9]+(\.[0-9]+)?m)?([0-9]+s)?$

  • status
    объект
    Информация о статусе ресурса DataExport.
    • status.accessTimestamp
      строка
      Временная метка последнего доступа к экспортированным данным.
    • status.ca
      строка
      CA-сертификат в кодировке Base64 для TLS-подключения к экспортер-поду.
    • status.completionTimestamp
      строка
      Время перехода DataExport в терминальную фазу (Expired или Failed). Проставляется контроллером один раз; сборщик мусора отсчитывает время хранения от этой метки.
    • status.conditions
      массив объектов
      Массив условий, описывающих текущее состояние ресурса DataExport.
      • status.conditions.lastTransitionTime
        строка
        Время последнего перехода условия из одного статуса в другой.
      • status.conditions.message
        строка
        Сообщение, описывающее условие.
      • status.conditions.observedGeneration
        целое число
        Наблюдаемое поколение ресурса при последнем обновлении условия.
      • status.conditions.reason
        строка
        Причина текущего статуса условия.

        Допустимые значения: Pending, ServerReady, ValidationFailed, TargetNotReady, TargetNotFound, PVConflict, DeploymentFailed, CleanupFailed, PublishFailed, Expired

      • status.conditions.status
        строка
        Статус условия.

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка
        Тип условия.

        Допустимые значения: Ready

    • status.phase
      строка
      Укрупнённое состояние жизненного цикла, которое пишет только контроллер: Pending → Ready → Expired | Failed (у DataExport нет фазы Completed). Значение Terminating означает объект с установленной меткой удаления и является переходным состоянием, а не исходом. Expired — штатный терминальный исход (истекло окно неактивности), а не сбой.

      Допустимые значения: Pending, Ready, Expired, Failed, Terminating

    • status.publicURL
      строка
      Публичный URL для внешнего доступа (например, https://api.<public-domain>/<namespace>/<вид-таргета>/<имя-таргета>/). Здесь <вид-таргета> — краткий вид таргета экспорта: pvc, vd или snap (любой таргет на основе снимка), а <имя-таргета> — значение spec.targetRef.name.
    • status.serverState
      строка
      Необработанный сигнал прогресса от экспортер-пода (единственного писателя): Ready — сервер обслуживает запросы, IdleExpired — истекло окно неактивности. Контроллер выводит из него фазу и условия.

      Допустимые значения: Ready, IdleExpired

    • status.url
      строка
      Внутренний URL экспортер-пода (например, https://X.X.X.X:8085).
    • status.volumeMode
      строка
      Режим тома экспортированных данных.

      Допустимые значения: Block, Filesystem

DataImport

Короткие имена: di

Область: Namespaced
Версия: v1alpha1

Ресурс для импорта данных в PV, VolumeSnapshot, VirtualDisk или VirtualDiskSnapshot.
  • spec
    объект
    • spec.mode
      строка

      Дискриминатор, определяющий, что импорт делает с данными:

      • CreatePVC: запись в сохраняемый, создаваемый PVC (pvcTemplate). Долговечный артефакт не создаётся.
      • PopulateData: данные заливаются во временный (scratch) том (storageParams) и захватываются в долговечный VolumeSnapshotContent для уже существующего узла-снимка, указанного в snapshotRef.

      По умолчанию: CreatePVC

      Допустимые значения: CreatePVC, PopulateData

    • spec.publish
      булевый
      Включение внешнего доступа к импортер-поду за пределами кластера.

      По умолчанию: false

    • spec.pvcTemplate
      объект
      Только для режима CreatePVC. Шаблон PersistentVolumeClaim, полностью описывающий целевой PVC, в который записываются импортируемые данные; PVC сохраняется после импорта.
      • spec.pvcTemplate.metadata
        объект
        Метаданные PersistentVolumeClaim.
        • spec.pvcTemplate.metadata.annotations
          объект
          Аннотации PersistentVolumeClaim.
        • spec.pvcTemplate.metadata.labels
          объект
          Метки PersistentVolumeClaim.
        • spec.pvcTemplate.metadata.name
          строка
          Имя PersistentVolumeClaim.
      • spec.pvcTemplate.spec
        объект
        Спецификация PersistentVolumeClaim.
        • spec.pvcTemplate.spec.accessModes
          массив строк
          Желаемые режимы доступа к тому.
          • spec.pvcTemplate.spec.accessModes.Элемент массива
            строка

            Допустимые значения: ReadWriteOnce, ReadOnlyMany, ReadWriteMany, ReadWriteOncePod

        • spec.pvcTemplate.spec.resources
          объект
          Минимальные требования к ресурсам тома.
          • spec.pvcTemplate.spec.resources.requests
            объект
            Минимальный объём требуемых вычислительных ресурсов.
        • spec.pvcTemplate.spec.storageClassName
          строка
          Имя StorageClass, требуемого для PersistentVolumeClaim.
        • spec.pvcTemplate.spec.volumeMode
          строка
          Режим тома, требуемый для PersistentVolumeClaim.

          Допустимые значения: Block, Filesystem

    • spec.snapshotRef
      объект
      Только для режима PopulateData. Ссылка на уже существующий узел xxxSnapshot, которому принадлежит создаваемый долговечный артефакт (пространство имён неявно совпадает с пространством имён DataImport). Проставляется внешним создателем (d8/пользователь/система резервного копирования); контроллер DataImport её не читает — она нужна, чтобы обратный поиск state-snapshotter сопоставил лист по spec.snapshotRef.
      • spec.snapshotRef.apiVersion
        строка
        Группа/версия узла-снимка (например, snapshot.storage.k8s.io/v1).
      • spec.snapshotRef.kind
        строка

        Обязательный параметр

        Вид узла-снимка (например, VolumeSnapshot, VirtualDiskSnapshot).

        Минимальная длина: 1

      • spec.snapshotRef.name
        строка

        Обязательный параметр

        Имя узла-снимка.

        Минимальная длина: 1

    • spec.storageParams
      объект
      Только для режима PopulateData. Параметры временного (scratch) тома, в который заливаются импортируемые данные до захвата; уничтожается после создания долговечного VolumeSnapshotContent. Его StorageClass должен поддерживать снимки (ссылается на VolumeSnapshotClass через аннотацию storage.deckhouse.io/volumesnapshotclass).
      • spec.storageParams.size
        строка

        Обязательный параметр

        Запрашиваемый размер временного (scratch) PVC (величина Kubernetes, например 10Gi).

        Минимальная длина: 1

      • spec.storageParams.storageClassName
        строка

        Обязательный параметр

        StorageClass временного (scratch) PVC (должен поддерживать снимки).

        Минимальная длина: 1

      • spec.storageParams.volumeMode
        строка
        Режим тома временного (scratch) PVC. По умолчанию Filesystem.

        Допустимые значения: Block, Filesystem

    • spec.ttl
      строка

      Обязательный параметр

      Время жизни после последнего запроса пользователя.

      Допустимые значения:

      • <number>s;
      • <number>m;
      • <number>h.

      Например, 5m, 2h45m, или 1d.

      Шаблон: ^([0-9]+(\.[0-9]+)?h)?([0-9]+(\.[0-9]+)?m)?([0-9]+s)?$

    • spec.waitForFirstConsumer
      булевый
      Если параметр установлен в false, создаётся load-под для запуска процесса заполнения тома, когда в StorageClass для параметра volumeBindingMode задано значение WaitForFirstConsumer.

      По умолчанию: true

  • status
    объект
    Информация о статусе ресурса DataImport.
    • status.accessTimestamp
      строка
      Временная метка последнего доступа, обновляемая импортер-подом.
    • status.ca
      строка
      CA-сертификат в кодировке Base64 для TLS-соединения с импортер-подом.
    • status.completionTimestamp
      строка
      Время перехода DataImport в терминальную фазу (Completed, Expired или Failed). Проставляется контроллером один раз; сборщик мусора отсчитывает время хранения от этой метки.
    • status.conditions
      массив объектов
      • status.conditions.lastTransitionTime
        строка

        Время последнего перехода условия из одного статуса в другой.

        Обычно соответствует моменту изменения базового условия. Если время последнего перехода неизвестно, допускается использование времени изменения поля API.

      • status.conditions.message
        строка

        Человекочитаемое сообщение с подробностями о переходе статуса.

        Может быть пустой строкой.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число

        Значение .metadata.generation, на основе которого было установлено условие.

        Например, если текущее значение .metadata.generation равно 12, а .status.conditions[x].observedGeneration равно 9, то статус условия не соответствует текущему состоянию ресурса.

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка
        Причина текущего статуса условия.

        Допустимые значения: Pending, PVCCreated, ServerReady, InProgress, Expired, Deleted, UploadFinished, Completed, Failed, TargetFailed, CleanupFailed

      • status.conditions.status
        строка
        Статус условия.

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка
        Тип условия.

        Допустимые значения: Ready, UploadFinished, Completed

    • status.data
      объект
      Блок захваченных данных импорта. Содержит долговечный кластерный артефакт данных под data.artifactRef (VolumeSnapshotContent). Заполняется после завершения соответствующего VolumeCaptureRequest.
      • status.data.artifactRef
        объект
        Ссылка на долговечный кластерный артефакт данных (VolumeSnapshotContent), созданный этим импортом.
        • status.data.artifactRef.apiVersion
          строка
          Версия API артефакта данных.
        • status.data.artifactRef.kind
          строка
          Тип артефакта данных.
        • status.data.artifactRef.name
          строка
          Имя артефакта данных.
        • status.data.artifactRef.uid
          строка
          UID артефакта данных (например, UID VolumeSnapshotContent). Необязательное; заполняется по возможности.
      • status.data.fsType
        строка

        Файловая система, на которую фактически были записаны импортированные данные. Считывается с PersistentVolume временного (scratch) тома (spec.csi.fsType) до его уничтожения: том удаляется сразу после захвата, а сам артефакт тип файловой системы не хранит, поэтому это единственная сохраняющаяся запись о нём.

        Пустое значение означает «неизвестно», а не значение по умолчанию: при импорте в блочный том (Block) файловой системы нет вовсе, а CSI-драйвер может не записать её тип на томе.

    • status.phase
      строка
      Укрупнённое состояние жизненного цикла, которое пишет только контроллер: Pending → Ready → Completed | Expired | Failed. Значение Terminating означает объект с установленной меткой удаления и является переходным состоянием, а не исходом. Expired — штатный терминальный исход (истекло окно неактивности), а не сбой.

      Допустимые значения: Pending, Ready, Completed, Expired, Failed, Terminating

    • status.publicURL
      строка
      Публичный URL-адрес сервиса импортера.
    • status.serverState
      строка
      Необработанный сигнал прогресса от импортер-пода (единственного писателя): Ready — сервер обслуживает запросы, Finished — заливка клиента завершена долговечно, IdleExpired — истекло окно неактивности. Контроллер выводит из него фазу и условия.

      Допустимые значения: Ready, Finished, IdleExpired

    • status.url
      строка
      Внутренний URL-адрес сервиса импортера.
    • status.volumeMode
      строка
      Режим тома импортированных данных.

      Допустимые значения: Block, Filesystem

VolumeSnapshotClass

Короткие имена: vsclass, vsclasses

Область: Cluster

VolumeSnapshotClass определяет параметры для создания снимков томов, используемые нижележащей системой хранения.

Для использования укажите имя VolumeSnapshotClass в объекте VolumeSnapshot.

  • apiVersion
    строка

    Версия API представления объекта.

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

    Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • deletionPolicy
    строка

    Управляет поведением при удалении VolumeSnapshotContent и его физического снимка при удалении связанного VolumeSnapshot.

    Поддерживаемые значения:

    • Retain — VolumeSnapshotContent и его физический снимок в нижележащей системе хранения сохраняются.
    • Delete — VolumeSnapshotContent и его физический снимок в нижележащей системе хранения удаляются.

    Допустимые значения: Delete, Retain

  • driver
    строка
    Имя драйвера хранения, который обрабатывает этот VolumeSnapshotClass.
  • kind
    строка

    Тип REST-ресурса, который представляет объект.

    Серверы могут определять это значение из конечной точки, на которую клиент отправляет запросы.

    Нельзя обновить после создания. Значение должно быть в формате CamelCase.

    Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • metadata
    объект
  • parameters
    объект

    Карта ключ-значение с параметрами, специфичными для драйвера хранения, используемыми при создании снимков.

    Kubernetes не интерпретирует эти параметры.

VolumeSnapshotClass определяет параметры для создания снимков томов, используемые нижележащей системой хранения.

Для использования укажите имя VolumeSnapshotClass в объекте VolumeSnapshot.

  • apiVersion
    строка

    Версия API представления объекта.

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

    Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • deletionPolicy
    строка

    Управляет поведением при удалении VolumeSnapshotContent и его физического снимка при удалении связанного VolumeSnapshot. Поддерживаемые значения:

    • Retain — VolumeSnapshotContent и его физический снимок в нижележащей системе хранения сохраняются.
    • Delete — VolumeSnapshotContent и его физический снимок в нижележащей системе хранения удаляются.

    Допустимые значения: Delete, Retain

  • driver
    строка
    Имя драйвера хранения, который обрабатывает этот VolumeSnapshotClass.
  • kind
    строка

    Тип REST-ресурса, который представляет объект.

    Серверы могут определять это значение из конечной точки, на которую клиент отправляет запросы.

    Нельзя обновить после создания. Значение должно быть в формате CamelCase.

    Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • parameters
    объект

    Карта ключ-значение с параметрами, специфичными для драйвера хранения, используемыми при создании снимков.

    Kubernetes не интерпретирует эти параметры.

VolumeSnapshotContent

Короткие имена: vsc, vscs

Область: Cluster

VolumeSnapshotContent представляет фактический объект снимка «на диске» в нижележащей системе хранения.
  • apiVersion
    строка

    Версия API представления объекта.

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

    Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • kind
    строка

    Тип REST-ресурса, который представляет объект.

    Серверы могут определять это значение из конечной точки, на которую клиент отправляет запросы.

    Нельзя обновить после создания. Значение должно быть в формате CamelCase.

    Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • metadata
    объект
  • spec
    объект
    Свойства VolumeSnapshotContent, созданного нижележащей системой хранения.
    • spec.deletionPolicy
      строка

      Обязательный параметр

      Управляет поведением при удалении VolumeSnapshotContent и его физического снимка при удалении связанного VolumeSnapshot.

      Поддерживаемые значения:

      • Retain — VolumeSnapshotContent и его физический снимок в нижележащей системе хранения сохраняются.
      • Delete — VolumeSnapshotContent и его физический снимок в нижележащей системе хранения удаляются.

      Для динамически созданных снимков автоматически заполняется CSI snapshotter sidecar значением поля DeletionPolicy, определенным в соответствующем VolumeSnapshotClass. Для существующих снимков необходимо указать при создании объекта VolumeSnapshotContent.

      Допустимые значения: Delete, Retain

    • spec.driver
      строка

      Обязательный параметр

      Имя CSI-драйвера, используемого для создания физического снимка в нижележащей системе хранения.

      Должно совпадать с именем, возвращаемым вызовом CSI GetPluginName() для этого драйвера.

    • spec.source
      объект

      Обязательный параметр

      Указывает, является ли снимок (или должен быть) динамически созданным или уже существует и требует только представления в виде объекта Kubernetes.

      Неизменяемо после создания.

      • spec.source.snapshotHandle
        строка

        CSI snapshot_id существующего снимка в нижележащей системе хранения, для которого было (или должно быть) создано представление в виде объекта Kubernetes.

        Неизменяемо после создания.

      • spec.source.volumeHandle
        строка

        CSI volume_id тома, из которого должен быть динамически создан снимок.

        Неизменяемо после создания.

    • spec.sourceVolumeMode
      строка

      Режим тома, снимок которого создается. Может быть Filesystem или Block.

      Если не указано, режим исходного тома неизвестен.

      Неизменяемо после создания.

    • spec.volumeSnapshotClassName
      строка

      Имя VolumeSnapshotClass, из которого был (или будет) создан этот снимок.

      После создания снимка VolumeSnapshotClass может быть удален или пересоздан с другими значениями и не должен использоваться.

    • spec.volumeSnapshotRef
      объект

      Объект VolumeSnapshot (далее — референт), к которому привязан этот VolumeSnapshotContent.

      Поле VolumeSnapshot.Spec.VolumeSnapshotContentName должно ссылаться на имя этого VolumeSnapshotContent для валидности двунаправленной привязки.

      Для существующего объекта VolumeSnapshotContent необходимо указать имя и неймспейс объекта VolumeSnapshot для привязки. Неизменяемо после создания.

  • status
    объект
    Текущая информация о снимке.
    • status.creationTime
      целое число

      Временная метка создания точечного снимка нижележащей системой хранения.

      При динамическом создании снимка заполняется CSI snapshotter sidecar значением creation_time, возвращаемым из вызова gRPC CreateSnapshot CSI.

      Для существующего снимка заполняется значением creation_time, возвращаемым из вызова gRPC ListSnapshots CSI, если драйвер поддерживает это.

      Если не указано, то время создания неизвестно.

      Формат — время в наносекундах Unix, закодированное как int64. В Unix команда date +%s%N возвращает текущее время в наносекундах с 1970-01-01 00:00:00 UTC.

    • status.error
      объект

      Последняя наблюдаемая ошибка при создании снимка, если есть.

      После успешного повтора поле очищается.

      • status.error.message
        строка

        Детали возникшей ошибки при создании снимка, если указаны.

        Примечание: сообщение может быть залогировано и не должно содержать конфиденциальную информацию.

      • status.error.time
        строка
        Временная метка, когда была обнаружена ошибка.
    • status.readyToUse
      булевый

      Указывает, готов ли снимок для восстановления тома.

      При динамическом создании снимка заполняется CSI snapshotter sidecar значением ready_to_use, возвращаемым из вызова gRPC CreateSnapshot CSI.

      Для существующего снимка заполняется значением ready_to_use, возвращаемым из вызова gRPC ListSnapshots CSI, если драйвер поддерживает это, иначе устанавливается в True.

      Если не указано, готовность снимка неизвестна.

    • status.restoreSize
      целое число

      Полный размер снимка в байтах.

      При динамическом создании снимка заполняется CSI snapshotter sidecar значением size_bytes, возвращаемым из вызова gRPC CreateSnapshot CSI.

      Для существующего снимка заполняется значением size_bytes, возвращаемым из вызова gRPC ListSnapshots CSI, если драйвер поддерживает это. При восстановлении тома из этого снимка размер тома не должен быть меньше restoreSize, если он указан, иначе восстановление завершится ошибкой.

      Если не указано, размер неизвестен.

      Допустимые значения: 0 <= X

    • status.snapshotHandle
      строка

      CSI snapshot_id снимка в нижележащей системе хранения.

      Если не указано, динамическое создание снимка либо завершилось ошибкой, либо все еще выполняется.

    • status.volumeGroupSnapshotHandle
      строка
      CSI group_snapshot_id группового снимка в нижележащей системе хранения.
VolumeSnapshotContent представляет фактический объект снимка «на диске» в нижележащей системе хранения.
  • apiVersion
    строка

    Версия API представления объекта.

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

    Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • kind
    строка

    Тип REST-ресурса, который представляет объект.

    Серверы могут определять это значение из конечной точки, на которую клиент отправляет запросы. Нельзя обновить после создания. Значение должно быть в формате CamelCase.

    Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • spec
    объект
    Свойства VolumeSnapshotContent, созданного нижележащей системой хранения.
    • spec.deletionPolicy
      строка

      Обязательный параметр

      Управляет поведением при удалении VolumeSnapshotContent и его физического снимка при удалении связанного VolumeSnapshot.

      Поддерживаемые значения:

      • Retain — VolumeSnapshotContent и его физический снимок в нижележащей системе хранения сохраняются.
      • Delete — VolumeSnapshotContent и его физический снимок в нижележащей системе хранения удаляются.

      Для динамически созданных снимков автоматически заполняется CSI snapshotter sidecar значением поля DeletionPolicy, определенным в соответствующем VolumeSnapshotClass.

      Для существующих снимков необходимо указать при создании объекта VolumeSnapshotContent.

      Допустимые значения: Delete, Retain

    • spec.driver
      строка

      Обязательный параметр

      Имя CSI-драйвера, используемого для создания физического снимка в нижележащей системе хранения.

      Должно совпадать с именем, возвращаемым вызовом CSI GetPluginName() для этого драйвера.

    • spec.source
      объект

      Обязательный параметр

      Указывает, является ли снимок (или должен быть) динамически созданным или уже существует и требует только представления в виде объекта Kubernetes.

      Неизменяемо после создания.

      • spec.source.snapshotHandle
        строка

        CSI snapshot_id существующего снимка в нижележащей системе хранения, для которого было (или должно быть) создано представление в виде объекта Kubernetes.

        Неизменяемо после создания.

      • spec.source.volumeHandle
        строка

        CSI volume_id тома, из которого должен быть динамически создан снимок.

        Неизменяемо после создания.

    • spec.volumeSnapshotClassName
      строка

      Имя VolumeSnapshotClass, из которого был (или будет) создан этот снимок.

      После создания снимка VolumeSnapshotClass может быть удален или пересоздан с другими значениями и не должен использоваться.

    • spec.volumeSnapshotRef
      объект

      Объект VolumeSnapshot (далее — референт), к которому привязан этот VolumeSnapshotContent.

      Поле VolumeSnapshot.Spec.VolumeSnapshotContentName должно ссылаться на имя этого VolumeSnapshotContent для валидности двунаправленной привязки.

      Для существующего объекта VolumeSnapshotContent необходимо указать имя и неймспейс объекта VolumeSnapshot для привязки.

      Неизменяемо после создания.

  • status
    объект
    Текущая информация о снимке.
    • status.creationTime
      целое число

      Временная метка создания точечного снимка нижележащей системой хранения.

      При динамическом создании снимка заполняется CSI snapshotter sidecar значением creation_time, возвращаемым из вызова gRPC CreateSnapshot CSI.

      Для существующего снимка заполняется значением creation_time, возвращаемым из вызова gRPC ListSnapshots CSI, если драйвер поддерживает это.

      Если не указано, время создания неизвестно. Формат — время в наносекундах Unix, закодированное как int64. В Unix команда date +%s%N возвращает текущее время в наносекундах с 1970-01-01 00:00:00 UTC.

    • status.error
      объект

      Последняя наблюдаемая ошибка при создании снимка, если есть.

      После успешного повтора поле очищается.

      • status.error.message
        строка

        Детали возникшей ошибки при создании снимка, если указаны.

        Примечание: сообщение может быть залогировано и не должно содержать конфиденциальную информацию.

      • status.error.time
        строка
        Временная метка, когда была обнаружена ошибка.
    • status.readyToUse
      булевый

      Указывает, готов ли снимок для восстановления тома.

      При динамическом создании снимка заполняется CSI snapshotter sidecar значением ready_to_use, возвращаемым из вызова gRPC CreateSnapshot CSI.

      Для существующего снимка заполняется значением ready_to_use, возвращаемым из вызова gRPC ListSnapshots CSI, если драйвер поддерживает это, иначе устанавливается в True.

      Если не указано, готовность снимка неизвестна.

    • status.restoreSize
      целое число

      Полный размер снимка в байтах.

      При динамическом создании снимка заполняется CSI snapshotter sidecar значением size_bytes, возвращаемым из вызова gRPC CreateSnapshot CSI.

      Для существующего снимка заполняется значением size_bytes, возвращаемым из вызова gRPC ListSnapshots CSI, если драйвер поддерживает это.

      При восстановлении тома из этого снимка размер тома не должен быть меньше restoreSize, если он указан, иначе восстановление завершится ошибкой.

      Если не указано, размер неизвестен.

      Допустимые значения: 0 <= X

    • status.snapshotHandle
      строка

      CSI snapshot_id снимка в нижележащей системе хранения.

      Если не указано, динамическое создание снимка либо завершилось ошибкой, либо все еще выполняется.

VolumeSnapshot

Короткие имена: vs

Область: Namespaced

VolumeSnapshot — это запрос пользователя на создание точечного снимка постоянного тома или на привязку к существующему снимку.
  • apiVersion
    строка

    Версия API представления объекта.

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

    Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • kind
    строка

    Тип REST-ресурса, который представляет объект.

    Серверы могут определять это значение из конечной точки, на которую клиент отправляет запросы. Нельзя обновить после создания. Значение должно быть в формате CamelCase.

    Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • metadata
    объект
  • spec
    объект

    Свойства снимка, запрошенного пользователем.

    Подробнее: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots

    • spec.mode
      строка
      mode selects how this VolumeSnapshot obtains its content and is immutable once set. Capture (default): dynamic CSI snapshot from spec.source. Import: the data artifact is produced by a DataImport in the same namespace (reverse-lookup by DataImport.spec.snapshotRef); spec.source is omitted (required only when mode != Import) and the upstream snapshot-controller does not reconcile such a VolumeSnapshot - the state-snapshotter common controller binds it (sets status). Deckhouse extension: parity with spec.mode on every other state-snapshotter snapshot kind.

      По умолчанию: Capture

      Допустимые значения: Capture, Import

    • spec.source
      объект

      Указывает источник создания снимка.

      Может быть пустым для намерения восстановления (backup controller проставляет volumeSnapshotContentName после restore). Иначе должен быть указан ровно один из persistentVolumeClaimName, volumeSnapshotContentName или import.

      Неизменяемо после создания (кроме одноразовой установки volumeSnapshotContentName из пустого).

      • spec.source.persistentVolumeClaimName
        строка

        Имя объекта PersistentVolumeClaim, представляющего том, из которого должен быть создан снимок.

        PVC должен находиться в том же неймспейсе, что и объект VolumeSnapshot.

        Указывается, если снимок не существует и его необходимо создать.

        Неизменяемо после создания.

      • spec.source.volumeSnapshotContentName
        строка

        Имя существующего объекта VolumeSnapshotContent, представляющего существующий снимок тома.

        Указывается, если снимок уже существует и требуется только его представление в Kubernetes.

        Для намерения восстановления backup controller может один раз установить это поле из пустого после успешного restore.

    • spec.volumeSnapshotClassName
      строка

      Имя VolumeSnapshotClass, запрошенного VolumeSnapshot.

      Может быть пустым для использования класса снимков по умолчанию. В кластере может быть несколько классов снимков по умолчанию: один для каждого CSI-драйвера. Если класс снимков не указан, проверяется VolumeSnapshotSource для определения связанного CSI-драйвера, и используется класс снимков по умолчанию для этого CSI-драйвера.

      Если для одного CSI-драйвера существует несколько VolumeSnapshotClass, помеченных как используемые по умолчанию, CreateSnapshot завершается ошибкой и создает событие.

      Не допускается пустая строка.

  • status
    объект

    Текущая информация о снимке.

    Перед использованием необходимо проверить успешность привязки между объектами VolumeSnapshot и VolumeSnapshotContent, убедившись, что оба объекта указывают друг на друга.

    • status.boundSnapshotContentName
      строка

      Имя кластерного объекта SnapshotContent (state-snapshotter.deckhouse.io) state-snapshotter, который обеспечивает этот VolumeSnapshot как логический узел в дереве снимка.

      Записывается общим контроллером state-snapshotter в дополнение к boundVolumeSnapshotContentName. Расширение Deckhouse.

    • status.boundVolumeSnapshotContentName
      строка

      Имя объекта VolumeSnapshotContent, к которому привязан этот объект VolumeSnapshot.

      Если не указано, объект VolumeSnapshot еще не привязан к объекту VolumeSnapshotContent.

      Примечание: для предотвращения проблем с безопасностью перед использованием необходимо проверить успешность привязки между объектами VolumeSnapshot и VolumeSnapshotContent, убедившись, что оба объекта указывают друг на друга.

    • status.captureState
      объект
      captureState collects the state-snapshotter capture signals mirrored onto this VolumeSnapshot when it is a domain snapshot node: commonController holds the core-written capture-leg latches, and domainSpecificController holds the domain-written planning refs and lifecycle. Written by the state-snapshotter controllers. Deckhouse extension.
      • status.captureState.commonController
        объект
        commonController holds the core-written capture-leg success latches. Single writer: state-snapshotter core.
        • status.captureState.commonController.dataCaptured
          булевый
          dataCaptured is the data-leg success latch, declared only where a data line exists.
        • status.captureState.commonController.manifestCaptured
          булевый
          manifestCaptured is the manifest-leg success latch (declared on every capture node).
        • status.captureState.commonController.subtreeManifestsPersisted
          булевый
          subtreeManifestsPersisted is a core-written mirror of the bound SnapshotContent’s recursive “this node and all descendants archived their manifests” latch. Monotonic (false -> true).
        • status.captureState.commonController.subtreePlanned
          булевый
          subtreePlanned is a core-computed monotonic recursive latch: true once this node reached capture barrier 1 (domainSpecificController.phase >= Planned) and every direct child’s own subtreePlanned is true (the whole subtree finished planning). Domains only read it. Monotonic (false -> true).
      • status.captureState.domainSpecificController
        объект
        domainSpecificController holds the domain-written planning refs and lifecycle. Single writer: domain (SDK).
        • status.captureState.domainSpecificController.excludedRefs
          массив объектов
          excludedRefs are the domain’s direct exclusion vetoes at this node (the source objects it dropped via the exclude label while enumerating its children).
          • status.captureState.domainSpecificController.excludedRefs.apiVersion
            строка
          • status.captureState.domainSpecificController.excludedRefs.kind
            строка
          • status.captureState.domainSpecificController.excludedRefs.name
            строка
        • status.captureState.domainSpecificController.manifestCaptureRequestName
          строка
          manifestCaptureRequestName is the temporary MCR owned by the domain node while own-scope capture runs.
        • status.captureState.domainSpecificController.message
          строка
          message is a human-readable detail for phase=Failed.
        • status.captureState.domainSpecificController.phase
          строка
          phase is the domain lifecycle barrier (Planning|Planned|Finished|Failed).

          Допустимые значения: Planning, Planned, Finished, Failed

        • status.captureState.domainSpecificController.reason
          строка
          reason is a short, machine-readable reason for phase=Failed (free-form domain string).
        • status.captureState.domainSpecificController.volumeCaptureRequestName
          строка
          volumeCaptureRequestName is the temporary VCR owned by a data-leaf domain node while the data leg runs.
    • status.childrenSnapshotRefs
      массив объектов
      childrenSnapshotRefs are the direct child snapshot edges when this VolumeSnapshot participates in a snapshot tree. A VolumeSnapshot is a data leaf, so this is normally empty; kept for uniformity across snapshot kinds. Deckhouse extension.
      • status.childrenSnapshotRefs.apiVersion
        строка
      • status.childrenSnapshotRefs.kind
        строка
      • status.childrenSnapshotRefs.name
        строка
    • status.conditions
      массив объектов
      conditions report the state-snapshotter protocol readiness (conditions[Ready] is the single user-facing condition derived by the core), distinct from the CSI readyToUse binding signal. Written by the state-snapshotter core. Deckhouse extension.
      • status.conditions.lastTransitionTime
        строка
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        строка
        message is a human readable message indicating details about the transition. This may be an empty string.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Длина: 1..1024

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        строка
        status of the condition, one of True, False, Unknown.

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Максимальная длина: 316

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.creationTime
      строка

      Временная метка создания точечного снимка нижележащей системой хранения.

      При динамическом создании снимка заполняется контроллером снимков значением creation_time, возвращаемым из вызова gRPC CreateSnapshot CSI.

      Для существующего снимка заполняется значением creation_time, возвращаемым из вызова gRPC ListSnapshots CSI, если драйвер поддерживает это.

      Если не указано, время создания снимка неизвестно.

    • status.data
      объект
      Самодостаточная привязка данных (sourceRef + artifactRef + метаданные тома), зеркалируемая из привязанного SnapshotContent.status.data state-snapshotter, чтобы d8 определял дескриптор захваченного тома из этого namespaced VolumeSnapshot. Записывается общим контроллером state-snapshotter. Расширение Deckhouse.
      • status.data.artifactRef
        объект

        Обязательный параметр

        Durable-артефакт данных (VolumeSnapshotContent).
        • status.data.artifactRef.apiVersion
          строка

          Обязательный параметр

        • status.data.artifactRef.kind
          строка

          Обязательный параметр

        • status.data.artifactRef.name
          строка

          Обязательный параметр

        • status.data.artifactRef.uid
          строка
      • status.data.fsType
        строка
        Тип файловой системы источника (только для томов Filesystem).
      • status.data.size
        строка
        Реальный выделенный размер захваченного тома (например, “10Gi”).
      • status.data.sourceRef
        объект

        Обязательный параметр

        Захваченный источник PersistentVolumeClaim (uid — идентичность тома).
        • status.data.sourceRef.apiVersion
          строка

          Обязательный параметр

        • status.data.sourceRef.kind
          строка

          Обязательный параметр

        • status.data.sourceRef.name
          строка

          Обязательный параметр

        • status.data.sourceRef.namespace
          строка
        • status.data.sourceRef.uid
          строка
      • status.data.storageClassName
        строка
        StorageClass исходного захваченного тома.
      • status.data.volumeMode
        строка
        Режим тома источника (Block или Filesystem).

        Допустимые значения: Block, Filesystem

    • status.error
      объект

      Последняя наблюдаемая ошибка при создании снимка, если есть.

      Полезно контроллерам верхнего уровня (например, контроллеру приложения) для решения о продолжении ожидания создания снимка по типу ошибки. Контроллер снимков продолжает повторные попытки при возникновении ошибки во время создания снимка.

      После успешного создания поле очищается.

      • status.error.message
        строка

        Детали возникшей ошибки при создании снимка, если указаны.

        Примечание: сообщение может быть залогировано и не должно содержать конфиденциальную информацию.

      • status.error.time
        строка
        Временная метка, когда была обнаружена ошибка.
    • status.readyToUse
      булевый

      Указывает, готов ли снимок для восстановления тома.

      При динамическом создании снимка заполняется контроллером снимков значением ready_to_use, возвращаемым из вызова gRPC CreateSnapshot CSI.

      Для существующего снимка заполняется значением ready_to_use, возвращаемым из вызова gRPC ListSnapshots CSI, если драйвер поддерживает это, иначе устанавливается в True.

      Если не указано, готовность снимка неизвестна.

    • status.restoreSize
      строка

      Минимальный размер тома, необходимый для создания тома из этого снимка.

      При динамическом создании снимка заполняется контроллером снимков значением size_bytes, возвращаемым из вызова gRPC CreateSnapshot CSI.

      Для существующего снимка заполняется значением size_bytes, возвращаемым из вызова gRPC ListSnapshots CSI, если драйвер поддерживает это.

      При восстановлении тома из этого снимка размер тома не должен быть меньше restoreSize, если он указан, иначе восстановление завершится ошибкой.

      Если не указано, размер неизвестен.

      Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

    • status.sourceRef
      объект
      sourceRef is the full reference to the captured live source object (the source PVC), written by the state-snapshotter domain controller (PublishSnapshotSource). Self-contained for import-mode recreation. Deckhouse extension.
      • status.sourceRef.apiVersion
        строка

        Обязательный параметр

      • status.sourceRef.kind
        строка

        Обязательный параметр

      • status.sourceRef.name
        строка

        Обязательный параметр

      • status.sourceRef.namespace
        строка
        Namespace of the source object (namespaced sources only).
      • status.sourceRef.uid
        строка
        UID of the captured live source object (best-effort; used by d8-cli for import-mode recreation).
    • status.volumeGroupSnapshotName
      строка
      Имя VolumeGroupSnapshot, частью которого является этот VolumeSnapshot.
VolumeSnapshot — это запрос пользователя на создание точечного снимка постоянного тома или на привязку к существующему снимку.
  • apiVersion
    строка

    Версия API представления объекта.

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

    Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • kind
    строка

    Тип REST-ресурса, который представляет объект.

    Серверы могут определять это значение из конечной точки, на которую клиент отправляет запросы. Нельзя обновить после создания. Значение должно быть в формате CamelCase.

    Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • spec
    объект

    Свойства снимка, запрошенного пользователем.

    Подробнее: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots

    • spec.source
      объект

      Обязательный параметр

      Указывает источник создания снимка.

      Может быть пустым для намерения восстановления (backup controller проставляет volumeSnapshotContentName после restore). Иначе должен быть указан ровно один из persistentVolumeClaimName, volumeSnapshotContentName или import.

      Неизменяемо после создания (кроме одноразовой установки volumeSnapshotContentName из пустого).

      • spec.source.persistentVolumeClaimName
        строка

        Имя объекта PersistentVolumeClaim, представляющего том, из которого должен быть создан снимок.

        PVC должен находиться в том же неймспейсе, что и объект VolumeSnapshot.

        Указывается, если снимок не существует и его необходимо создать.

        Неизменяемо после создания.

      • spec.source.volumeSnapshotContentName
        строка

        Имя существующего объекта VolumeSnapshotContent, представляющего существующий снимок тома.

        Указывается, если снимок уже существует и требуется только его представление в Kubernetes.

        Для намерения восстановления backup controller может один раз установить это поле из пустого после успешного restore.

    • spec.volumeSnapshotClassName
      строка

      Имя VolumeSnapshotClass, запрошенного VolumeSnapshot.

      Может быть пустым для использования класса снимков по умолчанию.

      В кластере может быть несколько классов снимков по умолчанию: один для каждого CSI-драйвера. Если класс снимков не указан, проверяется VolumeSnapshotSource для определения связанного CSI-драйвера, и используется класс снимков по умолчанию для этого CSI-драйвера.

      Если для одного CSI-драйвера существует несколько VolumeSnapshotClass, помеченных как используемые по умолчанию, CreateSnapshot завершается ошибкой и создает событие.

      Не допускается пустая строка.

  • status
    объект

    Текущая информация о снимке.

    Перед использованием необходимо проверить успешность привязки между объектами VolumeSnapshot и VolumeSnapshotContent, убедившись, что оба объекта указывают друг на друга.

    • status.boundVolumeSnapshotContentName
      строка

      Имя объекта VolumeSnapshotContent, к которому привязан этот объект VolumeSnapshot.

      Если не указано, объект VolumeSnapshot еще не привязан к объекту VolumeSnapshotContent.

      Примечание: для предотвращения проблем с безопасностью перед использованием необходимо проверить успешность привязки между объектами VolumeSnapshot и VolumeSnapshotContent, убедившись, что оба объекта указывают друг на друга.

    • status.creationTime
      строка

      Временная метка создания точечного снимка нижележащей системой хранения.

      При динамическом создании снимка заполняется контроллером снимков значением creation_time, возвращаемым из вызова gRPC CreateSnapshot CSI.

      Для существующего снимка заполняется значением creation_time, возвращаемым из вызова gRPC ListSnapshots CSI, если драйвер поддерживает это.

      Если не указано, время создания снимка неизвестно.

    • status.error
      объект

      Последняя наблюдаемая ошибка при создании снимка, если есть.

      Полезно контроллерам верхнего уровня (например, контроллеру приложения) для решения о продолжении ожидания создания снимка по типу ошибки. Контроллер снимков продолжает повторные попытки при возникновении ошибки во время создания снимка.

      После успешного создания поле очищается.

      • status.error.message
        строка

        Детали возникшей ошибки при создании снимка, если указаны.

        Примечание: сообщение может быть залогировано и не должно содержать конфиденциальную информацию.

      • status.error.time
        строка
        Временная метка, когда была обнаружена ошибка.
    • status.readyToUse
      булевый

      Указывает, готов ли снимок для восстановления тома.

      При динамическом создании снимка заполняется контроллером снимков значением ready_to_use, возвращаемым из вызова gRPC CreateSnapshot CSI.

      Для существующего снимка заполняется значением ready_to_use, возвращаемым из вызова gRPC ListSnapshots CSI, если драйвер поддерживает это, иначе устанавливается в True.

      Если не указано, готовность снимка неизвестна.

    • status.restoreSize
      строка

      Минимальный размер тома, необходимый для создания тома из этого снимка.

      При динамическом создании снимка заполняется контроллером снимков значением size_bytes, возвращаемым из вызова gRPC CreateSnapshot CSI.

      Для существующего снимка заполняется значением size_bytes, возвращаемым из вызова gRPC ListSnapshots CSI, если драйвер поддерживает это.

      При восстановлении тома из этого снимка размер тома не должен быть меньше restoreSize, если он указан, иначе восстановление завершится ошибкой.

      Если не указано, размер неизвестен.

      Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

    • status.volumeGroupSnapshotName
      строка
      Имя VolumeGroupSnapshot, частью которого является этот VolumeSnapshot.