Стадия жизненного цикла модуля: Общедоступная версия
У модуля есть требования для установки
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 только при следующем reconcileEnsureVCR. 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указывает на durableVolumeSnapshotContent/PersistentVolume. Identity исходного PVC остаётся вspec.targetи в status не дублируется.Ready=True/Completed— успех.Ready=False/TargetsPending— нетерминальное ожидание: CSI capture продолжает retry. Сам по себеVolumeSnapshotContent.status.errorrequest не терминалит.- Любой другой 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 (defaultReadWriteOnce), а также rootfsTypeдля 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, но оставляет optionalapiVersionпустым; пример намеренно совпадает с 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
-
объектspec
-
строкаspec.publicIngressТип публичного доступа к экспортеру.
Допустимые значения:
KubernetesAPI,ConsoleFrontend -
булевыйspec.publishВключение внешнего доступа к экспортер-поду за пределами кластера.
-
объектspec.targetRef
Обязательный параметр
GroupKind-ссылка на целевой ресурс для экспорта (namespace неявный — тот же, что у DataExport).-
строкаspec.targetRef.groupAPI-группа целевого ресурса ("" или отсутствует для 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.caCA-сертификат в кодировке 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
-
объект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.caCA-сертификат в кодировке 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.uidUID артефакта данных (например, 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
-
строка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 для привязки. Неизменяемо после создания.
-
строкаspec.volumeSnapshotRef.apiVersionВерсия API референта.
-
строкаspec.volumeSnapshotRef.fieldPath
Если ссылается на часть объекта вместо всего объекта, должна содержать допустимое выражение доступа к полю JSON/Go, например
desiredState.manifest.containers[2].Например, если ссылка на объект указывает на контейнер в поде, может иметь значение:
spec.containers{name}(гдеnameотносится к имени контейнера, который вызвал событие) или если имя контейнера не указаноspec.containers[2](контейнер с индексом 2 в этом поде). Этот синтаксис выбран только для того, чтобы иметь четко определенный способ ссылки на часть объекта. -
строкаspec.volumeSnapshotRef.kind
Тип референта.
Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
-
строкаspec.volumeSnapshotRef.name
Имя референта.
Подробнее: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
строкаspec.volumeSnapshotRef.namespace
Неймспейс референта.
Подробнее: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
-
строкаspec.volumeSnapshotRef.resourceVersion
Конкретная версия ресурса, на которую сделана эта ссылка, если есть.
-
строкаspec.volumeSnapshotRef.uid
UID референта.
Подробнее: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
-
-
-
объектstatusТекущая информация о снимке.
-
целое числоstatus.creationTime
Временная метка создания точечного снимка нижележащей системой хранения.
При динамическом создании снимка заполняется CSI snapshotter sidecar значением
creation_time, возвращаемым из вызова gRPCCreateSnapshotCSI.Для существующего снимка заполняется значением
creation_time, возвращаемым из вызова gRPCListSnapshotsCSI, если драйвер поддерживает это.Если не указано, то время создания неизвестно.
Формат — время в наносекундах 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, возвращаемым из вызова gRPCCreateSnapshotCSI.Для существующего снимка заполняется значением
ready_to_use, возвращаемым из вызова gRPCListSnapshotsCSI, если драйвер поддерживает это, иначе устанавливается вTrue.Если не указано, готовность снимка неизвестна.
-
целое числоstatus.restoreSize
Полный размер снимка в байтах.
При динамическом создании снимка заполняется CSI snapshotter sidecar значением
size_bytes, возвращаемым из вызова gRPCCreateSnapshotCSI.Для существующего снимка заполняется значением
size_bytes, возвращаемым из вызова gRPCListSnapshotsCSI, если драйвер поддерживает это. При восстановлении тома из этого снимка размер тома не должен быть меньшеrestoreSize, если он указан, иначе восстановление завершится ошибкой.Если не указано, размер неизвестен.
Допустимые значения:
0 <= X -
строкаstatus.snapshotHandle
CSI
snapshot_idснимка в нижележащей системе хранения.Если не указано, динамическое создание снимка либо завершилось ошибкой, либо все еще выполняется.
-
строкаstatus.volumeGroupSnapshotHandleCSI
group_snapshot_idгруппового снимка в нижележащей системе хранения.
-
-
строка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 для привязки.
Неизменяемо после создания.
-
строкаspec.volumeSnapshotRef.apiVersionВерсия API референта.
-
строкаspec.volumeSnapshotRef.fieldPath
Если ссылается на часть объекта вместо всего объекта, строка должна содержать допустимое выражение доступа к полю JSON/Go, например
desiredState.manifest.containers[2].Например, если ссылка на объект указывает на контейнер в поде, может иметь значение:
spec.containers{name}(гдеnameотносится к имени контейнера, который вызвал событие) или если имя контейнера не указаноspec.containers[2](контейнер с индексом 2 в этом поде). Этот синтаксис выбран только для того, чтобы иметь четко определенный способ ссылки на часть объекта. -
строкаspec.volumeSnapshotRef.kind
Тип референта.
Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
-
строкаspec.volumeSnapshotRef.name
Имя референта.
Подробнее: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
строкаspec.volumeSnapshotRef.namespace
Неймспейс референта.
Подробнее: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
-
строкаspec.volumeSnapshotRef.resourceVersion
Конкретная версия ресурса, на которую сделана эта ссылка, если есть.
-
строкаspec.volumeSnapshotRef.uid
UID референта.
Подробнее: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
-
-
-
объектstatusТекущая информация о снимке.
-
целое числоstatus.creationTime
Временная метка создания точечного снимка нижележащей системой хранения.
При динамическом создании снимка заполняется CSI snapshotter sidecar значением
creation_time, возвращаемым из вызова gRPCCreateSnapshotCSI.Для существующего снимка заполняется значением
creation_time, возвращаемым из вызова gRPCListSnapshotsCSI, если драйвер поддерживает это.Если не указано, время создания неизвестно. Формат — время в наносекундах 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, возвращаемым из вызова gRPCCreateSnapshotCSI.Для существующего снимка заполняется значением
ready_to_use, возвращаемым из вызова gRPCListSnapshotsCSI, если драйвер поддерживает это, иначе устанавливается вTrue.Если не указано, готовность снимка неизвестна.
-
целое числоstatus.restoreSize
Полный размер снимка в байтах.
При динамическом создании снимка заполняется CSI snapshotter sidecar значением
size_bytes, возвращаемым из вызова gRPCCreateSnapshotCSI.Для существующего снимка заполняется значением
size_bytes, возвращаемым из вызова gRPCListSnapshotsCSI, если драйвер поддерживает это.При восстановлении тома из этого снимка размер тома не должен быть меньше
restoreSize, если он указан, иначе восстановление завершится ошибкой.Если не указано, размер неизвестен.
Допустимые значения:
0 <= X -
строкаstatus.snapshotHandle
CSI
snapshot_idснимка в нижележащей системе хранения.Если не указано, динамическое создание снимка либо завершилось ошибкой, либо все еще выполняется.
-
VolumeSnapshot
Короткие имена: vs
Область: Namespaced
-
строка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.modemode 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.captureStatecaptureState 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.commonControllercommonController holds the core-written capture-leg success latches. Single writer: state-snapshotter core.
-
булевыйstatus.captureState.commonController.dataCaptureddataCaptured is the data-leg success latch, declared only where a data line exists.
-
булевыйstatus.captureState.commonController.manifestCapturedmanifestCaptured is the manifest-leg success latch (declared on every capture node).
-
булевыйstatus.captureState.commonController.subtreeManifestsPersistedsubtreeManifestsPersisted 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.subtreePlannedsubtreePlanned 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.domainSpecificControllerdomainSpecificController holds the domain-written planning refs and lifecycle. Single writer: domain (SDK).
-
массив объектовstatus.captureState.domainSpecificController.excludedRefsexcludedRefs 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.manifestCaptureRequestNamemanifestCaptureRequestName is the temporary MCR owned by the domain node while own-scope capture runs.
-
строкаstatus.captureState.domainSpecificController.messagemessage is a human-readable detail for phase=Failed.
-
строкаstatus.captureState.domainSpecificController.phasephase is the domain lifecycle barrier (Planning|Planned|Finished|Failed).
Допустимые значения:
Planning,Planned,Finished,Failed -
строкаstatus.captureState.domainSpecificController.reasonreason is a short, machine-readable reason for phase=Failed (free-form domain string).
-
строкаstatus.captureState.domainSpecificController.volumeCaptureRequestNamevolumeCaptureRequestName is the temporary VCR owned by a data-leaf domain node while the data leg runs.
-
-
-
массив объектовstatus.childrenSnapshotRefschildrenSnapshotRefs 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.conditionsconditions 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.lastTransitionTimelastTransitionTime 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.messagemessage is a human readable message indicating details about the transition. This may be an empty string.
Максимальная длина:
32768 -
целое числоstatus.conditions.observedGenerationobservedGeneration 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.reasonreason 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.statusstatus of the condition, one of True, False, Unknown.
Допустимые значения:
True,False,Unknown -
строкаstatus.conditions.typetype 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, возвращаемым из вызова gRPCCreateSnapshotCSI.Для существующего снимка заполняется значением
creation_time, возвращаемым из вызова gRPCListSnapshotsCSI, если драйвер поддерживает это.Если не указано, время создания снимка неизвестно.
-
объект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.storageClassNameStorageClass исходного захваченного тома.
-
строкаstatus.data.volumeModeРежим тома источника (Block или Filesystem).
Допустимые значения:
Block,Filesystem
-
-
объектstatus.error
Последняя наблюдаемая ошибка при создании снимка, если есть.
Полезно контроллерам верхнего уровня (например, контроллеру приложения) для решения о продолжении ожидания создания снимка по типу ошибки. Контроллер снимков продолжает повторные попытки при возникновении ошибки во время создания снимка.
После успешного создания поле очищается.
-
строкаstatus.error.message
Детали возникшей ошибки при создании снимка, если указаны.
Примечание: сообщение может быть залогировано и не должно содержать конфиденциальную информацию.
-
строкаstatus.error.timeВременная метка, когда была обнаружена ошибка.
-
-
булевыйstatus.readyToUse
Указывает, готов ли снимок для восстановления тома.
При динамическом создании снимка заполняется контроллером снимков значением
ready_to_use, возвращаемым из вызова gRPCCreateSnapshotCSI.Для существующего снимка заполняется значением
ready_to_use, возвращаемым из вызова gRPCListSnapshotsCSI, если драйвер поддерживает это, иначе устанавливается вTrue.Если не указано, готовность снимка неизвестна.
-
строкаstatus.restoreSize
Минимальный размер тома, необходимый для создания тома из этого снимка.
При динамическом создании снимка заполняется контроллером снимков значением
size_bytes, возвращаемым из вызова gRPCCreateSnapshotCSI.Для существующего снимка заполняется значением
size_bytes, возвращаемым из вызова gRPCListSnapshotsCSI, если драйвер поддерживает это.При восстановлении тома из этого снимка размер тома не должен быть меньше
restoreSize, если он указан, иначе восстановление завершится ошибкой.Если не указано, размер неизвестен.
Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ -
объектstatus.sourceRefsourceRef 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.namespaceNamespace of the source object (namespaced sources only).
-
строкаstatus.sourceRef.uidUID of the captured live source object (best-effort; used by d8-cli for import-mode recreation).
-
-
строкаstatus.volumeGroupSnapshotNameИмя VolumeGroupSnapshot, частью которого является этот 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, возвращаемым из вызова gRPCCreateSnapshotCSI.Для существующего снимка заполняется значением
creation_time, возвращаемым из вызова gRPCListSnapshotsCSI, если драйвер поддерживает это.Если не указано, время создания снимка неизвестно.
-
объектstatus.error
Последняя наблюдаемая ошибка при создании снимка, если есть.
Полезно контроллерам верхнего уровня (например, контроллеру приложения) для решения о продолжении ожидания создания снимка по типу ошибки. Контроллер снимков продолжает повторные попытки при возникновении ошибки во время создания снимка.
После успешного создания поле очищается.
-
строкаstatus.error.message
Детали возникшей ошибки при создании снимка, если указаны.
Примечание: сообщение может быть залогировано и не должно содержать конфиденциальную информацию.
-
строкаstatus.error.timeВременная метка, когда была обнаружена ошибка.
-
-
булевыйstatus.readyToUse
Указывает, готов ли снимок для восстановления тома.
При динамическом создании снимка заполняется контроллером снимков значением
ready_to_use, возвращаемым из вызова gRPCCreateSnapshotCSI.Для существующего снимка заполняется значением
ready_to_use, возвращаемым из вызова gRPCListSnapshotsCSI, если драйвер поддерживает это, иначе устанавливается вTrue.Если не указано, готовность снимка неизвестна.
-
строкаstatus.restoreSize
Минимальный размер тома, необходимый для создания тома из этого снимка.
При динамическом создании снимка заполняется контроллером снимков значением
size_bytes, возвращаемым из вызова gRPCCreateSnapshotCSI.Для существующего снимка заполняется значением
size_bytes, возвращаемым из вызова gRPCListSnapshotsCSI, если драйвер поддерживает это.При восстановлении тома из этого снимка размер тома не должен быть меньше
restoreSize, если он указан, иначе восстановление завершится ошибкой.Если не указано, размер неизвестен.
Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ -
строкаstatus.volumeGroupSnapshotNameИмя VolumeGroupSnapshot, частью которого является этот VolumeSnapshot.
-