Files
openebs/charts/zfs-localpv/charts/crds/templates/zfssnapshot.yaml
2025-12-09 19:34:54 +11:00

398 lines
20 KiB
YAML

{{- if .Values.zfsLocalPv.enabled -}}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
{{- include "crds.extraAnnotations" .Values.zfsLocalPv | nindent 4 }}
name: zfssnapshots.zfs.openebs.io
spec:
group: zfs.openebs.io
names:
kind: ZFSSnapshot
listKind: ZFSSnapshotList
plural: zfssnapshots
shortNames:
- zfssnap
singular: zfssnapshot
scope: Namespaced
versions:
- name: v1
schema:
openAPIV3Schema:
description: ZFSSnapshot represents a ZFS Snapshot of the zfsvolume
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: |-
VolumeInfo defines ZFS volume parameters for all modes in which
ZFS volumes can be created like - ZFS volume with filesystem,
ZFS Volume exposed as zfs or ZFS volume exposed as raw block device.
Some of the parameters can be only set during creation time
(as specified in the details of the parameter), and a few are editable.
In case of Cloned volumes, the parameters are assigned the same values
as the source volume.
properties:
capacity:
description: Capacity of the volume
minLength: 1
type: string
compression:
description: |-
Compression specifies the block-level compression algorithm to be applied to the ZFS Volume.
The value "on" indicates ZFS to use the default compression algorithm. The default compression
algorithm used by ZFS will be either lzjb or, if the lz4_compress feature is enabled, lz4.
Compression property can be edited after the volume has been created. The change will only
be applied to the newly-written data. For instance, if the Volume was created with "off" and
the next day the compression was modified to "on", the data written prior to setting "on" will
not be compressed.
Default Value: off.
pattern: ^(on|off|lzjb|zstd(?:-fast|-[1-9]|-1[0-9])?|gzip(?:-[1-9])?|zle|lz4)$
type: string
dedup:
description: |-
Deduplication is the process for removing redundant data at the block level,
reducing the total amount of data stored. If a file system has the dedup property
enabled, duplicate data blocks are removed synchronously.
The result is that only unique data is stored and common components are shared among files.
Deduplication can consume significant processing power (CPU) and memory as well as generate additional disk IO.
Before creating a pool with deduplication enabled, ensure that you have planned your hardware
requirements appropriately and implemented appropriate recovery practices, such as regular backups.
As an alternative to deduplication consider using compression=lz4, as a less resource-intensive alternative.
should be enabled on the zvol.
Dedup property can be edited after the volume has been created.
Default Value: off.
enum:
- "on"
- "off"
type: string
encryption:
description: |-
Enabling the encryption feature allows for the creation of
encrypted filesystems and volumes. ZFS will encrypt file and zvol data,
file attributes, ACLs, permission bits, directory listings, FUID mappings,
and userused / groupused data. ZFS will not encrypt metadata related to the
pool structure, including dataset and snapshot names, dataset hierarchy,
properties, file size, file holes, and deduplication tables
(though the deduplicated data itself is encrypted).
Default Value: off.
pattern: ^(on|off|aes-128-[c,g]cm|aes-192-[c,g]cm|aes-256-[c,g]cm)$
type: string
fsType:
description: |-
FsType specifies filesystem type for the zfs volume/dataset.
If FsType is provided as "zfs", then the driver will create a
ZFS dataset, formatting is not required as underlying filesystem is ZFS anyway.
If FsType is ext2, ext3, ext4 or xfs, then the driver will create a ZVOL and
format the volume accordingly.
FsType can not be modified once volume has been provisioned.
Default Value: ext4.
type: string
keyformat:
description: |-
KeyFormat specifies format of the encryption key
The supported KeyFormats are passphrase, raw, hex.
enum:
- passphrase
- raw
- hex
type: string
keylocation:
description: KeyLocation is the location of key for the encryption
type: string
ownerNodeID:
description: |-
OwnerNodeID is the Node ID where the ZPOOL is running which is where
the volume has been provisioned.
OwnerNodeID can not be edited after the volume has been provisioned.
minLength: 1
type: string
poolName:
description: |-
poolName specifies the name of the pool where the volume has been created.
PoolName can not be edited after the volume has been provisioned.
minLength: 1
type: string
quotaType:
description: |-
quotaType determines whether the dataset volume quota type is of type "quota" or "refquota".
QuotaType can not be modified once volume has been provisioned.
Default Value: quota.
enum:
- quota
- refquota
type: string
recordsize:
description: |-
Specifies a suggested block size for files in the file system.
The size specified must be a power of two greater than or equal to 512 and less than or equal to 128 Kbytes.
RecordSize property can be edited after the volume has been created.
Changing the file system's recordsize affects only files created afterward; existing files are unaffected.
Default Value: 128k.
minLength: 1
type: string
shared:
description: |-
Shared specifies whether the volume can be shared among multiple pods.
If it is not set to "yes", then the ZFS-LocalPV Driver will not allow
the volumes to be mounted by more than one pods.
enum:
- "yes"
- "no"
type: string
snapname:
description: |-
SnapName specifies the name of the snapshot where the volume has been cloned from.
Snapname can not be edited after the volume has been provisioned.
type: string
thinProvision:
description: |-
ThinProvision describes whether space reservation for the source volume is required or not.
The value "yes" indicates that volume should be thin provisioned and "no" means thick provisioning of the volume.
If thinProvision is set to "yes" then volume can be provisioned even if the ZPOOL does not
have the enough capacity.
If thinProvision is set to "no" then volume can be provisioned only if the ZPOOL has enough
capacity and capacity required by volume can be reserved.
ThinProvision can not be modified once volume has been provisioned.
Default Value: no.
enum:
- "yes"
- "no"
type: string
volblocksize:
description: |-
VolBlockSize specifies the block size for the zvol.
The volsize can only be set to a multiple of volblocksize, and cannot be zero.
VolBlockSize can not be edited after the volume has been provisioned.
Default Value: 8k.
minLength: 1
type: string
volumeType:
description: |-
volumeType determines whether the volume is of type "DATASET" or "ZVOL".
If fstype provided in the storageclass is "zfs", a volume of type dataset will be created.
If "ext4", "ext3", "ext2" or "xfs" is mentioned as fstype
in the storageclass, then a volume of type zvol will be created, which will be
further formatted as the fstype provided in the storageclass.
VolumeType can not be modified once volume has been provisioned.
enum:
- ZVOL
- DATASET
type: string
required:
- capacity
- ownerNodeID
- poolName
- volumeType
type: object
status:
description: SnapStatus string that reflects if the snapshot was created
successfully
properties:
state:
type: string
type: object
required:
- spec
- status
type: object
served: true
storage: true
- name: v1alpha1
schema:
openAPIV3Schema:
description: ZFSSnapshot represents a ZFS Snapshot of the zfsvolume
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: |-
VolumeInfo defines ZFS volume parameters for all modes in which
ZFS volumes can be created like - ZFS volume with filesystem,
ZFS Volume exposed as zfs or ZFS volume exposed as raw block device.
Some of the parameters can be only set during creation time
(as specified in the details of the parameter), and a few are editable.
In case of Cloned volumes, the parameters are assigned the same values
as the source volume.
properties:
capacity:
description: Capacity of the volume
minLength: 1
type: string
compression:
description: |-
Compression specifies the block-level compression algorithm to be applied to the ZFS Volume.
The value "on" indicates ZFS to use the default compression algorithm. The default compression
algorithm used by ZFS will be either lzjb or, if the lz4_compress feature is enabled, lz4.
Compression property can be edited after the volume has been created. The change will only
be applied to the newly-written data. For instance, if the Volume was created with "off" and
the next day the compression was modified to "on", the data written prior to setting "on" will
not be compressed.
Default Value: off.
pattern: ^(on|off|lzjb|gzip|gzip-[1-9]|zle|lz4)$
type: string
dedup:
description: |-
Deduplication is the process for removing redundant data at the block level,
reducing the total amount of data stored. If a file system has the dedup property
enabled, duplicate data blocks are removed synchronously.
The result is that only unique data is stored and common components are shared among files.
Deduplication can consume significant processing power (CPU) and memory as well as generate additional disk IO.
Before creating a pool with deduplication enabled, ensure that you have planned your hardware
requirements appropriately and implemented appropriate recovery practices, such as regular backups.
As an alternative to deduplication consider using compression=lz4, as a less resource-intensive alternative.
should be enabled on the zvol.
Dedup property can be edited after the volume has been created.
Default Value: off.
enum:
- "on"
- "off"
type: string
encryption:
description: |-
Enabling the encryption feature allows for the creation of
encrypted filesystems and volumes. ZFS will encrypt file and zvol data,
file attributes, ACLs, permission bits, directory listings, FUID mappings,
and userused / groupused data. ZFS will not encrypt metadata related to the
pool structure, including dataset and snapshot names, dataset hierarchy,
properties, file size, file holes, and deduplication tables
(though the deduplicated data itself is encrypted).
Default Value: off.
pattern: ^(on|off|aes-128-[c,g]cm|aes-192-[c,g]cm|aes-256-[c,g]cm)$
type: string
fsType:
description: |-
FsType specifies filesystem type for the zfs volume/dataset.
If FsType is provided as "zfs", then the driver will create a
ZFS dataset, formatting is not required as underlying filesystem is ZFS anyway.
If FsType is ext2, ext3, ext4 or xfs, then the driver will create a ZVOL and
format the volume accordingly.
FsType can not be modified once volume has been provisioned.
Default Value: ext4.
type: string
keyformat:
description: |-
KeyFormat specifies format of the encryption key
The supported KeyFormats are passphrase, raw, hex.
enum:
- passphrase
- raw
- hex
type: string
keylocation:
description: KeyLocation is the location of key for the encryption
type: string
ownerNodeID:
description: |-
OwnerNodeID is the Node ID where the ZPOOL is running which is where
the volume has been provisioned.
OwnerNodeID can not be edited after the volume has been provisioned.
minLength: 1
type: string
poolName:
description: |-
poolName specifies the name of the pool where the volume has been created.
PoolName can not be edited after the volume has been provisioned.
minLength: 1
type: string
recordsize:
description: |-
Specifies a suggested block size for files in the file system.
The size specified must be a power of two greater than or equal to 512 and less than or equal to 128 Kbytes.
RecordSize property can be edited after the volume has been created.
Changing the file system's recordsize affects only files created afterward; existing files are unaffected.
Default Value: 128k.
minLength: 1
type: string
snapname:
description: |-
SnapName specifies the name of the snapshot where the volume has been cloned from.
Snapname can not be edited after the volume has been provisioned.
type: string
thinProvision:
description: |-
ThinProvision describes whether space reservation for the source volume is required or not.
The value "yes" indicates that volume should be thin provisioned and "no" means thick provisioning of the volume.
If thinProvision is set to "yes" then volume can be provisioned even if the ZPOOL does not
have the enough capacity.
If thinProvision is set to "no" then volume can be provisioned only if the ZPOOL has enough
capacity and capacity required by volume can be reserved.
ThinProvision can not be modified once volume has been provisioned.
Default Value: no.
enum:
- "yes"
- "no"
type: string
volblocksize:
description: |-
VolBlockSize specifies the block size for the zvol.
The volsize can only be set to a multiple of volblocksize, and cannot be zero.
VolBlockSize can not be edited after the volume has been provisioned.
Default Value: 8k.
minLength: 1
type: string
volumeType:
description: |-
volumeType determines whether the volume is of type "DATASET" or "ZVOL".
If fstype provided in the storageclass is "zfs", a volume of type dataset will be created.
If "ext4", "ext3", "ext2" or "xfs" is mentioned as fstype
in the storageclass, then a volume of type zvol will be created, which will be
further formatted as the fstype provided in the storageclass.
VolumeType can not be modified once volume has been provisioned.
enum:
- ZVOL
- DATASET
type: string
required:
- capacity
- ownerNodeID
- poolName
- volumeType
type: object
status:
description: SnapStatus string that reflects if the snapshot was created
successfully
properties:
state:
type: string
type: object
required:
- spec
- status
type: object
served: true
storage: false
{{- end -}}