github.com/alibaba/sealer@v0.8.6-0.20220430115802-37a2bdaa8173/applications/openebs/cstor/cstor-operator.yaml (about) 1 # Create the OpenEBS namespace 2 apiVersion: v1 3 kind: Namespace 4 metadata: 5 name: openebs 6 --- 7 # Create Maya Service Account 8 apiVersion: v1 9 kind: ServiceAccount 10 metadata: 11 name: openebs-cstor-operator 12 namespace: openebs 13 --- 14 # Define Role that allows operations on K8s pods/deployments 15 kind: ClusterRole 16 apiVersion: rbac.authorization.k8s.io/v1 17 metadata: 18 name: openebs-cstor-operator 19 rules: 20 - apiGroups: ["*"] 21 resources: ["nodes", "nodes/proxy"] 22 verbs: ["*"] 23 - apiGroups: ["*"] 24 resources: ["namespaces", "services", "pods", "deployments", "deployments/finalizers", "replicationcontrollers", "replicasets", "events", "endpoints", "configmaps", "secrets", "jobs", "cronjobs"] 25 verbs: ["*"] 26 - apiGroups: ["*"] 27 resources: ["statefulsets", "daemonsets"] 28 verbs: ["*"] 29 - apiGroups: ["*"] 30 resources: ["resourcequotas", "limitranges"] 31 verbs: ["list", "watch"] 32 - apiGroups: ["*"] 33 resources: ["certificatesigningrequests"] 34 verbs: ["list", "watch"] 35 - apiGroups: ["*"] 36 resources: ["storageclasses", "persistentvolumeclaims", "persistentvolumes"] 37 verbs: ["*"] 38 - apiGroups: ["apiextensions.k8s.io"] 39 resources: ["customresourcedefinitions"] 40 verbs: [ "get", "list", "create", "update", "delete", "patch"] 41 - apiGroups: ["openebs.io"] 42 resources: ["*"] 43 verbs: ["*" ] 44 - apiGroups: ["cstor.openebs.io"] 45 resources: ["*"] 46 verbs: ["*" ] 47 - apiGroups: ["coordination.k8s.io"] 48 resources: ["leases"] 49 verbs: ["get", "watch", "list", "delete", "update", "create"] 50 - apiGroups: ["admissionregistration.k8s.io"] 51 resources: ["validatingwebhookconfigurations", "mutatingwebhookconfigurations"] 52 verbs: ["get", "create", "list", "delete", "update", "patch"] 53 - nonResourceURLs: ["/metrics"] 54 verbs: ["get"] 55 - apiGroups: ["*"] 56 resources: ["upgradetasks", "migrationtasks"] 57 verbs: ["*"] 58 - apiGroups: ["*"] 59 resources: ["poddisruptionbudgets"] 60 verbs: ["get", "list", "create", "delete", "watch"] 61 --- 62 # Bind the Service Account with the Role Privileges. 63 kind: ClusterRoleBinding 64 apiVersion: rbac.authorization.k8s.io/v1 65 metadata: 66 name: openebs-cstor-operator 67 subjects: 68 - kind: ServiceAccount 69 name: openebs-cstor-operator 70 namespace: openebs 71 roleRef: 72 kind: ClusterRole 73 name: openebs-cstor-operator 74 apiGroup: rbac.authorization.k8s.io 75 --- 76 # Define Role that allows operations required for migration of snapshots 77 kind: ClusterRole 78 apiVersion: rbac.authorization.k8s.io/v1 79 metadata: 80 name: openebs-cstor-migration 81 rules: 82 - apiGroups: ["snapshot.storage.k8s.io"] 83 resources: ["volumesnapshotclasses"] 84 verbs: ["get", "list"] 85 - apiGroups: ["snapshot.storage.k8s.io"] 86 resources: ["volumesnapshotcontents"] 87 verbs: ["create", "get", "list"] 88 - apiGroups: ["snapshot.storage.k8s.io"] 89 resources: ["volumesnapshots"] 90 verbs: ["create", "get", "list"] 91 --- 92 kind: ClusterRoleBinding 93 apiVersion: rbac.authorization.k8s.io/v1 94 metadata: 95 name: openebs-cstor-migration 96 subjects: 97 - kind: ServiceAccount 98 name: openebs-cstor-operator 99 namespace: openebs 100 roleRef: 101 kind: ClusterRole 102 name: openebs-cstor-migration 103 apiGroup: rbac.authorization.k8s.io 104 --- 105 # This manifest deploys the OpenEBS CStor and CSI control plane components, 106 # with associated CRs & RBAC rules. This manifest has been verified 107 # only with different linux flavours and linux distros 108 # 109 # For supporting a differnet OS other than the above, 110 # 1) Get the list of shared object files required for iscsiadm binary in that OS version. 111 # 2) Check which files are already present in the cstor-csi-driver container present in csi node pod. 112 # 3) Mount the required missing files inside the container. 113 # 114 #################################################### 115 ########### ############ 116 ########### CSI Node and Driver CRDs ############ 117 ########### ############ 118 #################################################### 119 --- 120 apiVersion: apiextensions.k8s.io/v1 121 kind: CustomResourceDefinition 122 metadata: 123 annotations: 124 controller-gen.kubebuilder.io/version: v0.4.0 125 creationTimestamp: null 126 name: cstorvolumeattachments.cstor.openebs.io 127 spec: 128 group: cstor.openebs.io 129 names: 130 kind: CStorVolumeAttachment 131 listKind: CStorVolumeAttachmentList 132 plural: cstorvolumeattachments 133 shortNames: 134 - cva 135 singular: cstorvolumeattachment 136 scope: Namespaced 137 versions: 138 - name: v1 139 schema: 140 openAPIV3Schema: 141 description: CStorVolumeAttachment represents a CSI based volume 142 properties: 143 apiVersion: 144 description: 'APIVersion defines the versioned schema of this representation 145 of an object. Servers should convert recognized schemas to the latest 146 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 147 type: string 148 kind: 149 description: 'Kind is a string value representing the REST resource this 150 object represents. Servers may infer this from the endpoint the client 151 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 152 type: string 153 metadata: 154 type: object 155 spec: 156 description: CStorVolumeAttachmentSpec is the spec for a CStorVolume resource 157 properties: 158 iscsi: 159 description: ISCSIInfo specific to ISCSI protocol, this is filled 160 only if the volume type is iSCSI 161 properties: 162 iqn: 163 description: Iqn of this volume 164 type: string 165 iscsiInterface: 166 description: IscsiInterface of this volume 167 type: string 168 lun: 169 description: 'Lun specify the lun number 0, 1.. on iSCSI Volume. 170 (default: 0)' 171 type: string 172 targetPortal: 173 description: TargetPortal holds the target portal of this volume 174 type: string 175 type: object 176 volume: 177 description: Volume specific info 178 properties: 179 accessModes: 180 description: AccessMode of a volume will hold the access mode 181 of the volume 182 items: 183 type: string 184 type: array 185 accessType: 186 description: AccessType of a volume will indicate if the volume 187 will be used as a block device or mounted on a path 188 type: string 189 capacity: 190 description: Capacity of the volume 191 type: string 192 devicePath: 193 description: Device Path specifies the device path which is returned 194 when the iSCSI login is successful 195 type: string 196 fsType: 197 description: FSType of a volume will specify the format type - 198 ext4(default), xfs of PV 199 type: string 200 mountOptions: 201 description: MountOptions specifies the options with which mount 202 needs to be attempted 203 items: 204 type: string 205 type: array 206 name: 207 description: Name of the CSI volume 208 type: string 209 ownerNodeID: 210 description: OwnerNodeID is the Node ID which is also the owner 211 of this Volume 212 type: string 213 readOnly: 214 description: ReadOnly specifies if the volume needs to be mounted 215 in ReadOnly mode 216 type: boolean 217 stagingTargetPath: 218 description: StagingPath of the volume will hold the path on which 219 the volume is mounted on that node 220 type: string 221 targetPath: 222 description: TargetPath of the volume will hold the path on which 223 the volume is bind mounted on that node 224 type: string 225 required: 226 - name 227 - ownerNodeID 228 type: object 229 required: 230 - iscsi 231 - volume 232 type: object 233 status: 234 description: CStorVolumeAttachmentStatus status represents the current 235 mount status of the volume 236 type: string 237 required: 238 - spec 239 type: object 240 served: true 241 storage: true 242 status: 243 acceptedNames: 244 kind: "" 245 plural: "" 246 conditions: [] 247 storedVersions: [] 248 --- 249 ############################################## 250 ########### ############ 251 ########### Snapshot CRDs ############ 252 ########### ############ 253 ############################################## 254 255 --- 256 apiVersion: apiextensions.k8s.io/v1 257 kind: CustomResourceDefinition 258 metadata: 259 annotations: 260 controller-gen.kubebuilder.io/version: v0.4.0 261 api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419" 262 creationTimestamp: null 263 name: volumesnapshotclasses.snapshot.storage.k8s.io 264 spec: 265 group: snapshot.storage.k8s.io 266 names: 267 kind: VolumeSnapshotClass 268 listKind: VolumeSnapshotClassList 269 plural: volumesnapshotclasses 270 singular: volumesnapshotclass 271 scope: Cluster 272 versions: 273 - additionalPrinterColumns: 274 - jsonPath: .driver 275 name: Driver 276 type: string 277 - description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. 278 jsonPath: .deletionPolicy 279 name: DeletionPolicy 280 type: string 281 - jsonPath: .metadata.creationTimestamp 282 name: Age 283 type: date 284 name: v1 285 schema: 286 openAPIV3Schema: 287 description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced 288 properties: 289 apiVersion: 290 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' 291 type: string 292 deletionPolicy: 293 description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required. 294 enum: 295 - Delete 296 - Retain 297 type: string 298 driver: 299 description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required. 300 type: string 301 kind: 302 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' 303 type: string 304 parameters: 305 additionalProperties: 306 type: string 307 description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes. 308 type: object 309 required: 310 - deletionPolicy 311 - driver 312 type: object 313 served: true 314 storage: false 315 subresources: {} 316 - additionalPrinterColumns: 317 - jsonPath: .driver 318 name: Driver 319 type: string 320 - description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. 321 jsonPath: .deletionPolicy 322 name: DeletionPolicy 323 type: string 324 - jsonPath: .metadata.creationTimestamp 325 name: Age 326 type: date 327 name: v1beta1 328 schema: 329 openAPIV3Schema: 330 description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced 331 properties: 332 apiVersion: 333 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' 334 type: string 335 deletionPolicy: 336 description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required. 337 enum: 338 - Delete 339 - Retain 340 type: string 341 driver: 342 description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required. 343 type: string 344 kind: 345 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' 346 type: string 347 parameters: 348 additionalProperties: 349 type: string 350 description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes. 351 type: object 352 required: 353 - deletionPolicy 354 - driver 355 type: object 356 served: true 357 storage: true 358 subresources: {} 359 status: 360 acceptedNames: 361 kind: "" 362 plural: "" 363 conditions: [] 364 storedVersions: [] 365 --- 366 367 apiVersion: apiextensions.k8s.io/v1 368 kind: CustomResourceDefinition 369 metadata: 370 annotations: 371 controller-gen.kubebuilder.io/version: v0.4.0 372 api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419" 373 creationTimestamp: null 374 name: volumesnapshotcontents.snapshot.storage.k8s.io 375 spec: 376 group: snapshot.storage.k8s.io 377 names: 378 kind: VolumeSnapshotContent 379 listKind: VolumeSnapshotContentList 380 plural: volumesnapshotcontents 381 singular: volumesnapshotcontent 382 scope: Cluster 383 versions: 384 - additionalPrinterColumns: 385 - description: Indicates if the snapshot is ready to be used to restore a volume. 386 jsonPath: .status.readyToUse 387 name: ReadyToUse 388 type: boolean 389 - description: Represents the complete size of the snapshot in bytes 390 jsonPath: .status.restoreSize 391 name: RestoreSize 392 type: integer 393 - description: Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. 394 jsonPath: .spec.deletionPolicy 395 name: DeletionPolicy 396 type: string 397 - description: Name of the CSI driver used to create the physical snapshot on the underlying storage system. 398 jsonPath: .spec.driver 399 name: Driver 400 type: string 401 - description: Name of the VolumeSnapshotClass to which this snapshot belongs. 402 jsonPath: .spec.volumeSnapshotClassName 403 name: VolumeSnapshotClass 404 type: string 405 - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. 406 jsonPath: .spec.volumeSnapshotRef.name 407 name: VolumeSnapshot 408 type: string 409 - jsonPath: .metadata.creationTimestamp 410 name: Age 411 type: date 412 name: v1 413 schema: 414 openAPIV3Schema: 415 description: VolumeSnapshotContent represents the actual "on-disk" snapshot object in the underlying storage system 416 properties: 417 apiVersion: 418 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' 419 type: string 420 kind: 421 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' 422 type: string 423 spec: 424 description: spec defines properties of a VolumeSnapshotContent created by the underlying storage system. Required. 425 properties: 426 deletionPolicy: 427 description: deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. For dynamically provisioned snapshots, this field will automatically be filled in by the CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding VolumeSnapshotClass. For pre-existing snapshots, users MUST specify this field when creating the VolumeSnapshotContent object. Required. 428 enum: 429 - Delete 430 - Retain 431 type: string 432 driver: 433 description: driver is the name of the CSI driver used to create the physical snapshot on the underlying storage system. This MUST be the same as the name returned by the CSI GetPluginName() call for that driver. Required. 434 type: string 435 source: 436 description: source specifies whether the snapshot is (or should be) dynamically provisioned or already exists, and just requires a Kubernetes object representation. This field is immutable after creation. Required. 437 properties: 438 snapshotHandle: 439 description: snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on the underlying storage system for which a Kubernetes object representation was (or should be) created. This field is immutable. 440 type: string 441 volumeHandle: 442 description: volumeHandle specifies the CSI "volume_id" of the volume from which a snapshot should be dynamically taken from. This field is immutable. 443 type: string 444 type: object 445 oneOf: 446 - required: ["snapshotHandle"] 447 - required: ["volumeHandle"] 448 volumeSnapshotClassName: 449 description: name of the VolumeSnapshotClass from which this snapshot was (or will be) created. Note that after provisioning, the VolumeSnapshotClass may be deleted or recreated with different set of values, and as such, should not be referenced post-snapshot creation. 450 type: string 451 volumeSnapshotRef: 452 description: volumeSnapshotRef specifies the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to this VolumeSnapshotContent's name for the bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent object, name and namespace of the VolumeSnapshot object MUST be provided for binding to happen. This field is immutable after creation. Required. 453 properties: 454 apiVersion: 455 description: API version of the referent. 456 type: string 457 fieldPath: 458 description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.' 459 type: string 460 kind: 461 description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 462 type: string 463 name: 464 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' 465 type: string 466 namespace: 467 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' 468 type: string 469 resourceVersion: 470 description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' 471 type: string 472 uid: 473 description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' 474 type: string 475 type: object 476 required: 477 - deletionPolicy 478 - driver 479 - source 480 - volumeSnapshotRef 481 type: object 482 status: 483 description: status represents the current information of a snapshot. 484 properties: 485 creationTime: 486 description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it indicates the creation time is unknown. The format of this field is a Unix nanoseconds time encoded as an int64. On Unix, the command `date +%s%N` returns the current time in nanoseconds since 1970-01-01 00:00:00 UTC. 487 format: int64 488 type: integer 489 error: 490 description: error is the last observed error during snapshot creation, if any. Upon success after retry, this error field will be cleared. 491 properties: 492 message: 493 description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' 494 type: string 495 time: 496 description: time is the timestamp when the error was encountered. 497 format: date-time 498 type: string 499 type: object 500 readyToUse: 501 description: readyToUse indicates if a snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. 502 type: boolean 503 restoreSize: 504 description: restoreSize represents the complete size of the snapshot in bytes. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. 505 format: int64 506 minimum: 0 507 type: integer 508 snapshotHandle: 509 description: snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. If not specified, it indicates that dynamic snapshot creation has either failed or it is still in progress. 510 type: string 511 type: object 512 required: 513 - spec 514 type: object 515 served: true 516 storage: false 517 subresources: 518 status: {} 519 - additionalPrinterColumns: 520 - description: Indicates if the snapshot is ready to be used to restore a volume. 521 jsonPath: .status.readyToUse 522 name: ReadyToUse 523 type: boolean 524 - description: Represents the complete size of the snapshot in bytes 525 jsonPath: .status.restoreSize 526 name: RestoreSize 527 type: integer 528 - description: Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. 529 jsonPath: .spec.deletionPolicy 530 name: DeletionPolicy 531 type: string 532 - description: Name of the CSI driver used to create the physical snapshot on the underlying storage system. 533 jsonPath: .spec.driver 534 name: Driver 535 type: string 536 - description: Name of the VolumeSnapshotClass to which this snapshot belongs. 537 jsonPath: .spec.volumeSnapshotClassName 538 name: VolumeSnapshotClass 539 type: string 540 - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. 541 jsonPath: .spec.volumeSnapshotRef.name 542 name: VolumeSnapshot 543 type: string 544 - jsonPath: .metadata.creationTimestamp 545 name: Age 546 type: date 547 name: v1beta1 548 schema: 549 openAPIV3Schema: 550 description: VolumeSnapshotContent represents the actual "on-disk" snapshot object in the underlying storage system 551 properties: 552 apiVersion: 553 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' 554 type: string 555 kind: 556 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' 557 type: string 558 spec: 559 description: spec defines properties of a VolumeSnapshotContent created by the underlying storage system. Required. 560 properties: 561 deletionPolicy: 562 description: deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. For dynamically provisioned snapshots, this field will automatically be filled in by the CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding VolumeSnapshotClass. For pre-existing snapshots, users MUST specify this field when creating the VolumeSnapshotContent object. Required. 563 enum: 564 - Delete 565 - Retain 566 type: string 567 driver: 568 description: driver is the name of the CSI driver used to create the physical snapshot on the underlying storage system. This MUST be the same as the name returned by the CSI GetPluginName() call for that driver. Required. 569 type: string 570 source: 571 description: source specifies whether the snapshot is (or should be) dynamically provisioned or already exists, and just requires a Kubernetes object representation. This field is immutable after creation. Required. 572 properties: 573 snapshotHandle: 574 description: snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on the underlying storage system for which a Kubernetes object representation was (or should be) created. This field is immutable. 575 type: string 576 volumeHandle: 577 description: volumeHandle specifies the CSI "volume_id" of the volume from which a snapshot should be dynamically taken from. This field is immutable. 578 type: string 579 type: object 580 volumeSnapshotClassName: 581 description: name of the VolumeSnapshotClass from which this snapshot was (or will be) created. Note that after provisioning, the VolumeSnapshotClass may be deleted or recreated with different set of values, and as such, should not be referenced post-snapshot creation. 582 type: string 583 volumeSnapshotRef: 584 description: volumeSnapshotRef specifies the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to this VolumeSnapshotContent's name for the bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent object, name and namespace of the VolumeSnapshot object MUST be provided for binding to happen. This field is immutable after creation. Required. 585 properties: 586 apiVersion: 587 description: API version of the referent. 588 type: string 589 fieldPath: 590 description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.' 591 type: string 592 kind: 593 description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 594 type: string 595 name: 596 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' 597 type: string 598 namespace: 599 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' 600 type: string 601 resourceVersion: 602 description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' 603 type: string 604 uid: 605 description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' 606 type: string 607 type: object 608 required: 609 - deletionPolicy 610 - driver 611 - source 612 - volumeSnapshotRef 613 type: object 614 status: 615 description: status represents the current information of a snapshot. 616 properties: 617 creationTime: 618 description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it indicates the creation time is unknown. The format of this field is a Unix nanoseconds time encoded as an int64. On Unix, the command `date +%s%N` returns the current time in nanoseconds since 1970-01-01 00:00:00 UTC. 619 format: int64 620 type: integer 621 error: 622 description: error is the last observed error during snapshot creation, if any. Upon success after retry, this error field will be cleared. 623 properties: 624 message: 625 description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' 626 type: string 627 time: 628 description: time is the timestamp when the error was encountered. 629 format: date-time 630 type: string 631 type: object 632 readyToUse: 633 description: readyToUse indicates if a snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. 634 type: boolean 635 restoreSize: 636 description: restoreSize represents the complete size of the snapshot in bytes. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. 637 format: int64 638 minimum: 0 639 type: integer 640 snapshotHandle: 641 description: snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. If not specified, it indicates that dynamic snapshot creation has either failed or it is still in progress. 642 type: string 643 type: object 644 required: 645 - spec 646 type: object 647 served: true 648 storage: true 649 subresources: 650 status: {} 651 status: 652 acceptedNames: 653 kind: "" 654 plural: "" 655 conditions: [] 656 storedVersions: [] 657 --- 658 659 apiVersion: apiextensions.k8s.io/v1 660 kind: CustomResourceDefinition 661 metadata: 662 annotations: 663 controller-gen.kubebuilder.io/version: v0.4.0 664 api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419" 665 creationTimestamp: null 666 name: volumesnapshots.snapshot.storage.k8s.io 667 spec: 668 group: snapshot.storage.k8s.io 669 names: 670 kind: VolumeSnapshot 671 listKind: VolumeSnapshotList 672 plural: volumesnapshots 673 singular: volumesnapshot 674 scope: Namespaced 675 versions: 676 - additionalPrinterColumns: 677 - description: Indicates if the snapshot is ready to be used to restore a volume. 678 jsonPath: .status.readyToUse 679 name: ReadyToUse 680 type: boolean 681 - description: If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created. 682 jsonPath: .spec.source.persistentVolumeClaimName 683 name: SourcePVC 684 type: string 685 - description: If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot. 686 jsonPath: .spec.source.volumeSnapshotContentName 687 name: SourceSnapshotContent 688 type: string 689 - description: Represents the minimum size of volume required to rehydrate from this snapshot. 690 jsonPath: .status.restoreSize 691 name: RestoreSize 692 type: string 693 - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. 694 jsonPath: .spec.volumeSnapshotClassName 695 name: SnapshotClass 696 type: string 697 - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object. 698 jsonPath: .status.boundVolumeSnapshotContentName 699 name: SnapshotContent 700 type: string 701 - description: Timestamp when the point-in-time snapshot was taken by the underlying storage system. 702 jsonPath: .status.creationTime 703 name: CreationTime 704 type: date 705 - jsonPath: .metadata.creationTimestamp 706 name: Age 707 type: date 708 name: v1 709 schema: 710 openAPIV3Schema: 711 description: VolumeSnapshot is a user's request for either creating a point-in-time snapshot of a persistent volume, or binding to a pre-existing snapshot. 712 properties: 713 apiVersion: 714 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' 715 type: string 716 kind: 717 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' 718 type: string 719 spec: 720 description: 'spec defines the desired characteristics of a snapshot requested by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots Required.' 721 properties: 722 source: 723 description: source specifies where a snapshot will be created from. This field is immutable after creation. Required. 724 properties: 725 persistentVolumeClaimName: 726 description: persistentVolumeClaimName specifies the name of the PersistentVolumeClaim object representing the volume from which a snapshot should be created. This PVC is assumed to be in the same namespace as the VolumeSnapshot object. This field should be set if the snapshot does not exists, and needs to be created. This field is immutable. 727 type: string 728 volumeSnapshotContentName: 729 description: volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent object representing an existing volume snapshot. This field should be set if the snapshot already exists and only needs a representation in Kubernetes. This field is immutable. 730 type: string 731 type: object 732 oneOf: 733 - required: ["persistentVolumeClaimName"] 734 - required: ["volumeSnapshotContentName"] 735 volumeSnapshotClassName: 736 description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. VolumeSnapshotClassName may be left nil to indicate that the default SnapshotClass should be used. A given cluster may have multiple default Volume SnapshotClasses: one default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, VolumeSnapshotSource will be checked to figure out what the associated CSI Driver is, and the default VolumeSnapshotClass associated with that CSI Driver will be used. If more than one VolumeSnapshotClass exist for a given CSI Driver and more than one have been marked as default, CreateSnapshot will fail and generate an event. Empty string is not allowed for this field.' 737 type: string 738 required: 739 - source 740 type: object 741 status: 742 description: status represents the current information of a snapshot. Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object. 743 properties: 744 boundVolumeSnapshotContentName: 745 description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent object to which this VolumeSnapshot object intends to bind to. If not specified, it indicates that the VolumeSnapshot object has not been successfully bound to a VolumeSnapshotContent object yet. NOTE: To avoid possible security issues, consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.' 746 type: string 747 creationTime: 748 description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it may indicate that the creation time of the snapshot is unknown. 749 format: date-time 750 type: string 751 error: 752 description: error is the last observed error during snapshot creation, if any. This field could be helpful to upper level controllers(i.e., application controller) to decide whether they should continue on waiting for the snapshot to be created based on the type of error reported. The snapshot controller will keep retrying when an error occurrs during the snapshot creation. Upon success, this error field will be cleared. 753 properties: 754 message: 755 description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' 756 type: string 757 time: 758 description: time is the timestamp when the error was encountered. 759 format: date-time 760 type: string 761 type: object 762 readyToUse: 763 description: readyToUse indicates if the snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. 764 type: boolean 765 restoreSize: 766 type: string 767 description: restoreSize represents the minimum size of volume required to create a volume from this snapshot. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. 768 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 769 x-kubernetes-int-or-string: true 770 type: object 771 required: 772 - spec 773 type: object 774 served: true 775 storage: false 776 subresources: 777 status: {} 778 - additionalPrinterColumns: 779 - description: Indicates if the snapshot is ready to be used to restore a volume. 780 jsonPath: .status.readyToUse 781 name: ReadyToUse 782 type: boolean 783 - description: If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created. 784 jsonPath: .spec.source.persistentVolumeClaimName 785 name: SourcePVC 786 type: string 787 - description: If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot. 788 jsonPath: .spec.source.volumeSnapshotContentName 789 name: SourceSnapshotContent 790 type: string 791 - description: Represents the minimum size of volume required to rehydrate from this snapshot. 792 jsonPath: .status.restoreSize 793 name: RestoreSize 794 type: string 795 - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. 796 jsonPath: .spec.volumeSnapshotClassName 797 name: SnapshotClass 798 type: string 799 - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object. 800 jsonPath: .status.boundVolumeSnapshotContentName 801 name: SnapshotContent 802 type: string 803 - description: Timestamp when the point-in-time snapshot was taken by the underlying storage system. 804 jsonPath: .status.creationTime 805 name: CreationTime 806 type: date 807 - jsonPath: .metadata.creationTimestamp 808 name: Age 809 type: date 810 name: v1beta1 811 schema: 812 openAPIV3Schema: 813 description: VolumeSnapshot is a user's request for either creating a point-in-time snapshot of a persistent volume, or binding to a pre-existing snapshot. 814 properties: 815 apiVersion: 816 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' 817 type: string 818 kind: 819 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' 820 type: string 821 spec: 822 description: 'spec defines the desired characteristics of a snapshot requested by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots Required.' 823 properties: 824 source: 825 description: source specifies where a snapshot will be created from. This field is immutable after creation. Required. 826 properties: 827 persistentVolumeClaimName: 828 description: persistentVolumeClaimName specifies the name of the PersistentVolumeClaim object representing the volume from which a snapshot should be created. This PVC is assumed to be in the same namespace as the VolumeSnapshot object. This field should be set if the snapshot does not exists, and needs to be created. This field is immutable. 829 type: string 830 volumeSnapshotContentName: 831 description: volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent object representing an existing volume snapshot. This field should be set if the snapshot already exists and only needs a representation in Kubernetes. This field is immutable. 832 type: string 833 type: object 834 volumeSnapshotClassName: 835 description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. VolumeSnapshotClassName may be left nil to indicate that the default SnapshotClass should be used. A given cluster may have multiple default Volume SnapshotClasses: one default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, VolumeSnapshotSource will be checked to figure out what the associated CSI Driver is, and the default VolumeSnapshotClass associated with that CSI Driver will be used. If more than one VolumeSnapshotClass exist for a given CSI Driver and more than one have been marked as default, CreateSnapshot will fail and generate an event. Empty string is not allowed for this field.' 836 type: string 837 required: 838 - source 839 type: object 840 status: 841 description: status represents the current information of a snapshot. Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object. 842 properties: 843 boundVolumeSnapshotContentName: 844 description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent object to which this VolumeSnapshot object intends to bind to. If not specified, it indicates that the VolumeSnapshot object has not been successfully bound to a VolumeSnapshotContent object yet. NOTE: To avoid possible security issues, consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.' 845 type: string 846 creationTime: 847 description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it may indicate that the creation time of the snapshot is unknown. 848 format: date-time 849 type: string 850 error: 851 description: error is the last observed error during snapshot creation, if any. This field could be helpful to upper level controllers(i.e., application controller) to decide whether they should continue on waiting for the snapshot to be created based on the type of error reported. The snapshot controller will keep retrying when an error occurrs during the snapshot creation. Upon success, this error field will be cleared. 852 properties: 853 message: 854 description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' 855 type: string 856 time: 857 description: time is the timestamp when the error was encountered. 858 format: date-time 859 type: string 860 type: object 861 readyToUse: 862 description: readyToUse indicates if the snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. 863 type: boolean 864 restoreSize: 865 type: string 866 description: restoreSize represents the minimum size of volume required to create a volume from this snapshot. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. 867 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 868 x-kubernetes-int-or-string: true 869 type: object 870 required: 871 - spec 872 type: object 873 served: true 874 storage: true 875 subresources: 876 status: {} 877 status: 878 acceptedNames: 879 kind: "" 880 plural: "" 881 conditions: [] 882 storedVersions: [] 883 --- 884 885 apiVersion: storage.k8s.io/v1 886 kind: CSIDriver 887 metadata: 888 name: cstor.csi.openebs.io 889 spec: 890 # Supports persistent inline volumes. 891 volumeLifecycleModes: 892 - Persistent 893 # Not yet supported but added just to support upgrade control plane seamlessly 894 - Ephemeral 895 # To determine at runtime which mode a volume uses, pod info and its 896 # "csi.storage.k8s.io/ephemeral" entry are needed. 897 podInfoOnMount: true 898 attachRequired: false 899 --- 900 apiVersion: scheduling.k8s.io/v1 901 kind: PriorityClass 902 metadata: 903 name: openebs-csi-controller-critical 904 value: 900000000 905 globalDefault: false 906 description: "This priority class should be used for the CStor CSI driver controller deployment only." 907 --- 908 apiVersion: scheduling.k8s.io/v1 909 kind: PriorityClass 910 metadata: 911 name: openebs-csi-node-critical 912 value: 900001000 913 globalDefault: false 914 description: "This priority class should be used for the CStor CSI driver node deployment only." 915 --- 916 917 kind: ClusterRoleBinding 918 apiVersion: rbac.authorization.k8s.io/v1 919 metadata: 920 name: openebs-cstor-csi-snapshotter-binding 921 subjects: 922 - kind: ServiceAccount 923 name: openebs-cstor-csi-controller-sa 924 namespace: openebs 925 roleRef: 926 kind: ClusterRole 927 name: openebs-cstor-csi-snapshotter-role 928 apiGroup: rbac.authorization.k8s.io 929 930 --- 931 932 kind: ClusterRole 933 apiVersion: rbac.authorization.k8s.io/v1 934 metadata: 935 name: openebs-cstor-csi-snapshotter-role 936 rules: 937 - apiGroups: [""] 938 resources: ["persistentvolumes"] 939 verbs: ["get", "list", "watch"] 940 - apiGroups: [""] 941 resources: ["persistentvolumeclaims"] 942 verbs: ["get", "list", "watch"] 943 - apiGroups: ["storage.k8s.io"] 944 resources: ["storageclasses"] 945 verbs: ["get", "list", "watch"] 946 - apiGroups: [""] 947 resources: ["events"] 948 verbs: ["list", "watch", "create", "update", "patch"] 949 - apiGroups: [""] 950 resources: ["secrets"] 951 verbs: ["get", "list"] 952 - apiGroups: ["snapshot.storage.k8s.io"] 953 resources: ["volumesnapshotclasses"] 954 verbs: ["get", "list", "watch"] 955 - apiGroups: ["snapshot.storage.k8s.io"] 956 resources: ["volumesnapshotcontents"] 957 verbs: ["create", "get", "list", "watch", "update", "delete"] 958 - apiGroups: ["snapshot.storage.k8s.io"] 959 resources: ["volumesnapshotcontents/status"] 960 verbs: ["update"] 961 - apiGroups: ["snapshot.storage.k8s.io"] 962 resources: ["volumesnapshots"] 963 verbs: ["get", "list", "watch", "update"] 964 - apiGroups: ["snapshot.storage.k8s.io"] 965 resources: ["volumesnapshots/status"] 966 verbs: ["update"] 967 - apiGroups: ["coordination.k8s.io"] 968 resources: ["leases"] 969 verbs: ["get", "watch", "list", "delete", "update", "create"] 970 - apiGroups: ["apiextensions.k8s.io"] 971 resources: ["customresourcedefinitions"] 972 verbs: ["create", "list", "watch", "delete", "get", "update"] 973 974 --- 975 ############################################## 976 ########### ############ 977 ########### Controller plugin ############ 978 ########### ############ 979 ############################################## 980 981 kind: ServiceAccount 982 apiVersion: v1 983 metadata: 984 name: openebs-cstor-csi-controller-sa 985 namespace: openebs 986 987 --- 988 kind: ClusterRole 989 apiVersion: rbac.authorization.k8s.io/v1 990 metadata: 991 name: openebs-cstor-csi-provisioner-role 992 rules: 993 - apiGroups: [""] 994 resources: ["secrets","namespaces"] 995 verbs: ["get", "list"] 996 - apiGroups: [""] 997 resources: ["pods"] 998 verbs: ["get", "list", "watch"] 999 - apiGroups: [""] 1000 resources: ["persistentvolumes", "services"] 1001 verbs: ["get", "list", "watch", "create", "delete", "update", "patch"] 1002 - apiGroups: [""] 1003 resources: ["persistentvolumeclaims"] 1004 verbs: ["get", "list", "watch", "update"] 1005 - apiGroups: [""] 1006 resources: ["persistentvolumeclaims/status"] 1007 verbs: ["update", "patch"] 1008 - apiGroups: ["storage.k8s.io"] 1009 resources: ["storageclasses", "csinodes"] 1010 verbs: ["get", "list", "watch"] 1011 - apiGroups: [""] 1012 resources: ["events"] 1013 verbs: ["list", "watch", "create", "update", "patch"] 1014 - apiGroups: ["snapshot.storage.k8s.io"] 1015 resources: ["volumesnapshots"] 1016 verbs: ["get", "list"] 1017 - apiGroups: ["storage.k8s.io"] 1018 resources: ["volumeattachments"] 1019 verbs: ["get", "list", "watch", "create", "delete", "update", "patch"] 1020 - apiGroups: ["snapshot.storage.k8s.io"] 1021 resources: ["volumesnapshotcontents"] 1022 verbs: ["get", "list"] 1023 - apiGroups: ["coordination.k8s.io"] 1024 resources: ["leases"] 1025 verbs: ["*"] 1026 - apiGroups: ["*"] 1027 resources: ["cstorvolumeattachments", "cstorvolumes","cstorvolumeconfigs"] 1028 verbs: ["*"] 1029 1030 --- 1031 1032 kind: ClusterRoleBinding 1033 apiVersion: rbac.authorization.k8s.io/v1 1034 metadata: 1035 name: openebs-cstor-csi-provisioner-binding 1036 subjects: 1037 - kind: ServiceAccount 1038 name: openebs-cstor-csi-controller-sa 1039 namespace: openebs 1040 roleRef: 1041 kind: ClusterRole 1042 name: openebs-cstor-csi-provisioner-role 1043 apiGroup: rbac.authorization.k8s.io 1044 1045 --- 1046 kind: StatefulSet 1047 apiVersion: apps/v1 1048 metadata: 1049 name: openebs-cstor-csi-controller 1050 namespace: openebs 1051 labels: 1052 name: openebs-cstor-csi-controller 1053 openebs.io/component-name: openebs-cstor-csi-controller 1054 openebs.io/version: 2.11.0 1055 spec: 1056 selector: 1057 matchLabels: 1058 app: openebs-cstor-csi-controller 1059 role: openebs-cstor-csi 1060 name: openebs-cstor-csi-controller 1061 openebs.io/component-name: openebs-cstor-csi-controller 1062 serviceName: "openebs-csi" 1063 replicas: 1 1064 template: 1065 metadata: 1066 labels: 1067 app: openebs-cstor-csi-controller 1068 role: openebs-cstor-csi 1069 name: openebs-cstor-csi-controller 1070 openebs.io/component-name: openebs-cstor-csi-controller 1071 openebs.io/version: 2.11.0 1072 spec: 1073 priorityClassName: openebs-csi-controller-critical 1074 serviceAccount: openebs-cstor-csi-controller-sa 1075 containers: 1076 - name: csi-resizer 1077 image: k8s.gcr.io/sig-storage/csi-resizer:v1.1.0 1078 args: 1079 - "--v=5" 1080 - "--csi-address=$(ADDRESS)" 1081 - "--leader-election" 1082 env: 1083 - name: ADDRESS 1084 value: /var/lib/csi/sockets/pluginproxy/csi.sock 1085 imagePullPolicy: IfNotPresent 1086 volumeMounts: 1087 - name: socket-dir 1088 mountPath: /var/lib/csi/sockets/pluginproxy/ 1089 - name: csi-snapshotter 1090 image: k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.3 1091 args: 1092 - "--csi-address=$(ADDRESS)" 1093 env: 1094 - name: ADDRESS 1095 value: /var/lib/csi/sockets/pluginproxy/csi.sock 1096 imagePullPolicy: IfNotPresent 1097 volumeMounts: 1098 - name: socket-dir 1099 mountPath: /var/lib/csi/sockets/pluginproxy/ 1100 - name: snapshot-controller 1101 image: k8s.gcr.io/sig-storage/snapshot-controller:v3.0.3 1102 args: 1103 - "--v=5" 1104 - "--leader-election=false" 1105 imagePullPolicy: IfNotPresent 1106 - name: csi-provisioner 1107 image: k8s.gcr.io/sig-storage/csi-provisioner:v2.1.0 1108 imagePullPolicy: IfNotPresent 1109 args: 1110 - "--csi-address=$(ADDRESS)" 1111 - "--v=5" 1112 - "--feature-gates=Topology=true" 1113 - "--extra-create-metadata=true" 1114 - "--metrics-address=:22011" 1115 - "--timeout=250s" 1116 - "--default-fstype=ext4" 1117 env: 1118 - name: MY_NAME 1119 valueFrom: 1120 fieldRef: 1121 fieldPath: metadata.name 1122 - name: ADDRESS 1123 value: /var/lib/csi/sockets/pluginproxy/csi.sock 1124 volumeMounts: 1125 - name: socket-dir 1126 mountPath: /var/lib/csi/sockets/pluginproxy/ 1127 - name: csi-attacher 1128 image: k8s.gcr.io/sig-storage/csi-attacher:v3.1.0 1129 imagePullPolicy: IfNotPresent 1130 args: 1131 - "--v=5" 1132 - "--csi-address=$(ADDRESS)" 1133 env: 1134 - name: ADDRESS 1135 value: /var/lib/csi/sockets/pluginproxy/csi.sock 1136 volumeMounts: 1137 - name: socket-dir 1138 mountPath: /var/lib/csi/sockets/pluginproxy/ 1139 - name: cstor-csi-plugin 1140 image: openebs/cstor-csi-driver:2.11.0 1141 imagePullPolicy: IfNotPresent 1142 env: 1143 - name: OPENEBS_CONTROLLER_DRIVER 1144 value: controller 1145 - name: OPENEBS_CSI_ENDPOINT 1146 value: unix:///var/lib/csi/sockets/pluginproxy/csi.sock 1147 - name: OPENEBS_CSI_API_URL 1148 value: https://openebs.io 1149 # OpenEBS namespace where the openebs cstor operator components 1150 # has been installed 1151 - name: OPENEBS_NAMESPACE 1152 valueFrom: 1153 fieldRef: 1154 fieldPath: metadata.namespace 1155 - name: OPENEBS_IO_INSTALLER_TYPE 1156 value: "cstor-operator" 1157 - name: OPENEBS_IO_ENABLE_ANALYTICS 1158 value: "true" 1159 args : 1160 - "--endpoint=$(OPENEBS_CSI_ENDPOINT)" 1161 - "--url=$(OPENEBS_CSI_API_URL)" 1162 - "--plugin=$(OPENEBS_CONTROLLER_DRIVER)" 1163 volumeMounts: 1164 - name: socket-dir 1165 mountPath: /var/lib/csi/sockets/pluginproxy/ 1166 volumes: 1167 - name: socket-dir 1168 emptyDir: {} 1169 --- 1170 1171 ############################## CSI- Attacher ####################### 1172 # Attacher must be able to work with PVs, nodes and VolumeAttachments 1173 1174 kind: ClusterRole 1175 apiVersion: rbac.authorization.k8s.io/v1 1176 metadata: 1177 name: openebs-cstor-csi-attacher-role 1178 rules: 1179 - apiGroups: [""] 1180 resources: ["persistentvolumes"] 1181 verbs: ["get", "list", "watch", "update"] 1182 - apiGroups: [""] 1183 resources: ["nodes"] 1184 verbs: ["get", "list", "watch"] 1185 - apiGroups: ["csi.storage.k8s.io"] 1186 resources: ["csinodeinfos"] 1187 verbs: ["get", "list", "watch"] 1188 - apiGroups: ["storage.k8s.io"] 1189 resources: ["volumeattachments", "csinodes"] 1190 verbs: ["get", "list", "watch", "update"] 1191 - apiGroups: ["storage.k8s.io"] 1192 resources: ["volumeattachments/status"] 1193 verbs: ["patch"] 1194 1195 --- 1196 kind: ClusterRoleBinding 1197 apiVersion: rbac.authorization.k8s.io/v1 1198 metadata: 1199 name: openebs-cstor-csi-attacher-binding 1200 subjects: 1201 - kind: ServiceAccount 1202 name: openebs-cstor-csi-controller-sa 1203 namespace: openebs 1204 roleRef: 1205 kind: ClusterRole 1206 name: openebs-cstor-csi-attacher-role 1207 apiGroup: rbac.authorization.k8s.io 1208 1209 --- 1210 1211 kind: ClusterRole 1212 apiVersion: rbac.authorization.k8s.io/v1 1213 metadata: 1214 name: openebs-cstor-csi-cluster-registrar-role 1215 rules: 1216 - apiGroups: ["csi.storage.k8s.io"] 1217 resources: ["csidrivers"] 1218 verbs: ["create", "delete"] 1219 1220 --- 1221 1222 kind: ClusterRoleBinding 1223 apiVersion: rbac.authorization.k8s.io/v1 1224 metadata: 1225 name: openebs-cstor-csi-cluster-registrar-binding 1226 subjects: 1227 - kind: ServiceAccount 1228 name: openebs-cstor-csi-controller-sa 1229 namespace: openebs 1230 roleRef: 1231 kind: ClusterRole 1232 name: openebs-cstor-csi-cluster-registrar-role 1233 apiGroup: rbac.authorization.k8s.io 1234 1235 --- 1236 1237 ######################################## 1238 ########### ############ 1239 ########### Node plugin ############ 1240 ########### ############ 1241 ######################################## 1242 1243 apiVersion: v1 1244 kind: ServiceAccount 1245 metadata: 1246 name: openebs-cstor-csi-node-sa 1247 namespace: openebs 1248 1249 --- 1250 1251 kind: ClusterRole 1252 apiVersion: rbac.authorization.k8s.io/v1 1253 metadata: 1254 name: openebs-cstor-csi-registrar-role 1255 rules: 1256 - apiGroups: [""] 1257 resources: ["events"] 1258 verbs: ["get", "list", "watch", "create", "update", "patch"] 1259 - apiGroups: [""] 1260 resources: ["persistentvolumes", "nodes", "services"] 1261 verbs: ["get", "list", "patch"] 1262 - apiGroups: ["*"] 1263 resources: ["cstorvolumeattachments", "cstorvolumes","cstorvolumeconfigs"] 1264 verbs: ["get", "list", "watch", "create", "update", "delete", "patch"] 1265 1266 --- 1267 1268 kind: ClusterRoleBinding 1269 apiVersion: rbac.authorization.k8s.io/v1 1270 metadata: 1271 name: openebs-cstor-csi-registrar-binding 1272 subjects: 1273 - kind: ServiceAccount 1274 name: openebs-cstor-csi-node-sa 1275 namespace: openebs 1276 roleRef: 1277 kind: ClusterRole 1278 name: openebs-cstor-csi-registrar-role 1279 apiGroup: rbac.authorization.k8s.io 1280 1281 --- 1282 kind: ConfigMap 1283 apiVersion: v1 1284 metadata: 1285 name: openebs-cstor-csi-iscsiadm 1286 namespace: openebs 1287 data: 1288 iscsiadm: | 1289 #!/bin/sh 1290 if [ -x /host/sbin/iscsiadm ]; then 1291 chroot /host /sbin/iscsiadm "$@" 1292 elif [ -x /host/usr/local/sbin/iscsiadm ]; then 1293 chroot /host /usr/local/sbin/iscsiadm "$@" 1294 elif [ -x /host/bin/iscsiadm ]; then 1295 chroot /host /bin/iscsiadm "$@" 1296 elif [ -x /host/usr/local/bin/iscsiadm ]; then 1297 chroot /host /usr/local/bin/iscsiadm "$@" 1298 else 1299 chroot /host iscsiadm "$@" 1300 fi 1301 1302 --- 1303 1304 kind: DaemonSet 1305 apiVersion: apps/v1 1306 metadata: 1307 name: openebs-cstor-csi-node 1308 namespace: openebs 1309 labels: 1310 app: openebs-cstor-csi-node 1311 name: openebs-cstor-csi-node 1312 openebs.io/component-name: openebs-cstor-csi-node 1313 openebs.io/version: 2.11.0 1314 spec: 1315 selector: 1316 matchLabels: 1317 app: openebs-cstor-csi-node 1318 role: openebs-cstor-csi 1319 name: openebs-cstor-csi-node 1320 openebs.io/component-name: openebs-cstor-csi-node 1321 template: 1322 metadata: 1323 labels: 1324 app: openebs-cstor-csi-node 1325 role: openebs-cstor-csi 1326 name: openebs-cstor-csi-node 1327 openebs.io/component-name: openebs-cstor-csi-node 1328 openebs.io/version: 2.11.0 1329 spec: 1330 priorityClassName: openebs-csi-node-critical 1331 serviceAccount: openebs-cstor-csi-node-sa 1332 hostNetwork: true 1333 containers: 1334 - name: csi-node-driver-registrar 1335 image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.1.0 1336 imagePullPolicy: IfNotPresent 1337 args: 1338 - "--v=5" 1339 - "--csi-address=$(ADDRESS)" 1340 - "--kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)" 1341 lifecycle: 1342 preStop: 1343 exec: 1344 command: ["/bin/sh", "-c", "rm -rf /registration/cstor.csi.openebs.io /registration/cstor.csi.openebs.io-reg.sock"] 1345 env: 1346 - name: ADDRESS 1347 value: /plugin/csi.sock 1348 - name: DRIVER_REG_SOCK_PATH 1349 value: /var/lib/kubelet/plugins/cstor.csi.openebs.io/csi.sock 1350 - name: KUBE_NODE_NAME 1351 valueFrom: 1352 fieldRef: 1353 fieldPath: spec.nodeName 1354 - name: NODE_DRIVER 1355 value: openebs-cstor-csi 1356 volumeMounts: 1357 - name: plugin-dir 1358 mountPath: /plugin 1359 - name: registration-dir 1360 mountPath: /registration 1361 - name: cstor-csi-plugin 1362 securityContext: 1363 privileged: true 1364 capabilities: 1365 add: ["CAP_MKNOD", "CAP_SYS_ADMIN", "SYS_ADMIN"] 1366 allowPrivilegeEscalation: true 1367 image: openebs/cstor-csi-driver:2.11.0 1368 imagePullPolicy: IfNotPresent 1369 args: 1370 - "--nodeid=$(OPENEBS_NODE_ID)" 1371 - "--endpoint=$(OPENEBS_CSI_ENDPOINT)" 1372 - "--url=$(OPENEBS_CSI_API_URL)" 1373 - "--plugin=$(OPENEBS_NODE_DRIVER)" 1374 env: 1375 - name: OPENEBS_NODE_ID 1376 valueFrom: 1377 fieldRef: 1378 fieldPath: spec.nodeName 1379 - name: OPENEBS_CSI_ENDPOINT 1380 value: unix:///plugin/csi.sock 1381 - name: OPENEBS_NODE_DRIVER 1382 value: node 1383 - name: OPENEBS_CSI_API_URL 1384 value: https://openebs.io 1385 # OpenEBS namespace where the openebs cstor operator components 1386 # has been installed 1387 - name: OPENEBS_NAMESPACE 1388 valueFrom: 1389 fieldRef: 1390 fieldPath: metadata.namespace 1391 # Enable/Disable auto-remount feature, when volumes 1392 # recovers form the read-only state 1393 - name: REMOUNT 1394 value: "true" 1395 volumeMounts: 1396 - name: plugin-dir 1397 mountPath: /plugin 1398 - name: device-dir 1399 mountPath: /dev 1400 - name: pods-mount-dir 1401 mountPath: /var/lib/kubelet/ 1402 # needed so that any mounts setup inside this container are 1403 # propagated back to the host machine. 1404 mountPropagation: "Bidirectional" 1405 - name: host-root 1406 mountPath: /host 1407 mountPropagation: "HostToContainer" 1408 - name: chroot-iscsiadm 1409 mountPath: /sbin/iscsiadm 1410 subPath: iscsiadm 1411 volumes: 1412 - name: device-dir 1413 hostPath: 1414 path: /dev 1415 type: Directory 1416 - name: registration-dir 1417 hostPath: 1418 path: /var/lib/kubelet/plugins_registry/ 1419 type: DirectoryOrCreate 1420 - name: plugin-dir 1421 hostPath: 1422 path: /var/lib/kubelet/plugins/cstor.csi.openebs.io/ 1423 type: DirectoryOrCreate 1424 - name: pods-mount-dir 1425 hostPath: 1426 path: /var/lib/kubelet/ 1427 type: Directory 1428 - name: chroot-iscsiadm 1429 configMap: 1430 defaultMode: 0555 1431 name: openebs-cstor-csi-iscsiadm 1432 - name: host-root 1433 hostPath: 1434 path: / 1435 type: Directory 1436 --- 1437 ########################################################################### 1438 #### #### 1439 #### CStor-Operator yaml #### 1440 #### #### 1441 ########################################################################### 1442 # 1443 # 1444 ########################################################################### 1445 # ### 1446 # CStorPoolCluster CRD ### 1447 # ### 1448 ########################################################################### 1449 apiVersion: apiextensions.k8s.io/v1 1450 kind: CustomResourceDefinition 1451 metadata: 1452 annotations: 1453 controller-gen.kubebuilder.io/version: v0.4.0 1454 creationTimestamp: null 1455 name: cstorpoolclusters.cstor.openebs.io 1456 spec: 1457 group: cstor.openebs.io 1458 names: 1459 kind: CStorPoolCluster 1460 listKind: CStorPoolClusterList 1461 plural: cstorpoolclusters 1462 shortNames: 1463 - cspc 1464 singular: cstorpoolcluster 1465 scope: Namespaced 1466 versions: 1467 - additionalPrinterColumns: 1468 - description: The number of healthy cStorPoolInstances 1469 jsonPath: .status.healthyInstances 1470 name: HealthyInstances 1471 type: integer 1472 - description: The number of provisioned cStorPoolInstances 1473 jsonPath: .status.provisionedInstances 1474 name: ProvisionedInstances 1475 type: integer 1476 - description: The number of desired cStorPoolInstances 1477 jsonPath: .status.desiredInstances 1478 name: DesiredInstances 1479 type: integer 1480 - description: Age of CStorPoolCluster 1481 jsonPath: .metadata.creationTimestamp 1482 name: Age 1483 type: date 1484 name: v1 1485 schema: 1486 openAPIV3Schema: 1487 description: CStorPoolCluster describes a CStorPoolCluster custom resource. 1488 properties: 1489 apiVersion: 1490 description: 'APIVersion defines the versioned schema of this representation 1491 of an object. Servers should convert recognized schemas to the latest 1492 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 1493 type: string 1494 kind: 1495 description: 'Kind is a string value representing the REST resource this 1496 object represents. Servers may infer this from the endpoint the client 1497 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 1498 type: string 1499 metadata: 1500 type: object 1501 spec: 1502 description: CStorPoolClusterSpec is the spec for a CStorPoolClusterSpec 1503 resource 1504 properties: 1505 auxResources: 1506 description: AuxResources are the compute resources required by the 1507 cstor-pool pod side car containers. 1508 nullable: true 1509 properties: 1510 limits: 1511 additionalProperties: 1512 anyOf: 1513 - type: integer 1514 - type: string 1515 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 1516 x-kubernetes-int-or-string: true 1517 description: 'Limits describes the maximum amount of compute resources 1518 allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 1519 type: object 1520 requests: 1521 additionalProperties: 1522 anyOf: 1523 - type: integer 1524 - type: string 1525 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 1526 x-kubernetes-int-or-string: true 1527 description: 'Requests describes the minimum amount of compute 1528 resources required. If Requests is omitted for a container, 1529 it defaults to Limits if that is explicitly specified, otherwise 1530 to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 1531 type: object 1532 type: object 1533 pools: 1534 description: Pools is the spec for pools for various nodes where it 1535 should be created. 1536 items: 1537 description: PoolSpec is the spec for pool on node where it should 1538 be created. 1539 properties: 1540 dataRaidGroups: 1541 description: DataRaidGroups is the raid group configuration 1542 for the given pool. 1543 items: 1544 description: RaidGroup contains the details of a raid group 1545 for the pool 1546 properties: 1547 blockDevices: 1548 items: 1549 description: CStorPoolInstanceBlockDevice contains the 1550 details of block devices that constitutes a raid group. 1551 properties: 1552 blockDeviceName: 1553 description: BlockDeviceName is the name of the 1554 block device. 1555 type: string 1556 capacity: 1557 description: Capacity is the capacity of the block 1558 device. It is system generated 1559 format: int64 1560 type: integer 1561 devLink: 1562 description: DevLink is the dev link for block devices 1563 type: string 1564 required: 1565 - blockDeviceName 1566 type: object 1567 type: array 1568 required: 1569 - blockDevices 1570 type: object 1571 type: array 1572 nodeSelector: 1573 additionalProperties: 1574 type: string 1575 description: NodeSelector is the labels that will be used to 1576 select a node for pool provisioning. Required field 1577 type: object 1578 poolConfig: 1579 description: PoolConfig is the default pool config that applies 1580 to the pool on node. 1581 properties: 1582 auxResources: 1583 description: AuxResources are the compute resources required 1584 by the cstor-pool pod side car containers. 1585 nullable: true 1586 properties: 1587 limits: 1588 additionalProperties: 1589 anyOf: 1590 - type: integer 1591 - type: string 1592 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 1593 x-kubernetes-int-or-string: true 1594 description: 'Limits describes the maximum amount of 1595 compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 1596 type: object 1597 requests: 1598 additionalProperties: 1599 anyOf: 1600 - type: integer 1601 - type: string 1602 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 1603 x-kubernetes-int-or-string: true 1604 description: 'Requests describes the minimum amount 1605 of compute resources required. If Requests is omitted 1606 for a container, it defaults to Limits if that is 1607 explicitly specified, otherwise to an implementation-defined 1608 value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 1609 type: object 1610 type: object 1611 compression: 1612 description: 'Compression to enable compression Optional 1613 -- defaults to off Possible values : lz, off' 1614 type: string 1615 dataRaidGroupType: 1616 description: DataRaidGroupType is the raid type. 1617 type: string 1618 priorityClassName: 1619 description: PriorityClassName if specified applies to this 1620 pool pod If left empty, DefaultPriorityClassName is applied. 1621 (See CStorPoolClusterSpec.DefaultPriorityClassName) If 1622 both are empty, not priority class is applied. 1623 nullable: true 1624 type: string 1625 resources: 1626 description: Resources are the compute resources required 1627 by the cstor-pool container. 1628 nullable: true 1629 properties: 1630 limits: 1631 additionalProperties: 1632 anyOf: 1633 - type: integer 1634 - type: string 1635 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 1636 x-kubernetes-int-or-string: true 1637 description: 'Limits describes the maximum amount of 1638 compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 1639 type: object 1640 requests: 1641 additionalProperties: 1642 anyOf: 1643 - type: integer 1644 - type: string 1645 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 1646 x-kubernetes-int-or-string: true 1647 description: 'Requests describes the minimum amount 1648 of compute resources required. If Requests is omitted 1649 for a container, it defaults to Limits if that is 1650 explicitly specified, otherwise to an implementation-defined 1651 value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 1652 type: object 1653 type: object 1654 roThresholdLimit: 1655 description: 'ROThresholdLimit is threshold(percentage base) 1656 limit for pool read only mode. If ROThresholdLimit(%) 1657 amount of pool storage is reached then pool will set to 1658 readonly. NOTE: 1. If ROThresholdLimit is set to 100 then 1659 entire pool storage will be used by default it will 1660 be set to 85%. 2. ROThresholdLimit value will be 0 <= 1661 ROThresholdLimit <= 100.' 1662 nullable: true 1663 type: integer 1664 thickProvision: 1665 description: ThickProvision to enable thick provisioning 1666 Optional -- defaults to false 1667 type: boolean 1668 tolerations: 1669 description: Tolerations, if specified, the pool pod's tolerations. 1670 items: 1671 description: The pod this Toleration is attached to tolerates 1672 any taint that matches the triple <key,value,effect> 1673 using the matching operator <operator>. 1674 properties: 1675 effect: 1676 description: Effect indicates the taint effect to 1677 match. Empty means match all taint effects. When 1678 specified, allowed values are NoSchedule, PreferNoSchedule 1679 and NoExecute. 1680 type: string 1681 key: 1682 description: Key is the taint key that the toleration 1683 applies to. Empty means match all taint keys. If 1684 the key is empty, operator must be Exists; this 1685 combination means to match all values and all keys. 1686 type: string 1687 operator: 1688 description: Operator represents a key's relationship 1689 to the value. Valid operators are Exists and Equal. 1690 Defaults to Equal. Exists is equivalent to wildcard 1691 for value, so that a pod can tolerate all taints 1692 of a particular category. 1693 type: string 1694 tolerationSeconds: 1695 description: TolerationSeconds represents the period 1696 of time the toleration (which must be of effect 1697 NoExecute, otherwise this field is ignored) tolerates 1698 the taint. By default, it is not set, which means 1699 tolerate the taint forever (do not evict). Zero 1700 and negative values will be treated as 0 (evict 1701 immediately) by the system. 1702 format: int64 1703 type: integer 1704 value: 1705 description: Value is the taint value the toleration 1706 matches to. If the operator is Exists, the value 1707 should be empty, otherwise just a regular string. 1708 type: string 1709 type: object 1710 nullable: true 1711 type: array 1712 writeCacheGroupType: 1713 description: WriteCacheGroupType is the write cache raid 1714 type. 1715 type: string 1716 required: 1717 - dataRaidGroupType 1718 type: object 1719 writeCacheRaidGroups: 1720 description: WriteCacheRaidGroups is the write cache raid group. 1721 items: 1722 description: RaidGroup contains the details of a raid group 1723 for the pool 1724 properties: 1725 blockDevices: 1726 items: 1727 description: CStorPoolInstanceBlockDevice contains the 1728 details of block devices that constitutes a raid group. 1729 properties: 1730 blockDeviceName: 1731 description: BlockDeviceName is the name of the 1732 block device. 1733 type: string 1734 capacity: 1735 description: Capacity is the capacity of the block 1736 device. It is system generated 1737 format: int64 1738 type: integer 1739 devLink: 1740 description: DevLink is the dev link for block devices 1741 type: string 1742 required: 1743 - blockDeviceName 1744 type: object 1745 type: array 1746 required: 1747 - blockDevices 1748 type: object 1749 nullable: true 1750 type: array 1751 required: 1752 - dataRaidGroups 1753 - nodeSelector 1754 type: object 1755 type: array 1756 priorityClassName: 1757 description: DefaultPriorityClassName if specified applies to all 1758 the pool pods in the pool spec if the priorityClass at the pool 1759 level is not specified. 1760 type: string 1761 resources: 1762 description: DefaultResources are the compute resources required by 1763 the cstor-pool container. If the resources at PoolConfig is not 1764 specified, this is written to CSPI PoolConfig. 1765 nullable: true 1766 properties: 1767 limits: 1768 additionalProperties: 1769 anyOf: 1770 - type: integer 1771 - type: string 1772 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 1773 x-kubernetes-int-or-string: true 1774 description: 'Limits describes the maximum amount of compute resources 1775 allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 1776 type: object 1777 requests: 1778 additionalProperties: 1779 anyOf: 1780 - type: integer 1781 - type: string 1782 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 1783 x-kubernetes-int-or-string: true 1784 description: 'Requests describes the minimum amount of compute 1785 resources required. If Requests is omitted for a container, 1786 it defaults to Limits if that is explicitly specified, otherwise 1787 to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 1788 type: object 1789 type: object 1790 tolerations: 1791 description: Tolerations, if specified, are the pool pod's tolerations 1792 If tolerations at PoolConfig is empty, this is written to CSPI PoolConfig. 1793 items: 1794 description: The pod this Toleration is attached to tolerates any 1795 taint that matches the triple <key,value,effect> using the matching 1796 operator <operator>. 1797 properties: 1798 effect: 1799 description: Effect indicates the taint effect to match. Empty 1800 means match all taint effects. When specified, allowed values 1801 are NoSchedule, PreferNoSchedule and NoExecute. 1802 type: string 1803 key: 1804 description: Key is the taint key that the toleration applies 1805 to. Empty means match all taint keys. If the key is empty, 1806 operator must be Exists; this combination means to match all 1807 values and all keys. 1808 type: string 1809 operator: 1810 description: Operator represents a key's relationship to the 1811 value. Valid operators are Exists and Equal. Defaults to Equal. 1812 Exists is equivalent to wildcard for value, so that a pod 1813 can tolerate all taints of a particular category. 1814 type: string 1815 tolerationSeconds: 1816 description: TolerationSeconds represents the period of time 1817 the toleration (which must be of effect NoExecute, otherwise 1818 this field is ignored) tolerates the taint. By default, it 1819 is not set, which means tolerate the taint forever (do not 1820 evict). Zero and negative values will be treated as 0 (evict 1821 immediately) by the system. 1822 format: int64 1823 type: integer 1824 value: 1825 description: Value is the taint value the toleration matches 1826 to. If the operator is Exists, the value should be empty, 1827 otherwise just a regular string. 1828 type: string 1829 type: object 1830 nullable: true 1831 type: array 1832 type: object 1833 status: 1834 description: CStorPoolClusterStatus represents the latest available observations 1835 of a CSPC's current state. 1836 properties: 1837 conditions: 1838 description: Current state of CSPC. 1839 items: 1840 description: CStorPoolClusterCondition describes the state of a 1841 CSPC at a certain point. 1842 properties: 1843 lastTransitionTime: 1844 description: Last time the condition transitioned from one status 1845 to another. 1846 format: date-time 1847 type: string 1848 lastUpdateTime: 1849 description: The last time this condition was updated. 1850 format: date-time 1851 type: string 1852 message: 1853 description: A human readable message indicating details about 1854 the transition. 1855 type: string 1856 reason: 1857 description: The reason for the condition's last transition. 1858 type: string 1859 status: 1860 description: Status of the condition, one of True, False, Unknown. 1861 type: string 1862 type: 1863 description: Type of CSPC condition. 1864 type: string 1865 required: 1866 - status 1867 - type 1868 type: object 1869 nullable: true 1870 type: array 1871 desiredInstances: 1872 description: DesiredInstances is the number of CSPI(s) that should 1873 be provisioned. 1874 format: int32 1875 nullable: true 1876 type: integer 1877 healthyInstances: 1878 description: HealthyInstances is the number of CSPI(s) that are healthy. 1879 format: int32 1880 nullable: true 1881 type: integer 1882 provisionedInstances: 1883 description: ProvisionedInstances is the the number of CSPI present 1884 at the current state. 1885 format: int32 1886 nullable: true 1887 type: integer 1888 type: object 1889 versionDetails: 1890 description: VersionDetails provides the details for upgrade 1891 properties: 1892 autoUpgrade: 1893 description: If AutoUpgrade is set to true then the resource is upgraded 1894 automatically without any manual steps 1895 type: boolean 1896 desired: 1897 description: Desired is the version that we want to upgrade or the 1898 control plane version 1899 type: string 1900 status: 1901 description: Status gives the status of reconciliation triggered when 1902 the desired and current version are not same 1903 properties: 1904 current: 1905 description: Current is the version of resource 1906 type: string 1907 dependentsUpgraded: 1908 description: DependentsUpgraded gives the details whether all 1909 children of a resource are upgraded to desired version or not 1910 type: boolean 1911 lastUpdateTime: 1912 description: LastUpdateTime is the time the status was last updated 1913 format: date-time 1914 nullable: true 1915 type: string 1916 message: 1917 description: Message is a human readable message if some error 1918 occurs 1919 type: string 1920 reason: 1921 description: Reason is the actual reason for the error state 1922 type: string 1923 state: 1924 description: State is the state of reconciliation 1925 type: string 1926 type: object 1927 type: object 1928 required: 1929 - spec 1930 type: object 1931 served: true 1932 storage: true 1933 subresources: {} 1934 status: 1935 acceptedNames: 1936 kind: "" 1937 plural: "" 1938 conditions: [] 1939 storedVersions: [] 1940 --- 1941 ################################################################################ 1942 ### #### 1943 ### CStorPoolInstance CRD #### 1944 ### #### 1945 ################################################################################ 1946 apiVersion: apiextensions.k8s.io/v1 1947 kind: CustomResourceDefinition 1948 metadata: 1949 annotations: 1950 controller-gen.kubebuilder.io/version: v0.4.0 1951 creationTimestamp: null 1952 name: cstorpoolinstances.cstor.openebs.io 1953 spec: 1954 group: cstor.openebs.io 1955 names: 1956 kind: CStorPoolInstance 1957 listKind: CStorPoolInstanceList 1958 plural: cstorpoolinstances 1959 shortNames: 1960 - cspi 1961 singular: cstorpoolinstance 1962 scope: Namespaced 1963 versions: 1964 - additionalPrinterColumns: 1965 - description: Host name where cstorpool instances scheduled 1966 jsonPath: .spec.hostName 1967 name: HostName 1968 type: string 1969 - description: The amount of storage space within the pool that has been physically 1970 allocated 1971 jsonPath: .status.capacity.used 1972 name: Allocated 1973 priority: 1 1974 type: string 1975 - description: The amount of usable free space available in the pool 1976 jsonPath: .status.capacity.free 1977 name: Free 1978 type: string 1979 - description: Total amount of usable space in pool 1980 jsonPath: .status.capacity.total 1981 name: Capacity 1982 type: string 1983 - description: Identifies the pool read only mode 1984 jsonPath: .status.readOnly 1985 name: ReadOnly 1986 type: boolean 1987 - description: Represents no.of replicas present in the pool 1988 jsonPath: .status.provisionedReplicas 1989 name: ProvisionedReplicas 1990 type: integer 1991 - description: Represents no.of healthy replicas present in the pool 1992 jsonPath: .status.healthyReplicas 1993 name: HealthyReplicas 1994 type: integer 1995 - description: Represents the type of the storage pool 1996 jsonPath: .spec.poolConfig.dataRaidGroupType 1997 name: Type 1998 priority: 1 1999 type: string 2000 - description: Identifies the current health of the pool 2001 jsonPath: .status.phase 2002 name: Status 2003 type: string 2004 - description: Age of CStorPoolInstance 2005 jsonPath: .metadata.creationTimestamp 2006 name: Age 2007 type: date 2008 name: v1 2009 schema: 2010 openAPIV3Schema: 2011 description: CStorPoolInstance describes a cstor pool instance resource. 2012 properties: 2013 apiVersion: 2014 description: 'APIVersion defines the versioned schema of this representation 2015 of an object. Servers should convert recognized schemas to the latest 2016 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 2017 type: string 2018 kind: 2019 description: 'Kind is a string value representing the REST resource this 2020 object represents. Servers may infer this from the endpoint the client 2021 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 2022 type: string 2023 metadata: 2024 type: object 2025 spec: 2026 description: Spec is the specification of the cstorpoolinstance resource. 2027 properties: 2028 dataRaidGroups: 2029 description: DataRaidGroups is the raid group configuration for the 2030 given pool. 2031 items: 2032 description: RaidGroup contains the details of a raid group for 2033 the pool 2034 properties: 2035 blockDevices: 2036 items: 2037 description: CStorPoolInstanceBlockDevice contains the details 2038 of block devices that constitutes a raid group. 2039 properties: 2040 blockDeviceName: 2041 description: BlockDeviceName is the name of the block 2042 device. 2043 type: string 2044 capacity: 2045 description: Capacity is the capacity of the block device. 2046 It is system generated 2047 format: int64 2048 type: integer 2049 devLink: 2050 description: DevLink is the dev link for block devices 2051 type: string 2052 required: 2053 - blockDeviceName 2054 type: object 2055 type: array 2056 required: 2057 - blockDevices 2058 type: object 2059 type: array 2060 hostName: 2061 description: HostName is the name of kubernetes node where the pool 2062 should be created. 2063 type: string 2064 nodeSelector: 2065 additionalProperties: 2066 type: string 2067 description: NodeSelector is the labels that will be used to select 2068 a node for pool provisioning. Required field 2069 type: object 2070 poolConfig: 2071 description: PoolConfig is the default pool config that applies to 2072 the pool on node. 2073 properties: 2074 auxResources: 2075 description: AuxResources are the compute resources required by 2076 the cstor-pool pod side car containers. 2077 nullable: true 2078 properties: 2079 limits: 2080 additionalProperties: 2081 anyOf: 2082 - type: integer 2083 - type: string 2084 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2085 x-kubernetes-int-or-string: true 2086 description: 'Limits describes the maximum amount of compute 2087 resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 2088 type: object 2089 requests: 2090 additionalProperties: 2091 anyOf: 2092 - type: integer 2093 - type: string 2094 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2095 x-kubernetes-int-or-string: true 2096 description: 'Requests describes the minimum amount of compute 2097 resources required. If Requests is omitted for a container, 2098 it defaults to Limits if that is explicitly specified, otherwise 2099 to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 2100 type: object 2101 type: object 2102 compression: 2103 description: 'Compression to enable compression Optional -- defaults 2104 to off Possible values : lz, off' 2105 type: string 2106 dataRaidGroupType: 2107 description: DataRaidGroupType is the raid type. 2108 type: string 2109 priorityClassName: 2110 description: PriorityClassName if specified applies to this pool 2111 pod If left empty, DefaultPriorityClassName is applied. (See 2112 CStorPoolClusterSpec.DefaultPriorityClassName) If both are empty, 2113 not priority class is applied. 2114 nullable: true 2115 type: string 2116 resources: 2117 description: Resources are the compute resources required by the 2118 cstor-pool container. 2119 nullable: true 2120 properties: 2121 limits: 2122 additionalProperties: 2123 anyOf: 2124 - type: integer 2125 - type: string 2126 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2127 x-kubernetes-int-or-string: true 2128 description: 'Limits describes the maximum amount of compute 2129 resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 2130 type: object 2131 requests: 2132 additionalProperties: 2133 anyOf: 2134 - type: integer 2135 - type: string 2136 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2137 x-kubernetes-int-or-string: true 2138 description: 'Requests describes the minimum amount of compute 2139 resources required. If Requests is omitted for a container, 2140 it defaults to Limits if that is explicitly specified, otherwise 2141 to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 2142 type: object 2143 type: object 2144 roThresholdLimit: 2145 description: 'ROThresholdLimit is threshold(percentage base) limit 2146 for pool read only mode. If ROThresholdLimit(%) amount of pool 2147 storage is reached then pool will set to readonly. NOTE: 1. 2148 If ROThresholdLimit is set to 100 then entire pool storage 2149 will be used by default it will be set to 85%. 2. ROThresholdLimit 2150 value will be 0 <= ROThresholdLimit <= 100.' 2151 nullable: true 2152 type: integer 2153 thickProvision: 2154 description: ThickProvision to enable thick provisioning Optional 2155 -- defaults to false 2156 type: boolean 2157 tolerations: 2158 description: Tolerations, if specified, the pool pod's tolerations. 2159 items: 2160 description: The pod this Toleration is attached to tolerates 2161 any taint that matches the triple <key,value,effect> using 2162 the matching operator <operator>. 2163 properties: 2164 effect: 2165 description: Effect indicates the taint effect to match. 2166 Empty means match all taint effects. When specified, allowed 2167 values are NoSchedule, PreferNoSchedule and NoExecute. 2168 type: string 2169 key: 2170 description: Key is the taint key that the toleration applies 2171 to. Empty means match all taint keys. If the key is empty, 2172 operator must be Exists; this combination means to match 2173 all values and all keys. 2174 type: string 2175 operator: 2176 description: Operator represents a key's relationship to 2177 the value. Valid operators are Exists and Equal. Defaults 2178 to Equal. Exists is equivalent to wildcard for value, 2179 so that a pod can tolerate all taints of a particular 2180 category. 2181 type: string 2182 tolerationSeconds: 2183 description: TolerationSeconds represents the period of 2184 time the toleration (which must be of effect NoExecute, 2185 otherwise this field is ignored) tolerates the taint. 2186 By default, it is not set, which means tolerate the taint 2187 forever (do not evict). Zero and negative values will 2188 be treated as 0 (evict immediately) by the system. 2189 format: int64 2190 type: integer 2191 value: 2192 description: Value is the taint value the toleration matches 2193 to. If the operator is Exists, the value should be empty, 2194 otherwise just a regular string. 2195 type: string 2196 type: object 2197 nullable: true 2198 type: array 2199 writeCacheGroupType: 2200 description: WriteCacheGroupType is the write cache raid type. 2201 type: string 2202 required: 2203 - dataRaidGroupType 2204 type: object 2205 writeCacheRaidGroups: 2206 description: WriteCacheRaidGroups is the write cache raid group. 2207 items: 2208 description: RaidGroup contains the details of a raid group for 2209 the pool 2210 properties: 2211 blockDevices: 2212 items: 2213 description: CStorPoolInstanceBlockDevice contains the details 2214 of block devices that constitutes a raid group. 2215 properties: 2216 blockDeviceName: 2217 description: BlockDeviceName is the name of the block 2218 device. 2219 type: string 2220 capacity: 2221 description: Capacity is the capacity of the block device. 2222 It is system generated 2223 format: int64 2224 type: integer 2225 devLink: 2226 description: DevLink is the dev link for block devices 2227 type: string 2228 required: 2229 - blockDeviceName 2230 type: object 2231 type: array 2232 required: 2233 - blockDevices 2234 type: object 2235 nullable: true 2236 type: array 2237 required: 2238 - dataRaidGroups 2239 - nodeSelector 2240 type: object 2241 status: 2242 description: Status is the possible statuses of the cstorpoolinstance 2243 resource. 2244 properties: 2245 capacity: 2246 description: Capacity describes the capacity details of a cstor pool 2247 properties: 2248 free: 2249 anyOf: 2250 - type: integer 2251 - type: string 2252 description: Amount of usable space in the pool after excluding 2253 metadata and raid parity 2254 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2255 x-kubernetes-int-or-string: true 2256 total: 2257 anyOf: 2258 - type: integer 2259 - type: string 2260 description: Sum of usable capacity in all the data raidgroups 2261 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2262 x-kubernetes-int-or-string: true 2263 used: 2264 anyOf: 2265 - type: integer 2266 - type: string 2267 description: Amount of physical data (and its metadata) written 2268 to pool after applying compression, etc.., 2269 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2270 x-kubernetes-int-or-string: true 2271 zfs: 2272 description: ZFSCapacityAttributes contains advanced information 2273 about pool capacity details 2274 properties: 2275 logicalUsed: 2276 anyOf: 2277 - type: integer 2278 - type: string 2279 description: LogicalUsed is the amount of space that is "logically" 2280 consumed by this pool and all its descendents. The logical 2281 space ignores the effect of the compression and copies properties, 2282 giving a quantity closer to the amount of data that applications 2283 see. However, it does include space consumed by metadata. 2284 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2285 x-kubernetes-int-or-string: true 2286 required: 2287 - logicalUsed 2288 type: object 2289 required: 2290 - free 2291 - total 2292 - used 2293 - zfs 2294 type: object 2295 conditions: 2296 description: Current state of CSPI with details. 2297 items: 2298 description: CSPIConditionType describes the state of a CSPI at 2299 a certain point. 2300 properties: 2301 lastTransitionTime: 2302 description: Last time the condition transitioned from one status 2303 to another. 2304 format: date-time 2305 type: string 2306 lastUpdateTime: 2307 description: The last time this condition was updated. 2308 format: date-time 2309 type: string 2310 message: 2311 description: A human readable message indicating details about 2312 the transition. 2313 type: string 2314 reason: 2315 description: The reason for the condition's last transition. 2316 type: string 2317 status: 2318 description: Status of the condition, one of True, False, Unknown. 2319 type: string 2320 type: 2321 description: Type of CSPC condition. 2322 type: string 2323 required: 2324 - status 2325 - type 2326 type: object 2327 type: array 2328 healthyReplicas: 2329 description: HealthyReplicas describes the total count of healthy 2330 Volume Replicas in the cstor pool 2331 format: int32 2332 type: integer 2333 phase: 2334 description: ' The phase of a CStorPool is a simple, high-level summary 2335 of the pool state on the node.' 2336 type: string 2337 provisionedReplicas: 2338 description: ProvisionedReplicas describes the total count of Volume 2339 Replicas present in the cstor pool 2340 format: int32 2341 type: integer 2342 readOnly: 2343 description: ReadOnly if pool is readOnly or not 2344 type: boolean 2345 required: 2346 - healthyReplicas 2347 - provisionedReplicas 2348 - readOnly 2349 type: object 2350 versionDetails: 2351 description: VersionDetails is the openebs version. 2352 properties: 2353 autoUpgrade: 2354 description: If AutoUpgrade is set to true then the resource is upgraded 2355 automatically without any manual steps 2356 type: boolean 2357 desired: 2358 description: Desired is the version that we want to upgrade or the 2359 control plane version 2360 type: string 2361 status: 2362 description: Status gives the status of reconciliation triggered when 2363 the desired and current version are not same 2364 properties: 2365 current: 2366 description: Current is the version of resource 2367 type: string 2368 dependentsUpgraded: 2369 description: DependentsUpgraded gives the details whether all 2370 children of a resource are upgraded to desired version or not 2371 type: boolean 2372 lastUpdateTime: 2373 description: LastUpdateTime is the time the status was last updated 2374 format: date-time 2375 nullable: true 2376 type: string 2377 message: 2378 description: Message is a human readable message if some error 2379 occurs 2380 type: string 2381 reason: 2382 description: Reason is the actual reason for the error state 2383 type: string 2384 state: 2385 description: State is the state of reconciliation 2386 type: string 2387 type: object 2388 type: object 2389 required: 2390 - spec 2391 type: object 2392 served: true 2393 storage: true 2394 subresources: {} 2395 status: 2396 acceptedNames: 2397 kind: "" 2398 plural: "" 2399 conditions: [] 2400 storedVersions: [] 2401 --- 2402 ######################################################################### 2403 #### ##### 2404 #### CStorVolumeConfig CRD ##### 2405 #### ##### 2406 ######################################################################### 2407 apiVersion: apiextensions.k8s.io/v1 2408 kind: CustomResourceDefinition 2409 metadata: 2410 annotations: 2411 controller-gen.kubebuilder.io/version: v0.4.0 2412 creationTimestamp: null 2413 name: cstorvolumeconfigs.cstor.openebs.io 2414 spec: 2415 group: cstor.openebs.io 2416 names: 2417 kind: CStorVolumeConfig 2418 listKind: CStorVolumeConfigList 2419 plural: cstorvolumeconfigs 2420 shortNames: 2421 - cvc 2422 singular: cstorvolumeconfig 2423 scope: Namespaced 2424 versions: 2425 - additionalPrinterColumns: 2426 - description: Identifies the volume capacity 2427 jsonPath: .status.capacity.storage 2428 name: Capacity 2429 type: string 2430 - description: Identifies the volume provisioning status 2431 jsonPath: .status.phase 2432 name: Status 2433 type: string 2434 - description: Age of CStorVolumeReplica 2435 jsonPath: .metadata.creationTimestamp 2436 name: Age 2437 type: date 2438 name: v1 2439 schema: 2440 openAPIV3Schema: 2441 description: CStorVolumeConfig describes a cstor volume config resource created 2442 as custom resource. CStorVolumeConfig is a request for creating cstor volume 2443 related resources like deployment, svc etc. 2444 properties: 2445 apiVersion: 2446 description: 'APIVersion defines the versioned schema of this representation 2447 of an object. Servers should convert recognized schemas to the latest 2448 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 2449 type: string 2450 kind: 2451 description: 'Kind is a string value representing the REST resource this 2452 object represents. Servers may infer this from the endpoint the client 2453 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 2454 type: string 2455 metadata: 2456 type: object 2457 publish: 2458 description: Publish contains info related to attachment of a volume to 2459 a node. i.e. NodeId etc. 2460 properties: 2461 nodeId: 2462 description: NodeID contains publish info related to attachment of 2463 a volume to a node. 2464 type: string 2465 type: object 2466 spec: 2467 description: Spec defines a specification of a cstor volume config required 2468 to provisione cstor volume resources 2469 properties: 2470 capacity: 2471 additionalProperties: 2472 anyOf: 2473 - type: integer 2474 - type: string 2475 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2476 x-kubernetes-int-or-string: true 2477 description: Capacity represents the actual resources of the underlying 2478 cstor volume. 2479 type: object 2480 cstorVolumeRef: 2481 description: CStorVolumeRef has the information about where CstorVolumeClaim 2482 is created from. 2483 properties: 2484 apiVersion: 2485 description: API version of the referent. 2486 type: string 2487 fieldPath: 2488 description: 'If referring to a piece of an object instead of 2489 an entire object, this string should contain a valid JSON/Go 2490 field access statement, such as desiredState.manifest.containers[2]. 2491 For example, if the object reference is to a container within 2492 a pod, this would take on a value like: "spec.containers{name}" 2493 (where "name" refers to the name of the container that triggered 2494 the event) or if no container name is specified "spec.containers[2]" 2495 (container with index 2 in this pod). This syntax is chosen 2496 only to have some well-defined way of referencing a part of 2497 an object. TODO: this design is not final and this field is 2498 subject to change in the future.' 2499 type: string 2500 kind: 2501 description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 2502 type: string 2503 name: 2504 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' 2505 type: string 2506 namespace: 2507 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' 2508 type: string 2509 resourceVersion: 2510 description: 'Specific resourceVersion to which this reference 2511 is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' 2512 type: string 2513 uid: 2514 description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' 2515 type: string 2516 type: object 2517 cstorVolumeSource: 2518 description: CStorVolumeSource contains the source volumeName@snapShotname 2519 combaination. This will be filled only if it is a clone creation. 2520 type: string 2521 policy: 2522 description: Policy contains volume specific required policies target 2523 and replicas 2524 properties: 2525 provision: 2526 description: replicaAffinity is set to true then volume replica 2527 resources need to be distributed across the pool instances 2528 properties: 2529 blockSize: 2530 description: BlockSize is the logical block size in multiple 2531 of 512 bytes BlockSize specifies the block size of the volume. 2532 The blocksize cannot be changed once the volume has been 2533 written, so it should be set at volume creation time. The 2534 default blocksize for volumes is 4 Kbytes. Any power of 2535 2 from 512 bytes to 128 Kbytes is valid. 2536 format: int32 2537 type: integer 2538 replicaAffinity: 2539 description: replicaAffinity is set to true then volume replica 2540 resources need to be distributed across the cstor pool instances 2541 based on the given topology 2542 type: boolean 2543 required: 2544 - replicaAffinity 2545 type: object 2546 replica: 2547 description: ReplicaSpec represents configuration related to replicas 2548 resources 2549 properties: 2550 compression: 2551 description: The zle compression algorithm compresses runs 2552 of zeros. 2553 type: string 2554 zvolWorkers: 2555 description: IOWorkers represents number of threads that executes 2556 client IOs 2557 type: string 2558 type: object 2559 replicaPoolInfo: 2560 description: 'ReplicaPoolInfo holds the pool information of volume 2561 replicas. Ex: If volume is provisioned on which CStor pool volume 2562 replicas exist' 2563 items: 2564 description: ReplicaPoolInfo represents the pool information 2565 of volume replica 2566 properties: 2567 poolName: 2568 description: PoolName represents the pool name where volume 2569 replica exists 2570 type: string 2571 required: 2572 - poolName 2573 type: object 2574 type: array 2575 target: 2576 description: TargetSpec represents configuration related to cstor 2577 target and its resources 2578 properties: 2579 affinity: 2580 description: PodAffinity if specified, are the target pod's 2581 affinities 2582 properties: 2583 preferredDuringSchedulingIgnoredDuringExecution: 2584 description: The scheduler will prefer to schedule pods 2585 to nodes that satisfy the affinity expressions specified 2586 by this field, but it may choose a node that violates 2587 one or more of the expressions. The node that is most 2588 preferred is the one with the greatest sum of weights, 2589 i.e. for each node that meets all of the scheduling 2590 requirements (resource request, requiredDuringScheduling 2591 affinity expressions, etc.), compute a sum by iterating 2592 through the elements of this field and adding "weight" 2593 to the sum if the node has pods which matches the corresponding 2594 podAffinityTerm; the node(s) with the highest sum are 2595 the most preferred. 2596 items: 2597 description: The weights of all of the matched WeightedPodAffinityTerm 2598 fields are added per-node to find the most preferred 2599 node(s) 2600 properties: 2601 podAffinityTerm: 2602 description: Required. A pod affinity term, associated 2603 with the corresponding weight. 2604 properties: 2605 labelSelector: 2606 description: A label query over a set of resources, 2607 in this case pods. 2608 properties: 2609 matchExpressions: 2610 description: matchExpressions is a list 2611 of label selector requirements. The requirements 2612 are ANDed. 2613 items: 2614 description: A label selector requirement 2615 is a selector that contains values, 2616 a key, and an operator that relates 2617 the key and values. 2618 properties: 2619 key: 2620 description: key is the label key 2621 that the selector applies to. 2622 type: string 2623 operator: 2624 description: operator represents a 2625 key's relationship to a set of values. 2626 Valid operators are In, NotIn, Exists 2627 and DoesNotExist. 2628 type: string 2629 values: 2630 description: values is an array of 2631 string values. If the operator is 2632 In or NotIn, the values array must 2633 be non-empty. If the operator is 2634 Exists or DoesNotExist, the values 2635 array must be empty. This array 2636 is replaced during a strategic merge 2637 patch. 2638 items: 2639 type: string 2640 type: array 2641 required: 2642 - key 2643 - operator 2644 type: object 2645 type: array 2646 matchLabels: 2647 additionalProperties: 2648 type: string 2649 description: matchLabels is a map of {key,value} 2650 pairs. A single {key,value} in the matchLabels 2651 map is equivalent to an element of matchExpressions, 2652 whose key field is "key", the operator 2653 is "In", and the values array contains 2654 only "value". The requirements are ANDed. 2655 type: object 2656 type: object 2657 namespaces: 2658 description: namespaces specifies which namespaces 2659 the labelSelector applies to (matches against); 2660 null or empty list means "this pod's namespace" 2661 items: 2662 type: string 2663 type: array 2664 topologyKey: 2665 description: This pod should be co-located (affinity) 2666 or not co-located (anti-affinity) with the 2667 pods matching the labelSelector in the specified 2668 namespaces, where co-located is defined as 2669 running on a node whose value of the label 2670 with key topologyKey matches that of any node 2671 on which any of the selected pods is running. 2672 Empty topologyKey is not allowed. 2673 type: string 2674 required: 2675 - topologyKey 2676 type: object 2677 weight: 2678 description: weight associated with matching the 2679 corresponding podAffinityTerm, in the range 1-100. 2680 format: int32 2681 type: integer 2682 required: 2683 - podAffinityTerm 2684 - weight 2685 type: object 2686 type: array 2687 requiredDuringSchedulingIgnoredDuringExecution: 2688 description: If the affinity requirements specified by 2689 this field are not met at scheduling time, the pod will 2690 not be scheduled onto the node. If the affinity requirements 2691 specified by this field cease to be met at some point 2692 during pod execution (e.g. due to a pod label update), 2693 the system may or may not try to eventually evict the 2694 pod from its node. When there are multiple elements, 2695 the lists of nodes corresponding to each podAffinityTerm 2696 are intersected, i.e. all terms must be satisfied. 2697 items: 2698 description: Defines a set of pods (namely those matching 2699 the labelSelector relative to the given namespace(s)) 2700 that this pod should be co-located (affinity) or not 2701 co-located (anti-affinity) with, where co-located 2702 is defined as running on a node whose value of the 2703 label with key <topologyKey> matches that of any node 2704 on which a pod of the set of pods is running 2705 properties: 2706 labelSelector: 2707 description: A label query over a set of resources, 2708 in this case pods. 2709 properties: 2710 matchExpressions: 2711 description: matchExpressions is a list of label 2712 selector requirements. The requirements are 2713 ANDed. 2714 items: 2715 description: A label selector requirement 2716 is a selector that contains values, a key, 2717 and an operator that relates the key and 2718 values. 2719 properties: 2720 key: 2721 description: key is the label key that 2722 the selector applies to. 2723 type: string 2724 operator: 2725 description: operator represents a key's 2726 relationship to a set of values. Valid 2727 operators are In, NotIn, Exists and 2728 DoesNotExist. 2729 type: string 2730 values: 2731 description: values is an array of string 2732 values. If the operator is In or NotIn, 2733 the values array must be non-empty. 2734 If the operator is Exists or DoesNotExist, 2735 the values array must be empty. This 2736 array is replaced during a strategic 2737 merge patch. 2738 items: 2739 type: string 2740 type: array 2741 required: 2742 - key 2743 - operator 2744 type: object 2745 type: array 2746 matchLabels: 2747 additionalProperties: 2748 type: string 2749 description: matchLabels is a map of {key,value} 2750 pairs. A single {key,value} in the matchLabels 2751 map is equivalent to an element of matchExpressions, 2752 whose key field is "key", the operator is 2753 "In", and the values array contains only "value". 2754 The requirements are ANDed. 2755 type: object 2756 type: object 2757 namespaces: 2758 description: namespaces specifies which namespaces 2759 the labelSelector applies to (matches against); 2760 null or empty list means "this pod's namespace" 2761 items: 2762 type: string 2763 type: array 2764 topologyKey: 2765 description: This pod should be co-located (affinity) 2766 or not co-located (anti-affinity) with the pods 2767 matching the labelSelector in the specified namespaces, 2768 where co-located is defined as running on a node 2769 whose value of the label with key topologyKey 2770 matches that of any node on which any of the selected 2771 pods is running. Empty topologyKey is not allowed. 2772 type: string 2773 required: 2774 - topologyKey 2775 type: object 2776 type: array 2777 type: object 2778 auxResources: 2779 description: AuxResources are the compute resources required 2780 by the cstor-target pod side car containers. 2781 properties: 2782 limits: 2783 additionalProperties: 2784 anyOf: 2785 - type: integer 2786 - type: string 2787 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2788 x-kubernetes-int-or-string: true 2789 description: 'Limits describes the maximum amount of compute 2790 resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 2791 type: object 2792 requests: 2793 additionalProperties: 2794 anyOf: 2795 - type: integer 2796 - type: string 2797 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2798 x-kubernetes-int-or-string: true 2799 description: 'Requests describes the minimum amount of 2800 compute resources required. If Requests is omitted for 2801 a container, it defaults to Limits if that is explicitly 2802 specified, otherwise to an implementation-defined value. 2803 More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 2804 type: object 2805 type: object 2806 luWorkers: 2807 description: IOWorkers sets the number of threads that are 2808 working on above queue 2809 format: int64 2810 type: integer 2811 monitor: 2812 description: Monitor enables or disables the target exporter 2813 sidecar 2814 type: boolean 2815 nodeSelector: 2816 additionalProperties: 2817 type: string 2818 description: NodeSelector is the labels that will be used 2819 to select a node for target pod scheduling Required field 2820 type: object 2821 priorityClassName: 2822 description: PriorityClassName if specified applies to this 2823 target pod If left empty, no priority class is applied. 2824 type: string 2825 queueDepth: 2826 description: QueueDepth sets the queue size at iSCSI target 2827 which limits the ongoing IO count from client 2828 type: string 2829 replicationFactor: 2830 description: ReplicationFactor represents maximum number of 2831 replicas that are allowed to connect to the target 2832 format: int64 2833 type: integer 2834 resources: 2835 description: Resources are the compute resources required 2836 by the cstor-target container. 2837 properties: 2838 limits: 2839 additionalProperties: 2840 anyOf: 2841 - type: integer 2842 - type: string 2843 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2844 x-kubernetes-int-or-string: true 2845 description: 'Limits describes the maximum amount of compute 2846 resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 2847 type: object 2848 requests: 2849 additionalProperties: 2850 anyOf: 2851 - type: integer 2852 - type: string 2853 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2854 x-kubernetes-int-or-string: true 2855 description: 'Requests describes the minimum amount of 2856 compute resources required. If Requests is omitted for 2857 a container, it defaults to Limits if that is explicitly 2858 specified, otherwise to an implementation-defined value. 2859 More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 2860 type: object 2861 type: object 2862 tolerations: 2863 description: Tolerations, if specified, are the target pod's 2864 tolerations 2865 items: 2866 description: The pod this Toleration is attached to tolerates 2867 any taint that matches the triple <key,value,effect> using 2868 the matching operator <operator>. 2869 properties: 2870 effect: 2871 description: Effect indicates the taint effect to match. 2872 Empty means match all taint effects. When specified, 2873 allowed values are NoSchedule, PreferNoSchedule and 2874 NoExecute. 2875 type: string 2876 key: 2877 description: Key is the taint key that the toleration 2878 applies to. Empty means match all taint keys. If the 2879 key is empty, operator must be Exists; this combination 2880 means to match all values and all keys. 2881 type: string 2882 operator: 2883 description: Operator represents a key's relationship 2884 to the value. Valid operators are Exists and Equal. 2885 Defaults to Equal. Exists is equivalent to wildcard 2886 for value, so that a pod can tolerate all taints of 2887 a particular category. 2888 type: string 2889 tolerationSeconds: 2890 description: TolerationSeconds represents the period 2891 of time the toleration (which must be of effect NoExecute, 2892 otherwise this field is ignored) tolerates the taint. 2893 By default, it is not set, which means tolerate the 2894 taint forever (do not evict). Zero and negative values 2895 will be treated as 0 (evict immediately) by the system. 2896 format: int64 2897 type: integer 2898 value: 2899 description: Value is the taint value the toleration 2900 matches to. If the operator is Exists, the value should 2901 be empty, otherwise just a regular string. 2902 type: string 2903 type: object 2904 type: array 2905 type: object 2906 type: object 2907 provision: 2908 description: Provision represents the initial volume configuration 2909 for the underlying cstor volume based on the persistent volume request 2910 by user. Provision properties are immutable 2911 properties: 2912 capacity: 2913 additionalProperties: 2914 anyOf: 2915 - type: integer 2916 - type: string 2917 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2918 x-kubernetes-int-or-string: true 2919 description: Capacity represents initial capacity of volume replica 2920 required during volume clone operations to maintain some metadata 2921 info related to child resources like snapshot, cloned volumes. 2922 type: object 2923 replicaCount: 2924 description: ReplicaCount represents initial cstor volume replica 2925 count, its will not be updated later on based on scale up/down 2926 operations, only readonly operations and validations. 2927 type: integer 2928 required: 2929 - capacity 2930 - replicaCount 2931 type: object 2932 required: 2933 - capacity 2934 - policy 2935 - provision 2936 type: object 2937 status: 2938 description: Status represents the current information/status for the 2939 cstor volume config, populated by the controller. 2940 properties: 2941 capacity: 2942 additionalProperties: 2943 anyOf: 2944 - type: integer 2945 - type: string 2946 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 2947 x-kubernetes-int-or-string: true 2948 description: Capacity the actual resources of the underlying volume. 2949 type: object 2950 condition: 2951 items: 2952 description: CStorVolumeConfigCondition contains details about state 2953 of cstor volume 2954 properties: 2955 lastProbeTime: 2956 description: Last time we probed the condition. 2957 format: date-time 2958 type: string 2959 lastTransitionTime: 2960 description: Last time the condition transitioned from one status 2961 to another. 2962 format: date-time 2963 type: string 2964 message: 2965 description: Human-readable message indicating details about 2966 last transition. 2967 type: string 2968 reason: 2969 description: Reason is a brief CamelCase string that describes 2970 any failure 2971 type: string 2972 type: 2973 description: Current Condition of cstor volume config. If underlying 2974 persistent volume is being resized then the Condition will 2975 be set to 'ResizeStarted' etc 2976 type: string 2977 required: 2978 - message 2979 - reason 2980 - type 2981 type: object 2982 type: array 2983 phase: 2984 description: Phase represents the current phase of CStorVolumeConfig. 2985 type: string 2986 poolInfo: 2987 description: PoolInfo represents current pool names where volume replicas 2988 exists 2989 items: 2990 type: string 2991 type: array 2992 type: object 2993 versionDetails: 2994 description: VersionDetails provides the details for upgrade 2995 properties: 2996 autoUpgrade: 2997 description: If AutoUpgrade is set to true then the resource is upgraded 2998 automatically without any manual steps 2999 type: boolean 3000 desired: 3001 description: Desired is the version that we want to upgrade or the 3002 control plane version 3003 type: string 3004 status: 3005 description: Status gives the status of reconciliation triggered when 3006 the desired and current version are not same 3007 properties: 3008 current: 3009 description: Current is the version of resource 3010 type: string 3011 dependentsUpgraded: 3012 description: DependentsUpgraded gives the details whether all 3013 children of a resource are upgraded to desired version or not 3014 type: boolean 3015 lastUpdateTime: 3016 description: LastUpdateTime is the time the status was last updated 3017 format: date-time 3018 nullable: true 3019 type: string 3020 message: 3021 description: Message is a human readable message if some error 3022 occurs 3023 type: string 3024 reason: 3025 description: Reason is the actual reason for the error state 3026 type: string 3027 state: 3028 description: State is the state of reconciliation 3029 type: string 3030 type: object 3031 type: object 3032 required: 3033 - spec 3034 - status 3035 - versionDetails 3036 type: object 3037 served: true 3038 storage: true 3039 subresources: {} 3040 status: 3041 acceptedNames: 3042 kind: "" 3043 plural: "" 3044 conditions: [] 3045 storedVersions: [] 3046 --- 3047 ################################################################ 3048 #### ##### 3049 #### CStorVolumePolicies ##### 3050 #### ##### 3051 ################################################################ 3052 apiVersion: apiextensions.k8s.io/v1 3053 kind: CustomResourceDefinition 3054 metadata: 3055 annotations: 3056 controller-gen.kubebuilder.io/version: v0.4.0 3057 creationTimestamp: null 3058 name: cstorvolumepolicies.cstor.openebs.io 3059 spec: 3060 group: cstor.openebs.io 3061 names: 3062 kind: CStorVolumePolicy 3063 listKind: CStorVolumePolicyList 3064 plural: cstorvolumepolicies 3065 shortNames: 3066 - cvp 3067 singular: cstorvolumepolicy 3068 scope: Namespaced 3069 versions: 3070 - name: v1 3071 schema: 3072 openAPIV3Schema: 3073 description: CStorVolumePolicy describes a configuration required for cstor 3074 volume resources 3075 properties: 3076 apiVersion: 3077 description: 'APIVersion defines the versioned schema of this representation 3078 of an object. Servers should convert recognized schemas to the latest 3079 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 3080 type: string 3081 kind: 3082 description: 'Kind is a string value representing the REST resource this 3083 object represents. Servers may infer this from the endpoint the client 3084 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 3085 type: string 3086 metadata: 3087 type: object 3088 spec: 3089 description: Spec defines a configuration info of a cstor volume required 3090 to provisione cstor volume resources 3091 properties: 3092 provision: 3093 description: replicaAffinity is set to true then volume replica resources 3094 need to be distributed across the pool instances 3095 properties: 3096 blockSize: 3097 description: BlockSize is the logical block size in multiple of 3098 512 bytes BlockSize specifies the block size of the volume. 3099 The blocksize cannot be changed once the volume has been written, 3100 so it should be set at volume creation time. The default blocksize 3101 for volumes is 4 Kbytes. Any power of 2 from 512 bytes to 128 3102 Kbytes is valid. 3103 format: int32 3104 type: integer 3105 replicaAffinity: 3106 description: replicaAffinity is set to true then volume replica 3107 resources need to be distributed across the cstor pool instances 3108 based on the given topology 3109 type: boolean 3110 required: 3111 - replicaAffinity 3112 type: object 3113 replica: 3114 description: ReplicaSpec represents configuration related to replicas 3115 resources 3116 properties: 3117 compression: 3118 description: The zle compression algorithm compresses runs of 3119 zeros. 3120 type: string 3121 zvolWorkers: 3122 description: IOWorkers represents number of threads that executes 3123 client IOs 3124 type: string 3125 type: object 3126 replicaPoolInfo: 3127 description: 'ReplicaPoolInfo holds the pool information of volume 3128 replicas. Ex: If volume is provisioned on which CStor pool volume 3129 replicas exist' 3130 items: 3131 description: ReplicaPoolInfo represents the pool information of 3132 volume replica 3133 properties: 3134 poolName: 3135 description: PoolName represents the pool name where volume 3136 replica exists 3137 type: string 3138 required: 3139 - poolName 3140 type: object 3141 type: array 3142 target: 3143 description: TargetSpec represents configuration related to cstor 3144 target and its resources 3145 properties: 3146 affinity: 3147 description: PodAffinity if specified, are the target pod's affinities 3148 properties: 3149 preferredDuringSchedulingIgnoredDuringExecution: 3150 description: The scheduler will prefer to schedule pods to 3151 nodes that satisfy the affinity expressions specified by 3152 this field, but it may choose a node that violates one or 3153 more of the expressions. The node that is most preferred 3154 is the one with the greatest sum of weights, i.e. for each 3155 node that meets all of the scheduling requirements (resource 3156 request, requiredDuringScheduling affinity expressions, 3157 etc.), compute a sum by iterating through the elements of 3158 this field and adding "weight" to the sum if the node has 3159 pods which matches the corresponding podAffinityTerm; the 3160 node(s) with the highest sum are the most preferred. 3161 items: 3162 description: The weights of all of the matched WeightedPodAffinityTerm 3163 fields are added per-node to find the most preferred node(s) 3164 properties: 3165 podAffinityTerm: 3166 description: Required. A pod affinity term, associated 3167 with the corresponding weight. 3168 properties: 3169 labelSelector: 3170 description: A label query over a set of resources, 3171 in this case pods. 3172 properties: 3173 matchExpressions: 3174 description: matchExpressions is a list of label 3175 selector requirements. The requirements are 3176 ANDed. 3177 items: 3178 description: A label selector requirement 3179 is a selector that contains values, a key, 3180 and an operator that relates the key and 3181 values. 3182 properties: 3183 key: 3184 description: key is the label key that 3185 the selector applies to. 3186 type: string 3187 operator: 3188 description: operator represents a key's 3189 relationship to a set of values. Valid 3190 operators are In, NotIn, Exists and 3191 DoesNotExist. 3192 type: string 3193 values: 3194 description: values is an array of string 3195 values. If the operator is In or NotIn, 3196 the values array must be non-empty. 3197 If the operator is Exists or DoesNotExist, 3198 the values array must be empty. This 3199 array is replaced during a strategic 3200 merge patch. 3201 items: 3202 type: string 3203 type: array 3204 required: 3205 - key 3206 - operator 3207 type: object 3208 type: array 3209 matchLabels: 3210 additionalProperties: 3211 type: string 3212 description: matchLabels is a map of {key,value} 3213 pairs. A single {key,value} in the matchLabels 3214 map is equivalent to an element of matchExpressions, 3215 whose key field is "key", the operator is 3216 "In", and the values array contains only "value". 3217 The requirements are ANDed. 3218 type: object 3219 type: object 3220 namespaces: 3221 description: namespaces specifies which namespaces 3222 the labelSelector applies to (matches against); 3223 null or empty list means "this pod's namespace" 3224 items: 3225 type: string 3226 type: array 3227 topologyKey: 3228 description: This pod should be co-located (affinity) 3229 or not co-located (anti-affinity) with the pods 3230 matching the labelSelector in the specified namespaces, 3231 where co-located is defined as running on a node 3232 whose value of the label with key topologyKey 3233 matches that of any node on which any of the selected 3234 pods is running. Empty topologyKey is not allowed. 3235 type: string 3236 required: 3237 - topologyKey 3238 type: object 3239 weight: 3240 description: weight associated with matching the corresponding 3241 podAffinityTerm, in the range 1-100. 3242 format: int32 3243 type: integer 3244 required: 3245 - podAffinityTerm 3246 - weight 3247 type: object 3248 type: array 3249 requiredDuringSchedulingIgnoredDuringExecution: 3250 description: If the affinity requirements specified by this 3251 field are not met at scheduling time, the pod will not be 3252 scheduled onto the node. If the affinity requirements specified 3253 by this field cease to be met at some point during pod execution 3254 (e.g. due to a pod label update), the system may or may 3255 not try to eventually evict the pod from its node. When 3256 there are multiple elements, the lists of nodes corresponding 3257 to each podAffinityTerm are intersected, i.e. all terms 3258 must be satisfied. 3259 items: 3260 description: Defines a set of pods (namely those matching 3261 the labelSelector relative to the given namespace(s)) 3262 that this pod should be co-located (affinity) or not co-located 3263 (anti-affinity) with, where co-located is defined as running 3264 on a node whose value of the label with key <topologyKey> 3265 matches that of any node on which a pod of the set of 3266 pods is running 3267 properties: 3268 labelSelector: 3269 description: A label query over a set of resources, 3270 in this case pods. 3271 properties: 3272 matchExpressions: 3273 description: matchExpressions is a list of label 3274 selector requirements. The requirements are ANDed. 3275 items: 3276 description: A label selector requirement is a 3277 selector that contains values, a key, and an 3278 operator that relates the key and values. 3279 properties: 3280 key: 3281 description: key is the label key that the 3282 selector applies to. 3283 type: string 3284 operator: 3285 description: operator represents a key's relationship 3286 to a set of values. Valid operators are 3287 In, NotIn, Exists and DoesNotExist. 3288 type: string 3289 values: 3290 description: values is an array of string 3291 values. If the operator is In or NotIn, 3292 the values array must be non-empty. If the 3293 operator is Exists or DoesNotExist, the 3294 values array must be empty. This array is 3295 replaced during a strategic merge patch. 3296 items: 3297 type: string 3298 type: array 3299 required: 3300 - key 3301 - operator 3302 type: object 3303 type: array 3304 matchLabels: 3305 additionalProperties: 3306 type: string 3307 description: matchLabels is a map of {key,value} 3308 pairs. A single {key,value} in the matchLabels 3309 map is equivalent to an element of matchExpressions, 3310 whose key field is "key", the operator is "In", 3311 and the values array contains only "value". The 3312 requirements are ANDed. 3313 type: object 3314 type: object 3315 namespaces: 3316 description: namespaces specifies which namespaces the 3317 labelSelector applies to (matches against); null or 3318 empty list means "this pod's namespace" 3319 items: 3320 type: string 3321 type: array 3322 topologyKey: 3323 description: This pod should be co-located (affinity) 3324 or not co-located (anti-affinity) with the pods matching 3325 the labelSelector in the specified namespaces, where 3326 co-located is defined as running on a node whose value 3327 of the label with key topologyKey matches that of 3328 any node on which any of the selected pods is running. 3329 Empty topologyKey is not allowed. 3330 type: string 3331 required: 3332 - topologyKey 3333 type: object 3334 type: array 3335 type: object 3336 auxResources: 3337 description: AuxResources are the compute resources required by 3338 the cstor-target pod side car containers. 3339 properties: 3340 limits: 3341 additionalProperties: 3342 anyOf: 3343 - type: integer 3344 - type: string 3345 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 3346 x-kubernetes-int-or-string: true 3347 description: 'Limits describes the maximum amount of compute 3348 resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 3349 type: object 3350 requests: 3351 additionalProperties: 3352 anyOf: 3353 - type: integer 3354 - type: string 3355 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 3356 x-kubernetes-int-or-string: true 3357 description: 'Requests describes the minimum amount of compute 3358 resources required. If Requests is omitted for a container, 3359 it defaults to Limits if that is explicitly specified, otherwise 3360 to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 3361 type: object 3362 type: object 3363 luWorkers: 3364 description: IOWorkers sets the number of threads that are working 3365 on above queue 3366 format: int64 3367 type: integer 3368 monitor: 3369 description: Monitor enables or disables the target exporter sidecar 3370 type: boolean 3371 nodeSelector: 3372 additionalProperties: 3373 type: string 3374 description: NodeSelector is the labels that will be used to select 3375 a node for target pod scheduling Required field 3376 type: object 3377 priorityClassName: 3378 description: PriorityClassName if specified applies to this target 3379 pod If left empty, no priority class is applied. 3380 type: string 3381 queueDepth: 3382 description: QueueDepth sets the queue size at iSCSI target which 3383 limits the ongoing IO count from client 3384 type: string 3385 replicationFactor: 3386 description: ReplicationFactor represents maximum number of replicas 3387 that are allowed to connect to the target 3388 format: int64 3389 type: integer 3390 resources: 3391 description: Resources are the compute resources required by the 3392 cstor-target container. 3393 properties: 3394 limits: 3395 additionalProperties: 3396 anyOf: 3397 - type: integer 3398 - type: string 3399 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 3400 x-kubernetes-int-or-string: true 3401 description: 'Limits describes the maximum amount of compute 3402 resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 3403 type: object 3404 requests: 3405 additionalProperties: 3406 anyOf: 3407 - type: integer 3408 - type: string 3409 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 3410 x-kubernetes-int-or-string: true 3411 description: 'Requests describes the minimum amount of compute 3412 resources required. If Requests is omitted for a container, 3413 it defaults to Limits if that is explicitly specified, otherwise 3414 to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 3415 type: object 3416 type: object 3417 tolerations: 3418 description: Tolerations, if specified, are the target pod's tolerations 3419 items: 3420 description: The pod this Toleration is attached to tolerates 3421 any taint that matches the triple <key,value,effect> using 3422 the matching operator <operator>. 3423 properties: 3424 effect: 3425 description: Effect indicates the taint effect to match. 3426 Empty means match all taint effects. When specified, allowed 3427 values are NoSchedule, PreferNoSchedule and NoExecute. 3428 type: string 3429 key: 3430 description: Key is the taint key that the toleration applies 3431 to. Empty means match all taint keys. If the key is empty, 3432 operator must be Exists; this combination means to match 3433 all values and all keys. 3434 type: string 3435 operator: 3436 description: Operator represents a key's relationship to 3437 the value. Valid operators are Exists and Equal. Defaults 3438 to Equal. Exists is equivalent to wildcard for value, 3439 so that a pod can tolerate all taints of a particular 3440 category. 3441 type: string 3442 tolerationSeconds: 3443 description: TolerationSeconds represents the period of 3444 time the toleration (which must be of effect NoExecute, 3445 otherwise this field is ignored) tolerates the taint. 3446 By default, it is not set, which means tolerate the taint 3447 forever (do not evict). Zero and negative values will 3448 be treated as 0 (evict immediately) by the system. 3449 format: int64 3450 type: integer 3451 value: 3452 description: Value is the taint value the toleration matches 3453 to. If the operator is Exists, the value should be empty, 3454 otherwise just a regular string. 3455 type: string 3456 type: object 3457 type: array 3458 type: object 3459 type: object 3460 status: 3461 description: CStorVolumePolicyStatus is for handling status of CstorVolumePolicy 3462 properties: 3463 phase: 3464 type: string 3465 type: object 3466 required: 3467 - spec 3468 type: object 3469 served: true 3470 storage: true 3471 status: 3472 acceptedNames: 3473 kind: "" 3474 plural: "" 3475 conditions: [] 3476 storedVersions: [] 3477 --- 3478 ############################################################################################# 3479 ### ###### 3480 ### CStorVolumeReplicas CRD ###### 3481 ### ###### 3482 ############################################################################################# 3483 apiVersion: apiextensions.k8s.io/v1 3484 kind: CustomResourceDefinition 3485 metadata: 3486 annotations: 3487 controller-gen.kubebuilder.io/version: v0.4.0 3488 creationTimestamp: null 3489 name: cstorvolumereplicas.cstor.openebs.io 3490 spec: 3491 group: cstor.openebs.io 3492 names: 3493 kind: CStorVolumeReplica 3494 listKind: CStorVolumeReplicaList 3495 plural: cstorvolumereplicas 3496 shortNames: 3497 - cvr 3498 singular: cstorvolumereplica 3499 scope: Namespaced 3500 versions: 3501 - additionalPrinterColumns: 3502 - description: The amount of disk space consumed by a dataset and all its descendents 3503 jsonPath: .status.capacity.total 3504 name: Allocated 3505 type: string 3506 - description: The amount of space that is logically consumed by this dataset 3507 jsonPath: .status.capacity.used 3508 name: Used 3509 type: string 3510 - description: Identifies the current state of the replicas 3511 jsonPath: .status.phase 3512 name: Status 3513 type: string 3514 - description: Age of CStorVolumeReplica 3515 jsonPath: .metadata.creationTimestamp 3516 name: Age 3517 type: date 3518 name: v1 3519 schema: 3520 openAPIV3Schema: 3521 description: CStorVolumeReplica describes a cstor volume resource created 3522 as custom resource 3523 properties: 3524 apiVersion: 3525 description: 'APIVersion defines the versioned schema of this representation 3526 of an object. Servers should convert recognized schemas to the latest 3527 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 3528 type: string 3529 kind: 3530 description: 'Kind is a string value representing the REST resource this 3531 object represents. Servers may infer this from the endpoint the client 3532 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 3533 type: string 3534 metadata: 3535 type: object 3536 spec: 3537 description: CStorVolumeReplicaSpec is the spec for a CStorVolumeReplica 3538 resource 3539 properties: 3540 blockSize: 3541 description: BlockSize is the logical block size in multiple of 512 3542 bytes BlockSize specifies the block size of the volume. The blocksize 3543 cannot be changed once the volume has been written, so it should 3544 be set at volume creation time. The default blocksize for volumes 3545 is 4 Kbytes. Any power of 2 from 512 bytes to 128 Kbytes is valid. 3546 format: int32 3547 type: integer 3548 capacity: 3549 description: Represents the actual capacity of the underlying volume 3550 type: string 3551 compression: 3552 description: 'Controls the compression algorithm used for this volumes 3553 examples: on|off|gzip|gzip-N|lz4|lzjb|zle' 3554 type: string 3555 replicaid: 3556 description: ReplicaID is unique number to identify the replica 3557 type: string 3558 targetIP: 3559 description: TargetIP represents iscsi target IP through which replica 3560 cummunicates IO workloads and other volume operations like snapshot 3561 and resize requests 3562 type: string 3563 zvolWorkers: 3564 description: ZvolWorkers represents number of threads that executes 3565 client IOs 3566 type: string 3567 type: object 3568 status: 3569 description: CStorVolumeReplicaStatus is for handling status of cvr. 3570 properties: 3571 capacity: 3572 description: CStorVolumeCapacityDetails represents capacity info of 3573 replica 3574 properties: 3575 total: 3576 description: The amount of space consumed by this volume replica 3577 and all its descendents 3578 type: string 3579 used: 3580 description: The amount of space that is "logically" accessible 3581 by this dataset. The logical space ignores the effect of the 3582 compression and copies properties, giving a quantity closer 3583 to the amount of data that applications see. However, it does 3584 include space consumed by metadata 3585 type: string 3586 required: 3587 - total 3588 - used 3589 type: object 3590 lastTransitionTime: 3591 description: LastTransitionTime refers to the time when the phase 3592 changes 3593 format: date-time 3594 nullable: true 3595 type: string 3596 lastUpdateTime: 3597 description: The last updated time 3598 format: date-time 3599 nullable: true 3600 type: string 3601 message: 3602 description: A human readable message indicating details about the 3603 transition. 3604 type: string 3605 pendingSnapshots: 3606 additionalProperties: 3607 description: CStorSnapshotInfo represents the snapshot information 3608 related to particular snapshot 3609 properties: 3610 logicalReferenced: 3611 description: LogicalReferenced describes the amount of space 3612 that is "logically" accessible by this snapshot. This logical 3613 space ignores the effect of the compression and copies properties, 3614 giving a quantity closer to the amount of data that application 3615 see. It also includes space consumed by metadata. 3616 format: int64 3617 type: integer 3618 required: 3619 - logicalReferenced 3620 type: object 3621 description: PendingSnapshots contains list of pending snapshots that 3622 are not yet available on this replica 3623 type: object 3624 phase: 3625 description: CStorVolumeReplicaPhase is to holds different phases 3626 of replica 3627 type: string 3628 snapshots: 3629 additionalProperties: 3630 description: CStorSnapshotInfo represents the snapshot information 3631 related to particular snapshot 3632 properties: 3633 logicalReferenced: 3634 description: LogicalReferenced describes the amount of space 3635 that is "logically" accessible by this snapshot. This logical 3636 space ignores the effect of the compression and copies properties, 3637 giving a quantity closer to the amount of data that application 3638 see. It also includes space consumed by metadata. 3639 format: int64 3640 type: integer 3641 required: 3642 - logicalReferenced 3643 type: object 3644 description: Snapshots contains list of snapshots, and their properties, 3645 created on CVR 3646 type: object 3647 type: object 3648 versionDetails: 3649 description: VersionDetails provides the details for upgrade 3650 properties: 3651 autoUpgrade: 3652 description: If AutoUpgrade is set to true then the resource is upgraded 3653 automatically without any manual steps 3654 type: boolean 3655 desired: 3656 description: Desired is the version that we want to upgrade or the 3657 control plane version 3658 type: string 3659 status: 3660 description: Status gives the status of reconciliation triggered when 3661 the desired and current version are not same 3662 properties: 3663 current: 3664 description: Current is the version of resource 3665 type: string 3666 dependentsUpgraded: 3667 description: DependentsUpgraded gives the details whether all 3668 children of a resource are upgraded to desired version or not 3669 type: boolean 3670 lastUpdateTime: 3671 description: LastUpdateTime is the time the status was last updated 3672 format: date-time 3673 nullable: true 3674 type: string 3675 message: 3676 description: Message is a human readable message if some error 3677 occurs 3678 type: string 3679 reason: 3680 description: Reason is the actual reason for the error state 3681 type: string 3682 state: 3683 description: State is the state of reconciliation 3684 type: string 3685 type: object 3686 type: object 3687 required: 3688 - spec 3689 type: object 3690 served: true 3691 storage: true 3692 subresources: {} 3693 status: 3694 acceptedNames: 3695 kind: "" 3696 plural: "" 3697 conditions: [] 3698 storedVersions: [] 3699 --- 3700 ############################################################################### 3701 #### #### 3702 #### CStorVolume CRD #### 3703 #### #### 3704 ############################################################################### 3705 apiVersion: apiextensions.k8s.io/v1 3706 kind: CustomResourceDefinition 3707 metadata: 3708 annotations: 3709 controller-gen.kubebuilder.io/version: v0.4.0 3710 creationTimestamp: null 3711 name: cstorvolumes.cstor.openebs.io 3712 spec: 3713 group: cstor.openebs.io 3714 names: 3715 kind: CStorVolume 3716 listKind: CStorVolumeList 3717 plural: cstorvolumes 3718 shortNames: 3719 - cv 3720 singular: cstorvolume 3721 scope: Namespaced 3722 versions: 3723 - additionalPrinterColumns: 3724 - description: Current volume capacity 3725 jsonPath: .status.capacity 3726 name: Capacity 3727 type: string 3728 - description: Identifies the current health of the volume 3729 jsonPath: .status.phase 3730 name: Status 3731 type: string 3732 - description: Age of CStorVolume 3733 jsonPath: .metadata.creationTimestamp 3734 name: Age 3735 type: date 3736 name: v1 3737 schema: 3738 openAPIV3Schema: 3739 description: CStorVolume describes a cstor volume resource created as custom 3740 resource 3741 properties: 3742 apiVersion: 3743 description: 'APIVersion defines the versioned schema of this representation 3744 of an object. Servers should convert recognized schemas to the latest 3745 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 3746 type: string 3747 kind: 3748 description: 'Kind is a string value representing the REST resource this 3749 object represents. Servers may infer this from the endpoint the client 3750 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 3751 type: string 3752 metadata: 3753 type: object 3754 spec: 3755 description: CStorVolumeSpec is the spec for a CStorVolume resource 3756 properties: 3757 capacity: 3758 anyOf: 3759 - type: integer 3760 - type: string 3761 description: Capacity represents the desired size of the underlying 3762 volume. 3763 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 3764 x-kubernetes-int-or-string: true 3765 consistencyFactor: 3766 description: ConsistencyFactor is minimum number of volume replicas 3767 i.e. `RF/2 + 1` has to be connected to the target for write operations. 3768 Basically more then 50% of replica has to be connected to target. 3769 type: integer 3770 desiredReplicationFactor: 3771 description: DesiredReplicationFactor represents maximum number of 3772 replicas that are allowed to connect to the target. Required for 3773 scale operations 3774 type: integer 3775 iqn: 3776 description: Target iSCSI Qualified Name.combination of nodeBase 3777 type: string 3778 replicaDetails: 3779 description: ReplicaDetails refers to the trusty replica information 3780 properties: 3781 knownReplicas: 3782 additionalProperties: 3783 type: string 3784 description: KnownReplicas represents the replicas that target 3785 can trust to read data 3786 type: object 3787 type: object 3788 replicationFactor: 3789 description: ReplicationFactor represents number of volume replica 3790 created during volume provisioning connect to the target 3791 type: integer 3792 targetIP: 3793 description: TargetIP IP of the iSCSI target service 3794 type: string 3795 targetPort: 3796 description: iSCSI Target Port typically TCP ports 3260 3797 type: string 3798 targetPortal: 3799 description: iSCSI Target Portal. The Portal is combination of IP:port 3800 (typically TCP ports 3260) 3801 type: string 3802 type: object 3803 status: 3804 description: CStorVolumeStatus is for handling status of cvr. 3805 properties: 3806 capacity: 3807 anyOf: 3808 - type: integer 3809 - type: string 3810 description: Represents the actual capacity of the underlying volume. 3811 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 3812 x-kubernetes-int-or-string: true 3813 conditions: 3814 description: Current Condition of cstorvolume. If underlying persistent 3815 volume is being resized then the Condition will be set to 'ResizePending'. 3816 items: 3817 description: CStorVolumeCondition contains details about state of 3818 cstorvolume 3819 properties: 3820 lastProbeTime: 3821 description: Last time we probed the condition. 3822 format: date-time 3823 type: string 3824 lastTransitionTime: 3825 description: Last time the condition transitioned from one status 3826 to another. 3827 format: date-time 3828 type: string 3829 message: 3830 description: Human-readable message indicating details about 3831 last transition. 3832 type: string 3833 reason: 3834 description: Unique, this should be a short, machine understandable 3835 string that gives the reason for condition's last transition. 3836 If it reports "ResizePending" that means the underlying cstorvolume 3837 is being resized. 3838 type: string 3839 status: 3840 description: ConditionStatus states in which state condition 3841 is present 3842 type: string 3843 type: 3844 description: CStorVolumeConditionType is a valid value of CStorVolumeCondition.Type 3845 type: string 3846 required: 3847 - status 3848 - type 3849 type: object 3850 type: array 3851 lastTransitionTime: 3852 description: LastTransitionTime refers to the time when the phase 3853 changes 3854 format: date-time 3855 nullable: true 3856 type: string 3857 lastUpdateTime: 3858 description: LastUpdateTime refers to the time when last status updated 3859 due to any operations 3860 format: date-time 3861 nullable: true 3862 type: string 3863 message: 3864 description: A human-readable message indicating details about why 3865 the volume is in this state. 3866 type: string 3867 phase: 3868 description: CStorVolumePhase is to hold result of action. 3869 type: string 3870 replicaDetails: 3871 description: ReplicaDetails refers to the trusty replica information 3872 properties: 3873 knownReplicas: 3874 additionalProperties: 3875 type: string 3876 description: KnownReplicas represents the replicas that target 3877 can trust to read data 3878 type: object 3879 type: object 3880 replicaStatuses: 3881 items: 3882 description: ReplicaStatus stores the status of replicas 3883 properties: 3884 checkpointedIOSeq: 3885 description: Represents IO number of replica persisted on the 3886 disk 3887 type: string 3888 inflightRead: 3889 description: Ongoing reads I/O from target to replica 3890 type: string 3891 inflightSync: 3892 description: Ongoing sync I/O from target to replica 3893 type: string 3894 inflightWrite: 3895 description: ongoing writes I/O from target to replica 3896 type: string 3897 mode: 3898 description: Mode represents replica status i.e. Healthy, Degraded 3899 type: string 3900 quorum: 3901 description: 'Quorum indicates wheather data wrtitten to the 3902 replica is lost or exists. "0" means: data has been lost( 3903 might be ephimeral case) and will recostruct data from other 3904 Healthy replicas in a write-only mode 1 means: written data 3905 is exists on replica' 3906 type: string 3907 replicaId: 3908 description: ID is replica unique identifier 3909 type: string 3910 upTime: 3911 description: time since the replica connected to target 3912 type: integer 3913 required: 3914 - checkpointedIOSeq 3915 - inflightRead 3916 - inflightSync 3917 - inflightWrite 3918 - mode 3919 - quorum 3920 - replicaId 3921 - upTime 3922 type: object 3923 type: array 3924 type: object 3925 versionDetails: 3926 description: VersionDetails provides the details for upgrade 3927 properties: 3928 autoUpgrade: 3929 description: If AutoUpgrade is set to true then the resource is upgraded 3930 automatically without any manual steps 3931 type: boolean 3932 desired: 3933 description: Desired is the version that we want to upgrade or the 3934 control plane version 3935 type: string 3936 status: 3937 description: Status gives the status of reconciliation triggered when 3938 the desired and current version are not same 3939 properties: 3940 current: 3941 description: Current is the version of resource 3942 type: string 3943 dependentsUpgraded: 3944 description: DependentsUpgraded gives the details whether all 3945 children of a resource are upgraded to desired version or not 3946 type: boolean 3947 lastUpdateTime: 3948 description: LastUpdateTime is the time the status was last updated 3949 format: date-time 3950 nullable: true 3951 type: string 3952 message: 3953 description: Message is a human readable message if some error 3954 occurs 3955 type: string 3956 reason: 3957 description: Reason is the actual reason for the error state 3958 type: string 3959 state: 3960 description: State is the state of reconciliation 3961 type: string 3962 type: object 3963 type: object 3964 required: 3965 - spec 3966 type: object 3967 served: true 3968 storage: true 3969 subresources: {} 3970 status: 3971 acceptedNames: 3972 kind: "" 3973 plural: "" 3974 conditions: [] 3975 storedVersions: [] 3976 --- 3977 ############################################################ 3978 #### #### 3979 #### CStorBackup CRD #### 3980 #### #### 3981 ############################################################ 3982 apiVersion: apiextensions.k8s.io/v1 3983 kind: CustomResourceDefinition 3984 metadata: 3985 annotations: 3986 controller-gen.kubebuilder.io/version: v0.4.0 3987 creationTimestamp: null 3988 name: cstorbackups.cstor.openebs.io 3989 spec: 3990 group: cstor.openebs.io 3991 names: 3992 kind: CStorBackup 3993 listKind: CStorBackupList 3994 plural: cstorbackups 3995 shortNames: 3996 - cbackup 3997 singular: cstorbackup 3998 scope: Namespaced 3999 versions: 4000 - additionalPrinterColumns: 4001 - description: Name of the volume for which this backup is destined 4002 jsonPath: .spec.volumeName 4003 name: Volume 4004 type: string 4005 - description: Name of the backup or scheduled backup 4006 jsonPath: .spec.backupName 4007 name: Backup/Schedule 4008 type: string 4009 - description: Identifies the phase of the backup 4010 jsonPath: .status 4011 name: Status 4012 type: string 4013 name: v1 4014 schema: 4015 openAPIV3Schema: 4016 description: CStorBackup describes a cstor backup resource created as a custom 4017 resource 4018 properties: 4019 apiVersion: 4020 description: 'APIVersion defines the versioned schema of this representation 4021 of an object. Servers should convert recognized schemas to the latest 4022 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 4023 type: string 4024 kind: 4025 description: 'Kind is a string value representing the REST resource this 4026 object represents. Servers may infer this from the endpoint the client 4027 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 4028 type: string 4029 metadata: 4030 type: object 4031 spec: 4032 description: CStorBackupSpec is the spec for a CStorBackup resource 4033 properties: 4034 backupDest: 4035 description: BackupDest is the remote address for backup transfer 4036 type: string 4037 backupName: 4038 description: BackupName is the name of the backup or scheduled backup 4039 type: string 4040 localSnap: 4041 description: LocalSnap is the flag to enable local snapshot only 4042 type: boolean 4043 prevSnapName: 4044 description: PrevSnapName is the last completed-backup's snapshot 4045 name 4046 type: string 4047 snapName: 4048 description: SnapName is the name of the current backup snapshot 4049 type: string 4050 volumeName: 4051 description: VolumeName is the name of the volume for which this backup 4052 is destined 4053 type: string 4054 required: 4055 - backupName 4056 - snapName 4057 - volumeName 4058 type: object 4059 status: 4060 description: CStorBackupStatus is a string type that represents the status 4061 of the backup 4062 type: string 4063 required: 4064 - spec 4065 type: object 4066 served: true 4067 storage: true 4068 subresources: {} 4069 status: 4070 acceptedNames: 4071 kind: "" 4072 plural: "" 4073 conditions: [] 4074 storedVersions: [] 4075 --- 4076 ############################################################ 4077 #### #### 4078 #### CStorCompletedBackup CRD #### 4079 #### #### 4080 ############################################################ 4081 apiVersion: apiextensions.k8s.io/v1 4082 kind: CustomResourceDefinition 4083 metadata: 4084 annotations: 4085 controller-gen.kubebuilder.io/version: v0.4.0 4086 creationTimestamp: null 4087 name: cstorcompletedbackups.cstor.openebs.io 4088 spec: 4089 group: cstor.openebs.io 4090 names: 4091 kind: CStorCompletedBackup 4092 listKind: CStorCompletedBackupList 4093 plural: cstorcompletedbackups 4094 shortNames: 4095 - ccompletedbackup 4096 singular: cstorcompletedbackup 4097 scope: Namespaced 4098 versions: 4099 - additionalPrinterColumns: 4100 - description: Volume name on which backup is performed 4101 jsonPath: .spec.volumeName 4102 name: Volume 4103 type: string 4104 - description: Name of the backup or scheduled backup 4105 jsonPath: .spec.backupName 4106 name: Backup/Schedule 4107 type: string 4108 - description: Last successfully backup snapshot 4109 jsonPath: .spec.lastSnapName 4110 name: LastSnap 4111 type: string 4112 name: v1 4113 schema: 4114 openAPIV3Schema: 4115 description: CStorCompletedBackup describes a cstor completed-backup resource 4116 created as custom resource 4117 properties: 4118 apiVersion: 4119 description: 'APIVersion defines the versioned schema of this representation 4120 of an object. Servers should convert recognized schemas to the latest 4121 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 4122 type: string 4123 kind: 4124 description: 'Kind is a string value representing the REST resource this 4125 object represents. Servers may infer this from the endpoint the client 4126 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 4127 type: string 4128 metadata: 4129 type: object 4130 spec: 4131 description: CStorCompletedBackupSpec is the spec for a CStorBackup resource 4132 properties: 4133 backupName: 4134 description: BackupName is the name of backup or scheduled backup 4135 type: string 4136 lastSnapName: 4137 description: LastSnapName is the name of last completed-backup's snapshot 4138 name 4139 type: string 4140 secondLastSnapName: 4141 description: SecondLastSnapName is the name of second last 'successfully' 4142 completed-backup's snapshot 4143 type: string 4144 volumeName: 4145 description: VolumeName is the name of volume for which this backup 4146 is destined 4147 type: string 4148 type: object 4149 required: 4150 - spec 4151 type: object 4152 served: true 4153 storage: true 4154 subresources: {} 4155 status: 4156 acceptedNames: 4157 kind: "" 4158 plural: "" 4159 conditions: [] 4160 storedVersions: [] 4161 --- 4162 ############################################################ 4163 #### #### 4164 #### CStorRestore CRD #### 4165 #### #### 4166 ############################################################ 4167 apiVersion: apiextensions.k8s.io/v1 4168 kind: CustomResourceDefinition 4169 metadata: 4170 annotations: 4171 controller-gen.kubebuilder.io/version: v0.4.0 4172 creationTimestamp: null 4173 name: cstorrestores.cstor.openebs.io 4174 spec: 4175 group: cstor.openebs.io 4176 names: 4177 kind: CStorRestore 4178 listKind: CStorRestoreList 4179 plural: cstorrestores 4180 shortNames: 4181 - crestore 4182 singular: cstorrestore 4183 scope: Namespaced 4184 versions: 4185 - additionalPrinterColumns: 4186 - description: Name of the snapshot which is restored 4187 jsonPath: .spec.restoreName 4188 name: Backup 4189 type: string 4190 - description: Volume on which restore is performed 4191 jsonPath: .spec.volumeName 4192 name: Volume 4193 type: string 4194 - description: Identifies the state of the restore 4195 jsonPath: .status 4196 name: Status 4197 type: string 4198 name: v1 4199 schema: 4200 openAPIV3Schema: 4201 description: CStorRestore describes a cstor restore resource created as a 4202 custom resource 4203 properties: 4204 apiVersion: 4205 description: 'APIVersion defines the versioned schema of this representation 4206 of an object. Servers should convert recognized schemas to the latest 4207 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 4208 type: string 4209 kind: 4210 description: 'Kind is a string value representing the REST resource this 4211 object represents. Servers may infer this from the endpoint the client 4212 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 4213 type: string 4214 metadata: 4215 type: object 4216 spec: 4217 description: CStorRestoreSpec is the spec for a CStorRestore resource 4218 properties: 4219 localRestore: 4220 description: Local defines whether restore is from local/remote 4221 type: boolean 4222 maxretrycount: 4223 description: MaxRestoreRetryCount is the maximum number of attempt, 4224 will be performed to restore 4225 type: integer 4226 restoreName: 4227 description: RestoreName holds restore name 4228 type: string 4229 restoreSrc: 4230 description: RestoreSrc can be ip:port in case of restore from remote 4231 or volumeName in case of local restore 4232 type: string 4233 retrycount: 4234 description: RetryCount represents the number of restore attempts 4235 performed for the restore 4236 type: integer 4237 size: 4238 anyOf: 4239 - type: integer 4240 - type: string 4241 description: Size represents the size of a snapshot to restore 4242 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 4243 x-kubernetes-int-or-string: true 4244 storageClass: 4245 description: StorageClass represents name of StorageClass of restore 4246 volume 4247 type: string 4248 volumeName: 4249 description: VolumeName is used to restore the data to corresponding 4250 volume 4251 type: string 4252 required: 4253 - restoreName 4254 - restoreSrc 4255 - volumeName 4256 type: object 4257 status: 4258 description: CStorRestoreStatus is a string type that represents the status 4259 of the restore 4260 type: string 4261 required: 4262 - spec 4263 type: object 4264 served: true 4265 storage: true 4266 subresources: {} 4267 status: 4268 acceptedNames: 4269 kind: "" 4270 plural: "" 4271 conditions: [] 4272 storedVersions: [] 4273 --- 4274 apiVersion: apiextensions.k8s.io/v1 4275 kind: CustomResourceDefinition 4276 metadata: 4277 annotations: 4278 controller-gen.kubebuilder.io/version: v0.4.0 4279 creationTimestamp: null 4280 name: upgradetasks.openebs.io 4281 spec: 4282 group: openebs.io 4283 names: 4284 kind: UpgradeTask 4285 listKind: UpgradeTaskList 4286 plural: upgradetasks 4287 singular: upgradetask 4288 scope: Namespaced 4289 versions: 4290 - name: v1alpha1 4291 schema: 4292 openAPIV3Schema: 4293 description: UpgradeTask represents an upgrade task 4294 properties: 4295 apiVersion: 4296 description: 'APIVersion defines the versioned schema of this representation 4297 of an object. Servers should convert recognized schemas to the latest 4298 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 4299 type: string 4300 kind: 4301 description: 'Kind is a string value representing the REST resource this 4302 object represents. Servers may infer this from the endpoint the client 4303 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 4304 type: string 4305 metadata: 4306 type: object 4307 spec: 4308 description: Spec i.e. specifications of the UpgradeTask 4309 properties: 4310 cstorPool: 4311 description: CStorPool contains the details of the cstor pool to be 4312 upgraded 4313 properties: 4314 options: 4315 description: Options can be used to change the default behaviour 4316 of upgrade 4317 properties: 4318 ignoreStepsOnError: 4319 description: IgnoreStepsOnError allows to ignore steps which 4320 failed 4321 items: 4322 type: string 4323 type: array 4324 type: object 4325 poolName: 4326 description: PoolName contains the name of the cstor pool to be 4327 upgraded 4328 type: string 4329 type: object 4330 cstorPoolCluster: 4331 description: CStorPoolCluster contains the details of the storage 4332 pool claim to be upgraded 4333 properties: 4334 cspcName: 4335 description: CSPCName contains the name of the storage pool claim 4336 to be upgraded 4337 type: string 4338 options: 4339 description: Options can be used to change the default behaviour 4340 of upgrade 4341 properties: 4342 ignoreStepsOnError: 4343 description: IgnoreStepsOnError allows to ignore steps which 4344 failed 4345 items: 4346 type: string 4347 type: array 4348 type: object 4349 type: object 4350 cstorPoolInstance: 4351 description: CStorPoolInstance contains the details of the cstor pool 4352 to be upgraded 4353 properties: 4354 cspiName: 4355 description: CSPCName contains the name of the storage pool claim 4356 to be upgraded 4357 type: string 4358 options: 4359 description: Options can be used to change the default behaviour 4360 of upgrade 4361 properties: 4362 ignoreStepsOnError: 4363 description: IgnoreStepsOnError allows to ignore steps which 4364 failed 4365 items: 4366 type: string 4367 type: array 4368 type: object 4369 type: object 4370 cstorVolume: 4371 description: CStorVolume contains the details of the cstor volume 4372 to be upgraded 4373 properties: 4374 options: 4375 description: Options can be used to change the default behaviour 4376 of upgrade 4377 properties: 4378 ignoreStepsOnError: 4379 description: IgnoreStepsOnError allows to ignore steps which 4380 failed 4381 items: 4382 type: string 4383 type: array 4384 type: object 4385 pvName: 4386 description: PVName contains the name of the pv associated with 4387 the cstor volume 4388 type: string 4389 type: object 4390 fromVersion: 4391 description: FromVersion is the current version of the resource. 4392 type: string 4393 imagePrefix: 4394 description: ImagePrefix contains the url prefix of the image url. 4395 This field is optional. If not present upgrade takes the previously 4396 present ImagePrefix. 4397 type: string 4398 imageTag: 4399 description: ImageTag contains the customized tag for ToVersion if 4400 any. This field is optional. If not present upgrade takes the ToVersion 4401 as the ImageTag 4402 type: string 4403 jivaVolume: 4404 description: JivaVolume contains the details of the jiva volume to 4405 be upgraded 4406 properties: 4407 options: 4408 description: Options can be used to change the default behaviour 4409 of upgrade 4410 properties: 4411 ignoreStepsOnError: 4412 description: IgnoreStepsOnError allows to ignore steps which 4413 failed 4414 items: 4415 type: string 4416 type: array 4417 type: object 4418 pvName: 4419 description: PVName contains the name of the pv associated with 4420 the jiva volume 4421 type: string 4422 type: object 4423 options: 4424 description: Options contains the optional flags that can be passed 4425 during upgrade. 4426 properties: 4427 timeout: 4428 description: Timeout is maximum seconds to wait at any given step 4429 in the upgrade 4430 type: integer 4431 type: object 4432 storagePoolClaim: 4433 description: StoragePoolClaim contains the details of the storage 4434 pool claim to be upgraded 4435 properties: 4436 options: 4437 description: Options can be used to change the default behaviour 4438 of upgrade 4439 properties: 4440 ignoreStepsOnError: 4441 description: IgnoreStepsOnError allows to ignore steps which 4442 failed 4443 items: 4444 type: string 4445 type: array 4446 type: object 4447 spcName: 4448 description: SPCName contains the name of the storage pool claim 4449 to be upgraded 4450 type: string 4451 type: object 4452 toVersion: 4453 description: ToVersion is the upgraded version of the resource. It 4454 should be same as the version of control plane components version. 4455 type: string 4456 required: 4457 - fromVersion 4458 - toVersion 4459 type: object 4460 status: 4461 description: Status of UpgradeTask 4462 properties: 4463 completedTime: 4464 description: CompletedTime of Upgrade 4465 format: date-time 4466 nullable: true 4467 type: string 4468 phase: 4469 description: Phase indicates if a upgradeTask is started, success 4470 or errored 4471 type: string 4472 retries: 4473 description: Retries is the number of times the job attempted to upgrade 4474 the resource 4475 type: integer 4476 startTime: 4477 description: StartTime of Upgrade 4478 format: date-time 4479 nullable: true 4480 type: string 4481 upgradeDetailedStatuses: 4482 description: UpgradeDetailedStatuses contains the list of statuses 4483 of each step 4484 items: 4485 description: UpgradeDetailedStatuses represents the latest available 4486 observations of a UpgradeTask current state. 4487 properties: 4488 lastUpdatedAt: 4489 description: LastUpdatedTime of a UpgradeStep 4490 format: date-time 4491 nullable: true 4492 type: string 4493 message: 4494 description: A human-readable message indicating details about 4495 why the upgradeStep is in this state 4496 type: string 4497 phase: 4498 description: Phase indicates if the UpgradeStep is waiting, 4499 errored or completed. 4500 type: string 4501 reason: 4502 description: Reason is a brief CamelCase string that describes 4503 any failure and is meant for machine parsing and tidy display 4504 in the CLI 4505 type: string 4506 startTime: 4507 description: StartTime of a UpgradeStep 4508 format: date-time 4509 nullable: true 4510 type: string 4511 step: 4512 description: UpgradeStep is the current step being performed 4513 for a particular resource upgrade 4514 type: string 4515 type: object 4516 type: array 4517 type: object 4518 required: 4519 - spec 4520 type: object 4521 served: true 4522 storage: true 4523 status: 4524 acceptedNames: 4525 kind: "" 4526 plural: "" 4527 conditions: [] 4528 storedVersions: [] 4529 --- 4530 apiVersion: apiextensions.k8s.io/v1 4531 kind: CustomResourceDefinition 4532 metadata: 4533 annotations: 4534 controller-gen.kubebuilder.io/version: v0.4.0 4535 creationTimestamp: null 4536 name: migrationtasks.openebs.io 4537 spec: 4538 group: openebs.io 4539 names: 4540 kind: MigrationTask 4541 listKind: MigrationTaskList 4542 plural: migrationtasks 4543 shortNames: 4544 - mtask 4545 singular: migrationtask 4546 scope: Namespaced 4547 versions: 4548 - name: v1alpha1 4549 schema: 4550 openAPIV3Schema: 4551 description: MigrationTask represents an migration task 4552 properties: 4553 apiVersion: 4554 description: 'APIVersion defines the versioned schema of this representation 4555 of an object. Servers should convert recognized schemas to the latest 4556 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 4557 type: string 4558 kind: 4559 description: 'Kind is a string value representing the REST resource this 4560 object represents. Servers may infer this from the endpoint the client 4561 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 4562 type: string 4563 metadata: 4564 type: object 4565 spec: 4566 description: Spec i.e. specifications of the MigrationTask 4567 properties: 4568 cstorPool: 4569 description: MigrateCStorPool contains the details of the cstor pool 4570 to be migrated 4571 properties: 4572 rename: 4573 description: If a CSPC with the same name as SPC already exists 4574 then we can rename SPC during migration using Rename 4575 type: string 4576 spcName: 4577 description: SPCName contains the name of the storage pool claim 4578 to be migrated 4579 type: string 4580 type: object 4581 cstorVolume: 4582 description: MigrateCStorVolume contains the details of the cstor 4583 volume to be migrated 4584 properties: 4585 pvName: 4586 description: PVName contains the name of the pv associated with 4587 the cstor volume to be migrated 4588 type: string 4589 type: object 4590 type: object 4591 status: 4592 description: Status of MigrationTask 4593 properties: 4594 completedTime: 4595 description: CompletedTime of Migrate 4596 format: date-time 4597 nullable: true 4598 type: string 4599 migrationDetailedStatuses: 4600 description: MigrationDetailedStatuses contains the list of statuses 4601 of each step 4602 items: 4603 description: MigrationDetailedStatuses represents the latest available 4604 observations of a MigrationTask current state. 4605 properties: 4606 lastUpdatedAt: 4607 description: LastUpdatedTime of a MigrateStep 4608 format: date-time 4609 nullable: true 4610 type: string 4611 message: 4612 description: A human-readable message indicating details about 4613 why the migrationStep is in this state 4614 type: string 4615 phase: 4616 description: Phase indicates if the MigrateStep is waiting, 4617 errored or completed. 4618 type: string 4619 reason: 4620 description: Reason is a brief CamelCase string that describes 4621 any failure and is meant for machine parsing and tidy display 4622 in the CLI 4623 type: string 4624 startTime: 4625 description: StartTime of a MigrateStep 4626 format: date-time 4627 nullable: true 4628 type: string 4629 step: 4630 type: string 4631 type: object 4632 type: array 4633 phase: 4634 description: Phase indicates if a migrationTask is started, success 4635 or errored 4636 type: string 4637 retries: 4638 description: Retries is the number of times the job attempted to migration 4639 the resource 4640 type: integer 4641 startTime: 4642 description: StartTime of Migrate 4643 format: date-time 4644 nullable: true 4645 type: string 4646 type: object 4647 required: 4648 - spec 4649 type: object 4650 served: true 4651 storage: true 4652 status: 4653 acceptedNames: 4654 kind: "" 4655 plural: "" 4656 conditions: [] 4657 storedVersions: [] 4658 --- 4659 apiVersion: apps/v1 4660 kind: Deployment 4661 metadata: 4662 name: cspc-operator 4663 namespace: openebs 4664 labels: 4665 name: cspc-operator 4666 openebs.io/component-name: cspc-operator 4667 openebs.io/version: 2.11.0 4668 spec: 4669 selector: 4670 matchLabels: 4671 name: cspc-operator 4672 openebs.io/component-name: cspc-operator 4673 replicas: 1 4674 strategy: 4675 type: Recreate 4676 template: 4677 metadata: 4678 labels: 4679 name: cspc-operator 4680 openebs.io/component-name: cspc-operator 4681 openebs.io/version: 2.11.0 4682 spec: 4683 serviceAccountName: openebs-cstor-operator 4684 containers: 4685 - name: cspc-operator 4686 imagePullPolicy: IfNotPresent 4687 image: openebs/cspc-operator:2.11.0 4688 env: 4689 - name: OPENEBS_NAMESPACE 4690 valueFrom: 4691 fieldRef: 4692 fieldPath: metadata.namespace 4693 - name: OPENEBS_SERVICEACCOUNT_NAME 4694 valueFrom: 4695 fieldRef: 4696 fieldPath: spec.serviceAccountName 4697 - name: CSPC_OPERATOR_POD_NAME 4698 valueFrom: 4699 fieldRef: 4700 fieldPath: metadata.name 4701 # OPENEBS_IO_BASE_DIR is used to configure base directory for openebs on host path. 4702 # Where OpenEBS can store required files. Default base path will be /var/openebs 4703 # - name: OPENEBS_IO_BASE_DIR 4704 # value: "/var/openebs" 4705 # OPENEBS_IO_CSTOR_POOL_SPARSE_DIR can be used to specify the hostpath 4706 # to be used for saving the shared content between the side cars 4707 # of cstor pool pod. This ENV is also used to indicate the location 4708 # of the sparse devices. 4709 # The default path used is /var/openebs/sparse 4710 #- name: OPENEBS_IO_CSTOR_POOL_SPARSE_DIR 4711 # value: "/var/openebs/sparse" 4712 # OPENEBS_IO_IMAGE_PULL_SECRETS is used to specify the image pull secrets for the cstor pool pod 4713 #- name: OPENEBS_IO_IMAGE_PULL_SECRETS 4714 # value: "" 4715 - name: OPENEBS_IO_CSPI_MGMT_IMAGE 4716 value: "openebs/cstor-pool-manager:2.11.0" 4717 - name: OPENEBS_IO_CSTOR_POOL_IMAGE 4718 value: "openebs/cstor-pool:2.11.0" 4719 - name: OPENEBS_IO_CSTOR_POOL_EXPORTER_IMAGE 4720 value: "openebs/m-exporter:2.11.0" 4721 - name: RESYNC_INTERVAL 4722 value: "30" 4723 --- 4724 apiVersion: apps/v1 4725 kind: Deployment 4726 metadata: 4727 name: cvc-operator 4728 namespace: openebs 4729 labels: 4730 name: cvc-operator 4731 openebs.io/component-name: cvc-operator 4732 openebs.io/version: 2.11.0 4733 spec: 4734 selector: 4735 matchLabels: 4736 name: cvc-operator 4737 openebs.io/component-name: cvc-operator 4738 replicas: 1 4739 strategy: 4740 type: Recreate 4741 template: 4742 metadata: 4743 labels: 4744 name: cvc-operator 4745 openebs.io/component-name: cvc-operator 4746 openebs.io/version: 2.11.0 4747 spec: 4748 serviceAccountName: openebs-cstor-operator 4749 containers: 4750 - name: cvc-operator 4751 imagePullPolicy: IfNotPresent 4752 image: openebs/cvc-operator:2.11.0 4753 args: 4754 - "--v=2" 4755 - "--leader-election=false" 4756 - "--bind=$(OPENEBS_CVC_POD_IP)" 4757 env: 4758 # OPENEBS_IO_BASE_DIR is used to configure base directory for openebs on host path. 4759 # Where OpenEBS can store required files. Default base path will be /var/openebs 4760 # - name: OPENEBS_IO_BASE_DIR 4761 # value: "/var/openebs" 4762 # OPENEBS_IO_CSTOR_TARGET_DIR can be used to specify the hostpath 4763 # that to be used for saving the core dump of cstor volume pod. 4764 # The default path used is /var/openebs/sparse 4765 #- name: OPENEBS_IO_CSTOR_TARGET_DIR 4766 # value: "/var/openebs/sparse" 4767 # OPENEBS_IO_IMAGE_PULL_SECRETS is used to specify the image pull secrets for the cstor target pod 4768 #- name: OPENEBS_IO_IMAGE_PULL_SECRETS 4769 # value: "" 4770 - name: OPENEBS_NAMESPACE 4771 valueFrom: 4772 fieldRef: 4773 fieldPath: metadata.namespace 4774 - name: OPENEBS_CVC_POD_IP 4775 valueFrom: 4776 fieldRef: 4777 fieldPath: status.podIP 4778 - name: OPENEBS_SERVICEACCOUNT_NAME 4779 valueFrom: 4780 fieldRef: 4781 fieldPath: spec.serviceAccountName 4782 - name: OPENEBS_IO_CSTOR_TARGET_IMAGE 4783 value: "openebs/cstor-istgt:2.11.0" 4784 - name: OPENEBS_IO_CSTOR_VOLUME_MGMT_IMAGE 4785 value: "openebs/cstor-volume-manager:2.11.0" 4786 - name: OPENEBS_IO_VOLUME_MONITOR_IMAGE 4787 value: "openebs/m-exporter:2.11.0" 4788 --- 4789 apiVersion: v1 4790 kind: Service 4791 metadata: 4792 name: cvc-operator-service 4793 namespace: openebs 4794 labels: 4795 openebs.io/component-name: cvc-operator-svc 4796 spec: 4797 ports: 4798 - name: api 4799 port: 5757 4800 protocol: TCP 4801 targetPort: 5757 4802 selector: 4803 name: cvc-operator 4804 sessionAffinity: None 4805 --- 4806 apiVersion: apps/v1 4807 kind: Deployment 4808 metadata: 4809 name: openebs-cstor-admission-server 4810 namespace: openebs 4811 labels: 4812 app: cstor-admission-webhook 4813 openebs.io/component-name: cstor-admission-webhook 4814 openebs.io/version: 2.11.0 4815 spec: 4816 replicas: 1 4817 strategy: 4818 type: Recreate 4819 rollingUpdate: null 4820 selector: 4821 matchLabels: 4822 app: cstor-admission-webhook 4823 template: 4824 metadata: 4825 labels: 4826 app: cstor-admission-webhook 4827 openebs.io/component-name: cstor-admission-webhook 4828 openebs.io/version: 2.11.0 4829 spec: 4830 serviceAccountName: openebs-cstor-operator 4831 containers: 4832 - name: admission-webhook 4833 image: openebs/cstor-webhook:2.11.0 4834 imagePullPolicy: IfNotPresent 4835 args: 4836 - -alsologtostderr 4837 - -v=2 4838 - 2>&1 4839 env: 4840 - name: OPENEBS_NAMESPACE 4841 valueFrom: 4842 fieldRef: 4843 fieldPath: metadata.namespace 4844 - name: ADMISSION_WEBHOOK_NAME 4845 value: "openebs-cstor-admission-server" 4846 - name: ADMISSION_WEBHOOK_FAILURE_POLICY 4847 value: "Fail" 4848 --- 4849 ########################################################################### 4850 #### #### 4851 #### NDM Operator yaml #### 4852 #### #### 4853 ########################################################################### 4854 apiVersion: apiextensions.k8s.io/v1 4855 kind: CustomResourceDefinition 4856 metadata: 4857 annotations: 4858 controller-gen.kubebuilder.io/version: v0.5.0 4859 creationTimestamp: null 4860 name: blockdevices.openebs.io 4861 spec: 4862 group: openebs.io 4863 names: 4864 kind: BlockDevice 4865 listKind: BlockDeviceList 4866 plural: blockdevices 4867 shortNames: 4868 - bd 4869 singular: blockdevice 4870 scope: Namespaced 4871 versions: 4872 - additionalPrinterColumns: 4873 - jsonPath: .spec.nodeAttributes.nodeName 4874 name: NodeName 4875 type: string 4876 - jsonPath: .spec.path 4877 name: Path 4878 priority: 1 4879 type: string 4880 - jsonPath: .spec.filesystem.fsType 4881 name: FSType 4882 priority: 1 4883 type: string 4884 - jsonPath: .spec.capacity.storage 4885 name: Size 4886 type: string 4887 - jsonPath: .status.claimState 4888 name: ClaimState 4889 type: string 4890 - jsonPath: .status.state 4891 name: Status 4892 type: string 4893 - jsonPath: .metadata.creationTimestamp 4894 name: Age 4895 type: date 4896 name: v1alpha1 4897 schema: 4898 openAPIV3Schema: 4899 description: BlockDevice is the Schema for the blockdevices API 4900 properties: 4901 apiVersion: 4902 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' 4903 type: string 4904 kind: 4905 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' 4906 type: string 4907 metadata: 4908 type: object 4909 spec: 4910 description: DeviceSpec defines the properties and runtime status of a BlockDevice 4911 properties: 4912 aggregateDevice: 4913 description: AggregateDevice was intended to store the hierarchical information in cases of LVM. However this is currently not implemented and may need to be re-looked into for better design. To be deprecated 4914 type: string 4915 capacity: 4916 description: Capacity 4917 properties: 4918 logicalSectorSize: 4919 description: LogicalSectorSize is blockdevice logical-sector size in bytes 4920 format: int32 4921 type: integer 4922 physicalSectorSize: 4923 description: PhysicalSectorSize is blockdevice physical-Sector size in bytes 4924 format: int32 4925 type: integer 4926 storage: 4927 description: Storage is the blockdevice capacity in bytes 4928 format: int64 4929 type: integer 4930 required: 4931 - storage 4932 type: object 4933 claimRef: 4934 description: ClaimRef is the reference to the BDC which has claimed this BD 4935 properties: 4936 apiVersion: 4937 description: API version of the referent. 4938 type: string 4939 fieldPath: 4940 description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.' 4941 type: string 4942 kind: 4943 description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 4944 type: string 4945 name: 4946 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' 4947 type: string 4948 namespace: 4949 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' 4950 type: string 4951 resourceVersion: 4952 description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' 4953 type: string 4954 uid: 4955 description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' 4956 type: string 4957 type: object 4958 details: 4959 description: Details contain static attributes of BD like model,serial, and so forth 4960 properties: 4961 compliance: 4962 description: Compliance is standards/specifications version implemented by device firmware such as SPC-1, SPC-2, etc 4963 type: string 4964 deviceType: 4965 description: DeviceType represents the type of device like sparse, disk, partition, lvm, crypt 4966 enum: 4967 - disk 4968 - partition 4969 - sparse 4970 - loop 4971 - lvm 4972 - crypt 4973 - dm 4974 - mpath 4975 type: string 4976 driveType: 4977 description: DriveType is the type of backing drive, HDD/SSD 4978 enum: 4979 - HDD 4980 - SSD 4981 - Unknown 4982 - "" 4983 type: string 4984 firmwareRevision: 4985 description: FirmwareRevision is the disk firmware revision 4986 type: string 4987 hardwareSectorSize: 4988 description: HardwareSectorSize is the hardware sector size in bytes 4989 format: int32 4990 type: integer 4991 logicalBlockSize: 4992 description: LogicalBlockSize is the logical block size in bytes reported by /sys/class/block/sda/queue/logical_block_size 4993 format: int32 4994 type: integer 4995 model: 4996 description: Model is model of disk 4997 type: string 4998 physicalBlockSize: 4999 description: PhysicalBlockSize is the physical block size in bytes reported by /sys/class/block/sda/queue/physical_block_size 5000 format: int32 5001 type: integer 5002 serial: 5003 description: Serial is serial number of disk 5004 type: string 5005 vendor: 5006 description: Vendor is vendor of disk 5007 type: string 5008 type: object 5009 devlinks: 5010 description: DevLinks contains soft links of a block device like /dev/by-id/... /dev/by-uuid/... 5011 items: 5012 description: DeviceDevLink holds the mapping between type and links like by-id type or by-path type link 5013 properties: 5014 kind: 5015 description: Kind is the type of link like by-id or by-path. 5016 enum: 5017 - by-id 5018 - by-path 5019 type: string 5020 links: 5021 description: Links are the soft links 5022 items: 5023 type: string 5024 type: array 5025 type: object 5026 type: array 5027 filesystem: 5028 description: FileSystem contains mountpoint and filesystem type 5029 properties: 5030 fsType: 5031 description: Type represents the FileSystem type of the block device 5032 type: string 5033 mountPoint: 5034 description: MountPoint represents the mountpoint of the block device. 5035 type: string 5036 type: object 5037 nodeAttributes: 5038 description: NodeAttributes has the details of the node on which BD is attached 5039 properties: 5040 nodeName: 5041 description: NodeName is the name of the Kubernetes node resource on which the device is attached 5042 type: string 5043 type: object 5044 parentDevice: 5045 description: "ParentDevice was intended to store the UUID of the parent Block Device as is the case for partitioned block devices. \n For example: /dev/sda is the parent for /dev/sda1 To be deprecated" 5046 type: string 5047 partitioned: 5048 description: Partitioned represents if BlockDevice has partitions or not (Yes/No) Currently always default to No. To be deprecated 5049 enum: 5050 - "Yes" 5051 - "No" 5052 type: string 5053 path: 5054 description: Path contain devpath (e.g. /dev/sdb) 5055 type: string 5056 required: 5057 - capacity 5058 - devlinks 5059 - nodeAttributes 5060 - path 5061 type: object 5062 status: 5063 description: DeviceStatus defines the observed state of BlockDevice 5064 properties: 5065 claimState: 5066 description: ClaimState represents the claim state of the block device 5067 enum: 5068 - Claimed 5069 - Unclaimed 5070 - Released 5071 type: string 5072 state: 5073 description: State is the current state of the blockdevice (Active/Inactive/Unknown) 5074 enum: 5075 - Active 5076 - Inactive 5077 - Unknown 5078 type: string 5079 required: 5080 - claimState 5081 - state 5082 type: object 5083 type: object 5084 served: true 5085 storage: true 5086 subresources: {} 5087 status: 5088 acceptedNames: 5089 kind: "" 5090 plural: "" 5091 conditions: [] 5092 storedVersions: [] 5093 5094 --- 5095 apiVersion: apiextensions.k8s.io/v1 5096 kind: CustomResourceDefinition 5097 metadata: 5098 annotations: 5099 controller-gen.kubebuilder.io/version: v0.5.0 5100 creationTimestamp: null 5101 name: blockdeviceclaims.openebs.io 5102 spec: 5103 group: openebs.io 5104 names: 5105 kind: BlockDeviceClaim 5106 listKind: BlockDeviceClaimList 5107 plural: blockdeviceclaims 5108 shortNames: 5109 - bdc 5110 singular: blockdeviceclaim 5111 scope: Namespaced 5112 versions: 5113 - additionalPrinterColumns: 5114 - jsonPath: .spec.blockDeviceName 5115 name: BlockDeviceName 5116 type: string 5117 - jsonPath: .status.phase 5118 name: Phase 5119 type: string 5120 - jsonPath: .metadata.creationTimestamp 5121 name: Age 5122 type: date 5123 name: v1alpha1 5124 schema: 5125 openAPIV3Schema: 5126 description: BlockDeviceClaim is the Schema for the blockdeviceclaims API 5127 properties: 5128 apiVersion: 5129 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' 5130 type: string 5131 kind: 5132 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' 5133 type: string 5134 metadata: 5135 type: object 5136 spec: 5137 description: DeviceClaimSpec defines the request details for a BlockDevice 5138 properties: 5139 blockDeviceName: 5140 description: BlockDeviceName is the reference to the block-device backing this claim 5141 type: string 5142 blockDeviceNodeAttributes: 5143 description: BlockDeviceNodeAttributes is the attributes on the node from which a BD should be selected for this claim. It can include nodename, failure domain etc. 5144 properties: 5145 hostName: 5146 description: HostName represents the hostname of the Kubernetes node resource where the BD should be present 5147 type: string 5148 nodeName: 5149 description: NodeName represents the name of the Kubernetes node resource where the BD should be present 5150 type: string 5151 type: object 5152 deviceClaimDetails: 5153 description: Details of the device to be claimed 5154 properties: 5155 allowPartition: 5156 description: AllowPartition represents whether to claim a full block device or a device that is a partition 5157 type: boolean 5158 blockVolumeMode: 5159 description: 'BlockVolumeMode represents whether to claim a device in Block mode or Filesystem mode. These are use cases of BlockVolumeMode: 1) Not specified: VolumeMode check will not be effective 2) VolumeModeBlock: BD should not have any filesystem or mountpoint 3) VolumeModeFileSystem: BD should have a filesystem and mountpoint. If DeviceFormat is specified then the format should match with the FSType in BD' 5160 type: string 5161 formatType: 5162 description: Format of the device required, eg:ext4, xfs 5163 type: string 5164 type: object 5165 deviceType: 5166 description: DeviceType represents the type of drive like SSD, HDD etc., 5167 nullable: true 5168 type: string 5169 hostName: 5170 description: Node name from where blockdevice has to be claimed. To be deprecated. Use NodeAttributes.HostName instead 5171 type: string 5172 resources: 5173 description: Resources will help with placing claims on Capacity, IOPS 5174 properties: 5175 requests: 5176 additionalProperties: 5177 anyOf: 5178 - type: integer 5179 - type: string 5180 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 5181 x-kubernetes-int-or-string: true 5182 description: 'Requests describes the minimum resources required. eg: if storage resource of 10G is requested minimum capacity of 10G should be available TODO for validating' 5183 type: object 5184 required: 5185 - requests 5186 type: object 5187 selector: 5188 description: Selector is used to find block devices to be considered for claiming 5189 properties: 5190 matchExpressions: 5191 description: matchExpressions is a list of label selector requirements. The requirements are ANDed. 5192 items: 5193 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. 5194 properties: 5195 key: 5196 description: key is the label key that the selector applies to. 5197 type: string 5198 operator: 5199 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. 5200 type: string 5201 values: 5202 description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. 5203 items: 5204 type: string 5205 type: array 5206 required: 5207 - key 5208 - operator 5209 type: object 5210 type: array 5211 matchLabels: 5212 additionalProperties: 5213 type: string 5214 description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. 5215 type: object 5216 type: object 5217 type: object 5218 status: 5219 description: DeviceClaimStatus defines the observed state of BlockDeviceClaim 5220 properties: 5221 phase: 5222 description: Phase represents the current phase of the claim 5223 type: string 5224 required: 5225 - phase 5226 type: object 5227 type: object 5228 served: true 5229 storage: true 5230 subresources: {} 5231 status: 5232 acceptedNames: 5233 kind: "" 5234 plural: "" 5235 conditions: [] 5236 storedVersions: [] 5237 --- 5238 # This is the node-disk-manager related config. 5239 # It can be used to customize the disks probes and filters 5240 apiVersion: v1 5241 kind: ConfigMap 5242 metadata: 5243 name: openebs-ndm-config 5244 namespace: openebs 5245 labels: 5246 openebs.io/component-name: ndm-config 5247 data: 5248 # udev-probe is default or primary probe it should be enabled to run ndm 5249 # filterconfigs contains configs of filters. To provide a group of include 5250 # and exclude values add it as , separated string 5251 node-disk-manager.config: | 5252 probeconfigs: 5253 - key: udev-probe 5254 name: udev probe 5255 state: true 5256 - key: seachest-probe 5257 name: seachest probe 5258 state: false 5259 - key: smart-probe 5260 name: smart probe 5261 state: true 5262 filterconfigs: 5263 - key: os-disk-exclude-filter 5264 name: os disk exclude filter 5265 state: true 5266 exclude: "/,/etc/hosts,/boot" 5267 - key: vendor-filter 5268 name: vendor filter 5269 state: true 5270 include: "" 5271 exclude: "CLOUDBYT,OpenEBS" 5272 - key: path-filter 5273 name: path filter 5274 state: true 5275 include: "" 5276 exclude: "/dev/loop,/dev/fd0,/dev/sr0,/dev/ram,/dev/md,/dev/dm-,/dev/rbd,/dev/zd" 5277 --- 5278 apiVersion: apps/v1 5279 kind: DaemonSet 5280 metadata: 5281 name: openebs-ndm 5282 namespace: openebs 5283 labels: 5284 name: openebs-ndm 5285 openebs.io/component-name: ndm 5286 openebs.io/version: 2.11.0 5287 spec: 5288 selector: 5289 matchLabels: 5290 name: openebs-ndm 5291 openebs.io/component-name: ndm 5292 updateStrategy: 5293 type: RollingUpdate 5294 template: 5295 metadata: 5296 labels: 5297 name: openebs-ndm 5298 openebs.io/component-name: ndm 5299 openebs.io/version: 2.11.0 5300 spec: 5301 # By default the node-disk-manager will be run on all kubernetes nodes 5302 # If you would like to limit this to only some nodes, say the nodes 5303 # that have storage attached, you could label those node and use 5304 # nodeSelector. 5305 # 5306 # e.g. label the storage nodes with - "openebs.io/nodegroup"="storage-node" 5307 # kubectl label node <node-name> "openebs.io/nodegroup"="storage-node" 5308 #nodeSelector: 5309 # "openebs.io/nodegroup": "storage-node" 5310 serviceAccountName: openebs-cstor-operator 5311 hostNetwork: true 5312 # host PID is used to check status of iSCSI Service when the NDM 5313 # API service is enabled 5314 #hostPID: true 5315 containers: 5316 - name: node-disk-manager 5317 image: openebs/node-disk-manager:1.6.0 5318 args: 5319 - -v=4 5320 # The feature-gate is used to enable the new UUID algorithm. 5321 - --feature-gates="GPTBasedUUID" 5322 # Detect mount point and filesystem changes wihtout restart. 5323 # Uncomment the line below to enable the feature. 5324 # --feature-gates="MountChangeDetection" 5325 # The feature gate is used to start the gRPC API service. The gRPC server 5326 # starts at 9115 port by default. This feature is currently in Alpha state 5327 # - --feature-gates="APIService" 5328 # The feature gate is used to enable NDM, to create blockdevice resources 5329 # for unused partitions on the OS disk 5330 # - --feature-gates="UseOSDisk" 5331 imagePullPolicy: IfNotPresent 5332 securityContext: 5333 privileged: true 5334 volumeMounts: 5335 - name: config 5336 mountPath: /host/node-disk-manager.config 5337 subPath: node-disk-manager.config 5338 readOnly: true 5339 # make udev database available inside container 5340 - name: udev 5341 mountPath: /run/udev 5342 - name: procmount 5343 mountPath: /host/proc 5344 readOnly: true 5345 - name: devmount 5346 mountPath: /dev 5347 - name: basepath 5348 mountPath: /var/openebs/ndm 5349 - name: sparsepath 5350 mountPath: /var/openebs/sparse 5351 env: 5352 # namespace in which NDM is installed will be passed to NDM Daemonset 5353 # as environment variable 5354 - name: NAMESPACE 5355 valueFrom: 5356 fieldRef: 5357 fieldPath: metadata.namespace 5358 # pass hostname as env variable using downward API to the NDM container 5359 - name: NODE_NAME 5360 valueFrom: 5361 fieldRef: 5362 fieldPath: spec.nodeName 5363 # specify the directory where the sparse files need to be created. 5364 # if not specified, then sparse files will not be created. 5365 - name: SPARSE_FILE_DIR 5366 value: "/var/openebs/sparse" 5367 # Size(bytes) of the sparse file to be created. 5368 - name: SPARSE_FILE_SIZE 5369 value: "10737418240" 5370 # Specify the number of sparse files to be created 5371 - name: SPARSE_FILE_COUNT 5372 value: "0" 5373 livenessProbe: 5374 exec: 5375 command: 5376 - pgrep 5377 - "ndm" 5378 initialDelaySeconds: 30 5379 periodSeconds: 60 5380 volumes: 5381 - name: config 5382 configMap: 5383 name: openebs-ndm-config 5384 - name: udev 5385 hostPath: 5386 path: /run/udev 5387 type: Directory 5388 # mount /proc (to access mount file of process 1 of host) inside container 5389 # to read mount-point of disks and partitions 5390 - name: procmount 5391 hostPath: 5392 path: /proc 5393 type: Directory 5394 - name: devmount 5395 # the /dev directory is mounted so that we have access to the devices that 5396 # are connected at runtime of the pod. 5397 hostPath: 5398 path: /dev 5399 type: Directory 5400 - name: basepath 5401 hostPath: 5402 path: /var/openebs/ndm 5403 type: DirectoryOrCreate 5404 - name: sparsepath 5405 hostPath: 5406 path: /var/openebs/sparse 5407 --- 5408 apiVersion: apps/v1 5409 kind: Deployment 5410 metadata: 5411 name: openebs-ndm-operator 5412 namespace: openebs 5413 labels: 5414 name: openebs-ndm-operator 5415 openebs.io/component-name: ndm-operator 5416 openebs.io/version: 2.11.0 5417 spec: 5418 selector: 5419 matchLabels: 5420 name: openebs-ndm-operator 5421 openebs.io/component-name: ndm-operator 5422 replicas: 1 5423 strategy: 5424 type: Recreate 5425 template: 5426 metadata: 5427 labels: 5428 name: openebs-ndm-operator 5429 openebs.io/component-name: ndm-operator 5430 openebs.io/version: 2.11.0 5431 spec: 5432 serviceAccountName: openebs-cstor-operator 5433 containers: 5434 - name: node-disk-operator 5435 image: openebs/node-disk-operator:1.6.0 5436 imagePullPolicy: IfNotPresent 5437 env: 5438 - name: WATCH_NAMESPACE 5439 valueFrom: 5440 fieldRef: 5441 fieldPath: metadata.namespace 5442 - name: POD_NAME 5443 valueFrom: 5444 fieldRef: 5445 fieldPath: metadata.name 5446 # the service account of the ndm-operator pod 5447 - name: SERVICE_ACCOUNT 5448 valueFrom: 5449 fieldRef: 5450 fieldPath: spec.serviceAccountName 5451 - name: OPERATOR_NAME 5452 value: "node-disk-operator" 5453 - name: CLEANUP_JOB_IMAGE 5454 value: "openebs/linux-utils:2.11.0" 5455 # OPENEBS_IO_IMAGE_PULL_SECRETS environment variable is used to pass the image pull secrets 5456 # to the cleanup pod launched by NDM operator 5457 #- name: OPENEBS_IO_IMAGE_PULL_SECRETS 5458 # value: "" 5459 livenessProbe: 5460 httpGet: 5461 path: /healthz 5462 port: 8585 5463 initialDelaySeconds: 15 5464 periodSeconds: 20 5465 readinessProbe: 5466 httpGet: 5467 path: /readyz 5468 port: 8585 5469 initialDelaySeconds: 5 5470 periodSeconds: 10 5471 ---