Skip to content

Commit c50c68e

Browse files
committed
operator vast-csi-operator (2.6.4)
Signed-off-by: Volodymyr Boiko <[email protected]>
1 parent 5590be4 commit c50c68e

8 files changed

+2608
-5
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
apiVersion: apiextensions.k8s.io/v1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: vastclusters.storage.vastdata.com
5+
spec:
6+
group: storage.vastdata.com
7+
names:
8+
kind: VastCluster
9+
listKind: VastClusterList
10+
plural: vastclusters
11+
singular: vastcluster
12+
scope: Namespaced
13+
versions:
14+
- name: v1
15+
schema:
16+
openAPIV3Schema:
17+
description: VastCluster is the Schema for the vastclusters API
18+
properties:
19+
apiVersion:
20+
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'
21+
type: string
22+
kind:
23+
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'
24+
type: string
25+
metadata:
26+
type: object
27+
spec:
28+
description: Spec defines the desired state of VastCluster.
29+
oneOf:
30+
- required:
31+
- token
32+
- required:
33+
- username
34+
- password
35+
properties:
36+
endpoint:
37+
description: Endpoint or URL of the VAST mgmt host.
38+
type: string
39+
passphrase:
40+
description: Optional passphrase used to enable LUKS-based host encryption on the client. If present, host-side encryption will be activated automatically.
41+
nullable: true
42+
type: string
43+
password:
44+
description: Password used for authentication.
45+
type: string
46+
sslCert:
47+
description: Optional SSL certificate for secure connections.
48+
nullable: true
49+
type: string
50+
tenant:
51+
description: The tenant name for tenant scoped authentication (tenant admin).
52+
nullable: true
53+
type: string
54+
token:
55+
description: API token for accessing VAST mgmt. If provided, it will be used instead of 'username' and 'password'."
56+
type: string
57+
username:
58+
description: Username used for authentication.
59+
type: string
60+
required:
61+
- endpoint
62+
type: object
63+
status:
64+
description: Status defines the observed state of VastCluster
65+
type: object
66+
x-kubernetes-preserve-unknown-fields: true
67+
type: object
68+
served: true
69+
storage: true
70+
subresources:
71+
status: {}

operators/vast-csi-operator/2.6.4/manifests/storage.vastdata.com_vastcsidriver.yaml

Lines changed: 1250 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 257 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,257 @@
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: {}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
labels:
5+
app.kubernetes.io/component: kube-rbac-proxy
6+
app.kubernetes.io/created-by: vast-csi-operator
7+
app.kubernetes.io/instance: controller-manager-metrics-service
8+
app.kubernetes.io/name: service
9+
app.kubernetes.io/part-of: vast-csi-operator
10+
control-plane: controller-manager
11+
name: vast-csi-operator-controller-manager-metrics-service
12+
spec:
13+
ports:
14+
- name: https
15+
port: 8443
16+
targetPort: https
17+
selector:
18+
control-plane: controller-manager
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
name: vast-csi-operator-metrics-reader
5+
rules:
6+
- nonResourceURLs:
7+
- /metrics
8+
verbs:
9+
- get

0 commit comments

Comments
 (0)