|
| 1 | +apiVersion: apiextensions.k8s.io/v1 |
| 2 | +kind: CustomResourceDefinition |
| 3 | +metadata: |
| 4 | + name: vaststorages.storage.vastdata.com |
| 5 | +spec: |
| 6 | + group: storage.vastdata.com |
| 7 | + names: |
| 8 | + kind: VastStorage |
| 9 | + listKind: VastStorageList |
| 10 | + plural: vaststorages |
| 11 | + singular: vaststorage |
| 12 | + scope: Namespaced |
| 13 | + versions: |
| 14 | + - additionalPrinterColumns: |
| 15 | + - description: Secret |
| 16 | + jsonPath: .spec.secretName |
| 17 | + name: Secret |
| 18 | + type: string |
| 19 | + - description: Storage Class |
| 20 | + jsonPath: .spec.storageClass.name |
| 21 | + name: StorageClass |
| 22 | + type: string |
| 23 | + - description: Snapshot Class |
| 24 | + jsonPath: .spec.snapshotClass.name |
| 25 | + name: SnapshotClass |
| 26 | + type: string |
| 27 | + - description: Storage Type |
| 28 | + jsonPath: .spec.driverType |
| 29 | + name: Type |
| 30 | + type: string |
| 31 | + name: v1 |
| 32 | + schema: |
| 33 | + openAPIV3Schema: |
| 34 | + description: VastStorage is the Schema for the vaststorages API |
| 35 | + properties: |
| 36 | + apiVersion: |
| 37 | + 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' |
| 38 | + type: string |
| 39 | + kind: |
| 40 | + 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' |
| 41 | + type: string |
| 42 | + metadata: |
| 43 | + type: object |
| 44 | + spec: |
| 45 | + description: Spec defines the desired state of VastStorage. |
| 46 | + properties: |
| 47 | + allowVolumeExpansion: |
| 48 | + default: true |
| 49 | + description: Allows resizing existing volumes. |
| 50 | + type: boolean |
| 51 | + blockProvisioner: |
| 52 | + description: | |
| 53 | + [OLM Console only] Used internally by the OpenShift UI form when driverType is 'block'. Automatically sets provisioner. Should not be set manually in YAML mode. |
| 54 | + type: string |
| 55 | + blockingClones: |
| 56 | + default: false |
| 57 | + description: |- |
| 58 | + If true, the CSI driver will wait for the GSS (global snapshot stream) process to fully complete |
| 59 | + before returning from a volume clone operation. |
| 60 | + This ensures the volume is fully usable and consistent at the time of provisioning, but may add |
| 61 | + significant latency if the underlying GSS operation is long-running. |
| 62 | + If false (default), the driver returns as soon as the clone operation is initiated, allowing |
| 63 | + Kubernetes to proceed while the data stream continues in the background. |
| 64 | + type: boolean |
| 65 | + clusterName: |
| 66 | + default: "" |
| 67 | + description: The name of VastCluster reference. |
| 68 | + type: string |
| 69 | + createSnapshotClass: |
| 70 | + default: true |
| 71 | + description: Create SnapshotClass for VastStorage. |
| 72 | + type: boolean |
| 73 | + driverType: |
| 74 | + default: nfs |
| 75 | + description: Choose the driver type for VastStorage. |
| 76 | + enum: |
| 77 | + - nfs |
| 78 | + - block |
| 79 | + type: string |
| 80 | + ephemeralVolumeNameFormat: |
| 81 | + default: csi:{namespace}:{name}:{id} |
| 82 | + description: String template for CSI-provisioned ephemeral volumes, within VAST. |
| 83 | + type: string |
| 84 | + fsType: |
| 85 | + description: Filesystem type for volume creation. |
| 86 | + enum: |
| 87 | + - "" |
| 88 | + - ext4 |
| 89 | + - ext3 |
| 90 | + - xfs |
| 91 | + nullable: true |
| 92 | + type: string |
| 93 | + hostEncryption: |
| 94 | + description: |- |
| 95 | + Enables encryption using LUKS on the device at the client side. |
| 96 | + If set, the CSI driver will expect a `passphrase` to be provided in the vast-mgmt Kubernetes Secret. |
| 97 | + nullable: true |
| 98 | + properties: |
| 99 | + cipher: |
| 100 | + description: Encryption cipher used for LUKS. |
| 101 | + nullable: true |
| 102 | + type: string |
| 103 | + hash: |
| 104 | + description: Hash algorithm used for key derivation. |
| 105 | + nullable: true |
| 106 | + type: string |
| 107 | + key_size: |
| 108 | + description: Key size in bits, e.g., 256 or 512. Must be supported by the selected cipher |
| 109 | + nullable: true |
| 110 | + type: integer |
| 111 | + pbkdf_memory: |
| 112 | + description: Memory cost for PBKDF in kilobytes. |
| 113 | + nullable: true |
| 114 | + type: integer |
| 115 | + perf-no_read_workqueue: |
| 116 | + default: true |
| 117 | + description: Bypass read workqueue. Reduces latency by avoiding workqueue overhead for read operations. |
| 118 | + nullable: true |
| 119 | + type: boolean |
| 120 | + perf-no_write_workqueue: |
| 121 | + default: true |
| 122 | + description: Bypass write workqueue. Reduces latency by avoiding workqueue overhead for write operations. |
| 123 | + nullable: true |
| 124 | + type: boolean |
| 125 | + perf-same_cpu_crypt: |
| 126 | + default: true |
| 127 | + description: Use same CPU for encryption work. Improves performance by keeping encryption on the same CPU core. |
| 128 | + nullable: true |
| 129 | + type: boolean |
| 130 | + perf-submit_from_crypt_cpus: |
| 131 | + default: true |
| 132 | + description: Submit IO from crypt CPUs. Optimizes IO submission path for encrypted devices. |
| 133 | + nullable: true |
| 134 | + type: boolean |
| 135 | + type: object |
| 136 | + mountOptions: |
| 137 | + default: [] |
| 138 | + description: Add any extra mount NFS options here. |
| 139 | + items: |
| 140 | + type: string |
| 141 | + type: array |
| 142 | + nfsProvisioner: |
| 143 | + description: | |
| 144 | + [OLM Console only] Used internally by the OpenShift UI form when driverType is 'nfs'. Automatically sets provisioner. Should not be set manually in YAML mode. |
| 145 | + type: string |
| 146 | + provisioner: |
| 147 | + description: The name of VastDriver provisioner reference. |
| 148 | + type: string |
| 149 | + qosPolicy: |
| 150 | + description: Name of QoS policy associated with the view or volume. |
| 151 | + nullable: true |
| 152 | + type: string |
| 153 | + reclaimPolicy: |
| 154 | + default: Delete |
| 155 | + description: Reclaim policy defines what happens to the volume when the corresponding PersistentVolumeClaim (PVC) is deleted. See https://kubernetes.io/docs/concepts/storage/storage-classes/#reclaim-policy for more details. |
| 156 | + enum: |
| 157 | + - Delete |
| 158 | + - Retain |
| 159 | + type: string |
| 160 | + secretName: |
| 161 | + default: "" |
| 162 | + description: The name of VMS Secret object. |
| 163 | + type: string |
| 164 | + secretNamespace: |
| 165 | + default: "" |
| 166 | + description: Secret namespace. If not specified, the Secret will be looked up in the same namespace where the Operator is running. |
| 167 | + type: string |
| 168 | + setDefaultStorageClass: |
| 169 | + default: false |
| 170 | + description: When enabled, Vast CSI will be set as the default storage class for the entire Kubernetes cluster. This means Vast CSI will automatically be chosen as the storage class for persistent volume claims (PVCs) that do not specify a storage class. See https://kubernetes.io/docs/concepts/storage/storage-classes/#default-storageclass for more details. |
| 171 | + type: boolean |
| 172 | + snapshotClass: |
| 173 | + description: VolumeSnapshotClass definition. |
| 174 | + properties: |
| 175 | + deletionPolicy: |
| 176 | + default: Delete |
| 177 | + description: Specifies the deletion policy for snapshots associated with this snapshot class. See https://kubernetes.io/docs/concepts/storage/volume-snapshot-classes/#deletionpolicy for more details. |
| 178 | + enum: |
| 179 | + - Delete |
| 180 | + - Retain |
| 181 | + type: string |
| 182 | + setDefaultSnapshotClass: |
| 183 | + default: false |
| 184 | + description: When enabled, this sets the VAST CSI Snapshot Class as the default for creating volume snapshots. This means VAST CSI Snapshot Class will be used automatically when volume snapshots are created without specifying a snapshot class. See https://kubernetes.io/docs/concepts/storage/volume-snapshot-classes/#the-volumesnapshotclass-resource for more details. |
| 185 | + type: boolean |
| 186 | + snapshotNameFormat: |
| 187 | + default: csi:{namespace}:{name}:{id} |
| 188 | + type: string |
| 189 | + type: object |
| 190 | + storagePath: |
| 191 | + default: "" |
| 192 | + description: Base path where volumes will be located on VAST. |
| 193 | + type: string |
| 194 | + subsystem: |
| 195 | + default: "" |
| 196 | + description: VAST subsystem for volume creation. |
| 197 | + type: string |
| 198 | + tenantName: |
| 199 | + description: Tenant name – required for additional filtering when multiple subsystems share the same name. |
| 200 | + nullable: true |
| 201 | + type: string |
| 202 | + transportType: |
| 203 | + description: Host connectivity type used for block storage. |
| 204 | + enum: |
| 205 | + - "" |
| 206 | + - TCP |
| 207 | + - RDMA |
| 208 | + nullable: true |
| 209 | + type: string |
| 210 | + viewPolicy: |
| 211 | + default: "" |
| 212 | + description: VAST policy name to create views. |
| 213 | + type: string |
| 214 | + vipPool: |
| 215 | + description: Name of VAST VIP pool to use. |
| 216 | + nullable: true |
| 217 | + type: string |
| 218 | + vipPoolFQDN: |
| 219 | + description: "The FQDN of the VIP pool to use. Must specify either vipPool or vipPoolFQDN.\nUsing a DNS skips an API call to the VMS for obtaining a random VIP from the vipPool, \nleading to faster volume mounting.\nNOTE: The driver will prepend the FQDN with a random prefix, which forces the NFS client \nto resolve into a different VIP, thereby distributing the load across the entire range \nof the VIP pool." |
| 220 | + nullable: true |
| 221 | + type: string |
| 222 | + vipPoolFQDNRandomPrefix: |
| 223 | + default: true |
| 224 | + description: Helps distribute load across the entire VIP pool by randomizing the VIP resolved for each volume mount. If set to true, a random prefix will be added to the VIP FQDN, ensuring that each NFS mount request resolves to a different VIP from the VIP pool. |
| 225 | + type: boolean |
| 226 | + volumeGroup: |
| 227 | + description: |- |
| 228 | + Optional template for constructing common volume prefix. |
| 229 | + It supports placeholders for the PVC name, namespace, and ID, |
| 230 | + which can be used in the format {namespace}, {name}, and {id}. |
| 231 | + If not provided, a default template will be used. The volume group |
| 232 | + can represent nested folder structures. For example: |
| 233 | + - "folder1/folder2/block-{namespace}-{id} |
| 234 | + nullable: true |
| 235 | + type: string |
| 236 | + volumeNameFormat: |
| 237 | + default: csi:{namespace}:{name}:{id} |
| 238 | + description: String template for CSI-provisioned volume names, within VAST. |
| 239 | + type: string |
| 240 | + required: |
| 241 | + - secretName |
| 242 | + - secretNamespace |
| 243 | + - clusterName |
| 244 | + - driverType |
| 245 | + - storagePath |
| 246 | + - viewPolicy |
| 247 | + - subsystem |
| 248 | + type: object |
| 249 | + status: |
| 250 | + description: Status defines the observed state of VastStorage |
| 251 | + type: object |
| 252 | + x-kubernetes-preserve-unknown-fields: true |
| 253 | + type: object |
| 254 | + served: true |
| 255 | + storage: true |
| 256 | + subresources: |
| 257 | + status: {} |
0 commit comments