diff --git a/openebs/README.md b/openebs/README.md new file mode 100644 index 0000000..85bf1b8 --- /dev/null +++ b/openebs/README.md @@ -0,0 +1,5 @@ +# openebs + + + +mindestens 3 worker nodes notwendig für replicated storage diff --git a/openebs/diskpools/work-00.yaml b/openebs/diskpools/work-00.yaml new file mode 100644 index 0000000..2c9c520 --- /dev/null +++ b/openebs/diskpools/work-00.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: openebs.io/v1beta2 +kind: DiskPool +metadata: + name: pool-0 + namespace: openebs +spec: + node: work-00 + disks: [aio:///dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1] + topology: + labelled: + topology-key: topology-value \ No newline at end of file diff --git a/openebs/diskpools/work-01.yaml b/openebs/diskpools/work-01.yaml new file mode 100644 index 0000000..7770a85 --- /dev/null +++ b/openebs/diskpools/work-01.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: openebs.io/v1beta2 +kind: DiskPool +metadata: + name: pool-1 + namespace: openebs +spec: + node: work-01 + disks: [aio:///dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1] + topology: + labelled: + topology-key: topology-value \ No newline at end of file diff --git a/openebs/diskpools/work-02.yaml b/openebs/diskpools/work-02.yaml new file mode 100644 index 0000000..7760255 --- /dev/null +++ b/openebs/diskpools/work-02.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: openebs.io/v1beta2 +kind: DiskPool +metadata: + name: pool-2 + namespace: openebs +spec: + node: work-02 + disks: [aio:///dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1] + topology: + labelled: + topology-key: topology-value \ No newline at end of file diff --git a/openebs/kustomization.yaml b/openebs/kustomization.yaml new file mode 100644 index 0000000..ea97ab5 --- /dev/null +++ b/openebs/kustomization.yaml @@ -0,0 +1,7 @@ +# argocd/kustomization.yaml +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - main.yaml + - storageclass.yaml \ No newline at end of file diff --git a/openebs/main.yaml b/openebs/main.yaml new file mode 100644 index 0000000..6b8c7e7 --- /dev/null +++ b/openebs/main.yaml @@ -0,0 +1,3700 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: openebs +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + namespace: openebs + annotations: + cas.openebs.io/config: | + - name: StorageType + value: "hostpath" + - name: BasePath + value: "/var/local/openebs/localpv-hostpath/etcd" + openebs.io/cas-type: local + name: mayastor-etcd-localpv +provisioner: openebs.io/local +reclaimPolicy: Delete +volumeBindingMode: WaitForFirstConsumer +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + namespace: openebs + annotations: + cas.openebs.io/config: | + - name: StorageType + value: "hostpath" + - name: BasePath + value: "/var/local/openebs/localpv-hostpath/loki" + openebs.io/cas-type: local + name: mayastor-loki-localpv +provisioner: openebs.io/local +reclaimPolicy: Delete +volumeBindingMode: WaitForFirstConsumer +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + namespace: openebs + annotations: + cas.openebs.io/config: | + - name: StorageType + value: "hostpath" + - name: BasePath + value: "/var/openebs/local" + openebs.io/cas-type: local + name: openebs-hostpath +provisioner: openebs.io/local +reclaimPolicy: Delete +volumeBindingMode: WaitForFirstConsumer +--- +allowVolumeExpansion: true +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + namespace: openebs + name: openebs-single-replica +parameters: + protocol: nvmf + repl: "1" +provisioner: io.openebs.csi-mayastor +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + namespace: openebs + annotations: + api-approved.kubernetes.io: https://github.com/kubernetes-csi/external-snapshotter/pull/814 + controller-gen.kubebuilder.io/version: v0.11.3 + helm.sh/resource-policy: keep + creationTimestamp: null + name: volumesnapshotclasses.snapshot.storage.k8s.io +spec: + group: snapshot.storage.k8s.io + names: + kind: VolumeSnapshotClass + listKind: VolumeSnapshotClassList + plural: volumesnapshotclasses + shortNames: + - vsclass + - vsclasses + singular: volumesnapshotclass + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .driver + name: Driver + type: string + - description: Determines whether a VolumeSnapshotContent created through the + VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. + jsonPath: .deletionPolicy + name: DeletionPolicy + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + 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 + properties: + apiVersion: + description: | + APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + deletionPolicy: + 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. + enum: + - Delete + - Retain + type: string + driver: + description: driver is the name of the storage driver that handles this + VolumeSnapshotClass. Required. + type: string + kind: + description: | + Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + parameters: + additionalProperties: + type: string + description: parameters is a key-value map with storage driver specific + parameters for creating snapshots. These values are opaque to Kubernetes. + type: object + required: + - deletionPolicy + - driver + type: object + served: true + storage: true + subresources: {} + - additionalPrinterColumns: + - jsonPath: .driver + name: Driver + type: string + - description: | + Determines whether a VolumeSnapshotContent created through the + VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. + jsonPath: .deletionPolicy + name: DeletionPolicy + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + deprecated: true + deprecationWarning: snapshot.storage.k8s.io/v1beta1 VolumeSnapshotClass is deprecated; + use snapshot.storage.k8s.io/v1 VolumeSnapshotClass + name: v1beta1 + schema: + openAPIV3Schema: + 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 + properties: + apiVersion: + description: | + APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + deletionPolicy: + 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. + enum: + - Delete + - Retain + type: string + driver: + description: driver is the name of the storage driver that handles this + VolumeSnapshotClass. Required. + type: string + kind: + description: | + Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + parameters: + additionalProperties: + type: string + description: parameters is a key-value map with storage driver specific + parameters for creating snapshots. These values are opaque to Kubernetes. + type: object + required: + - deletionPolicy + - driver + type: object + served: false + storage: false + subresources: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + namespace: openebs + annotations: + api-approved.kubernetes.io: https://github.com/kubernetes-csi/external-snapshotter/pull/814 + controller-gen.kubebuilder.io/version: v0.11.3 + helm.sh/resource-policy: keep + creationTimestamp: null + name: volumesnapshotcontents.snapshot.storage.k8s.io +spec: + group: snapshot.storage.k8s.io + names: + kind: VolumeSnapshotContent + listKind: VolumeSnapshotContentList + plural: volumesnapshotcontents + shortNames: + - vsc + - vscs + singular: volumesnapshotcontent + scope: Cluster + versions: + - additionalPrinterColumns: + - description: Indicates if the snapshot is ready to be used to restore a volume. + jsonPath: .status.readyToUse + name: ReadyToUse + type: boolean + - description: Represents the complete size of the snapshot in bytes + jsonPath: .status.restoreSize + name: RestoreSize + type: integer + - description: Determines whether this VolumeSnapshotContent and its physical + snapshot on the underlying storage system should be deleted when its bound + VolumeSnapshot is deleted. + jsonPath: .spec.deletionPolicy + name: DeletionPolicy + type: string + - description: Name of the CSI driver used to create the physical snapshot on + the underlying storage system. + jsonPath: .spec.driver + name: Driver + type: string + - description: Name of the VolumeSnapshotClass to which this snapshot belongs. + jsonPath: .spec.volumeSnapshotClassName + name: VolumeSnapshotClass + type: string + - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent + object is bound. + jsonPath: .spec.volumeSnapshotRef.name + name: VolumeSnapshot + type: string + - description: Namespace of the VolumeSnapshot object to which this VolumeSnapshotContent + object is bound. + jsonPath: .spec.volumeSnapshotRef.namespace + name: VolumeSnapshotNamespace + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: VolumeSnapshotContent represents the actual "on-disk" snapshot + object in the underlying storage system + properties: + apiVersion: + description: | + APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: | + Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + spec: + description: spec defines properties of a VolumeSnapshotContent created + by the underlying storage system. Required. + properties: + deletionPolicy: + 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. + enum: + - Delete + - Retain + type: string + driver: + 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. + type: string + source: + 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. + oneOf: + - required: + - snapshotHandle + - required: + - volumeHandle + properties: + snapshotHandle: + 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. + type: string + volumeHandle: + description: volumeHandle specifies the CSI "volume_id" of the + volume from which a snapshot should be dynamically taken from. + This field is immutable. + type: string + type: object + sourceVolumeMode: + description: SourceVolumeMode is the mode of the volume whose snapshot + is taken. Can be either “Filesystem” or “Block”. If not specified, + it indicates the source volume's mode is unknown. This field is + immutable. This field is an alpha field. + type: string + volumeSnapshotClassName: + 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. + type: string + volumeSnapshotRef: + 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. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + 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. + type: string + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + 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 + type: string + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + type: object + x-kubernetes-map-type: atomic + required: + - deletionPolicy + - driver + - source + - volumeSnapshotRef + type: object + status: + description: status represents the current information of a snapshot. + properties: + creationTime: + 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. + format: int64 + type: integer + error: + description: error is the last observed error during snapshot creation, + if any. Upon success after retry, this error field will be cleared. + properties: + message: + 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. + type: string + time: + description: time is the timestamp when the error was encountered. + format: date-time + type: string + type: object + readyToUse: + 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. + type: boolean + restoreSize: + 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. + format: int64 + minimum: 0 + type: integer + snapshotHandle: + 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. + type: string + volumeGroupSnapshotContentName: + description: VolumeGroupSnapshotContentName is the name of the VolumeGroupSnapshotContent + of which this VolumeSnapshotContent is a part of. + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - description: Indicates if the snapshot is ready to be used to restore a volume. + jsonPath: .status.readyToUse + name: ReadyToUse + type: boolean + - description: Represents the complete size of the snapshot in bytes + jsonPath: .status.restoreSize + name: RestoreSize + type: integer + - description: Determines whether this VolumeSnapshotContent and its physical + snapshot on the underlying storage system should be deleted when its bound + VolumeSnapshot is deleted. + jsonPath: .spec.deletionPolicy + name: DeletionPolicy + type: string + - description: Name of the CSI driver used to create the physical snapshot on + the underlying storage system. + jsonPath: .spec.driver + name: Driver + type: string + - description: Name of the VolumeSnapshotClass to which this snapshot belongs. + jsonPath: .spec.volumeSnapshotClassName + name: VolumeSnapshotClass + type: string + - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent + object is bound. + jsonPath: .spec.volumeSnapshotRef.name + name: VolumeSnapshot + type: string + - description: Namespace of the VolumeSnapshot object to which this VolumeSnapshotContent + object is bound. + jsonPath: .spec.volumeSnapshotRef.namespace + name: VolumeSnapshotNamespace + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + deprecated: true + deprecationWarning: snapshot.storage.k8s.io/v1beta1 VolumeSnapshotContent is deprecated; + use snapshot.storage.k8s.io/v1 VolumeSnapshotContent + name: v1beta1 + schema: + openAPIV3Schema: + description: VolumeSnapshotContent represents the actual "on-disk" snapshot + object in the underlying storage system + properties: + apiVersion: + description: | + APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: | + Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + spec: + description: spec defines properties of a VolumeSnapshotContent created + by the underlying storage system. Required. + properties: + deletionPolicy: + 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. + enum: + - Delete + - Retain + type: string + driver: + 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. + type: string + source: + 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. + properties: + snapshotHandle: + 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. + type: string + volumeHandle: + description: volumeHandle specifies the CSI "volume_id" of the + volume from which a snapshot should be dynamically taken from. + This field is immutable. + type: string + type: object + volumeSnapshotClassName: + 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. + type: string + volumeSnapshotRef: + 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. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + 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. + type: string + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + 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 + type: string + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + type: object + required: + - deletionPolicy + - driver + - source + - volumeSnapshotRef + type: object + status: + description: status represents the current information of a snapshot. + properties: + creationTime: + 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. + format: int64 + type: integer + error: + description: error is the last observed error during snapshot creation, + if any. Upon success after retry, this error field will be cleared. + properties: + message: + 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. + type: string + time: + description: time is the timestamp when the error was encountered. + format: date-time + type: string + type: object + readyToUse: + 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. + type: boolean + restoreSize: + 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. + format: int64 + minimum: 0 + type: integer + snapshotHandle: + 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. + type: string + type: object + required: + - spec + type: object + served: false + storage: false + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + namespace: openebs + annotations: + api-approved.kubernetes.io: https://github.com/kubernetes-csi/external-snapshotter/pull/814 + controller-gen.kubebuilder.io/version: v0.11.3 + helm.sh/resource-policy: keep + creationTimestamp: null + name: volumesnapshots.snapshot.storage.k8s.io +spec: + group: snapshot.storage.k8s.io + names: + kind: VolumeSnapshot + listKind: VolumeSnapshotList + plural: volumesnapshots + shortNames: + - vs + singular: volumesnapshot + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Indicates if the snapshot is ready to be used to restore a volume. + jsonPath: .status.readyToUse + name: ReadyToUse + type: boolean + - 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. + jsonPath: .spec.source.persistentVolumeClaimName + name: SourcePVC + type: string + - description: If a snapshot already exists, this contains the name of the existing + VolumeSnapshotContent object representing the existing snapshot. + jsonPath: .spec.source.volumeSnapshotContentName + name: SourceSnapshotContent + type: string + - description: Represents the minimum size of volume required to rehydrate from + this snapshot. + jsonPath: .status.restoreSize + name: RestoreSize + type: string + - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. + jsonPath: .spec.volumeSnapshotClassName + name: SnapshotClass + type: string + - 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. + jsonPath: .status.boundVolumeSnapshotContentName + name: SnapshotContent + type: string + - description: Timestamp when the point-in-time snapshot was taken by the underlying + storage system. + jsonPath: .status.creationTime + name: CreationTime + type: date + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + 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. + properties: + apiVersion: + description: | + APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: | + Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + spec: + 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.' + properties: + source: + description: source specifies where a snapshot will be created from. + This field is immutable after creation. Required. + oneOf: + - required: + - persistentVolumeClaimName + - required: + - volumeSnapshotContentName + properties: + persistentVolumeClaimName: + 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. + type: string + volumeSnapshotContentName: + 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. + type: string + type: object + volumeSnapshotClassName: + 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. + type: string + required: + - source + type: object + status: + 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. + properties: + boundVolumeSnapshotContentName: + 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. + type: string + creationTime: + 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. + format: date-time + type: string + error: + 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 + occurs during the snapshot creation. Upon success, this error field + will be cleared. + properties: + message: + 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.' + type: string + time: + description: time is the timestamp when the error was encountered. + format: date-time + type: string + type: object + readyToUse: + 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. + type: boolean + restoreSize: + 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. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + type: string + x-kubernetes-int-or-string: true + volumeGroupSnapshotName: + description: VolumeGroupSnapshotName is the name of the VolumeGroupSnapshot + of which this VolumeSnapshot is a part of. + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - description: Indicates if the snapshot is ready to be used to restore a volume. + jsonPath: .status.readyToUse + name: ReadyToUse + type: boolean + - 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. + jsonPath: .spec.source.persistentVolumeClaimName + name: SourcePVC + type: string + - description: If a snapshot already exists, this contains the name of the existing + VolumeSnapshotContent object representing the existing snapshot. + jsonPath: .spec.source.volumeSnapshotContentName + name: SourceSnapshotContent + type: string + - description: Represents the minimum size of volume required to rehydrate from + this snapshot. + jsonPath: .status.restoreSize + name: RestoreSize + type: string + - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. + jsonPath: .spec.volumeSnapshotClassName + name: SnapshotClass + type: string + - 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. + jsonPath: .status.boundVolumeSnapshotContentName + name: SnapshotContent + type: string + - description: Timestamp when the point-in-time snapshot was taken by the underlying + storage system. + jsonPath: .status.creationTime + name: CreationTime + type: date + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + deprecated: true + deprecationWarning: snapshot.storage.k8s.io/v1beta1 VolumeSnapshot is deprecated; + use snapshot.storage.k8s.io/v1 VolumeSnapshot + name: v1beta1 + schema: + openAPIV3Schema: + 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. + properties: + apiVersion: + description: | + APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: | + Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + spec: + 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. + properties: + source: + description: source specifies where a snapshot will be created from. + This field is immutable after creation. Required. + properties: + persistentVolumeClaimName: + 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. + type: string + volumeSnapshotContentName: + 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. + type: string + type: object + volumeSnapshotClassName: + 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. + type: string + required: + - source + type: object + status: + 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. + properties: + boundVolumeSnapshotContentName: + 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. + type: string + creationTime: + 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. + format: date-time + type: string + error: + 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 + occurs during the snapshot creation. Upon success, this error field + will be cleared. + properties: + message: + 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. + type: string + time: + description: time is the timestamp when the error was encountered. + format: date-time + type: string + type: object + readyToUse: + 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. + type: boolean + restoreSize: + 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. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + type: string + x-kubernetes-int-or-string: true + type: object + required: + - spec + type: object + served: false + storage: false + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: v1 +automountServiceAccountToken: true +kind: ServiceAccount +metadata: + labels: + app: loki + chart: loki-2.16.0 + heritage: Helm + release: openebs + name: openebs-loki + namespace: openebs +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: nats + app.kubernetes.io/version: 2.9.17 + helm.sh/chart: nats-0.19.14 + name: openebs-nats + namespace: openebs +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + annotations: + helm.sh/hook: pre-upgrade + helm.sh/hook-delete-policy: hook-succeeded + helm.sh/hook-weight: "-2" + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 4.2.0 + helm.sh/chart: openebs-4.2.0 + name: openebs-pre-upgrade-hook + namespace: openebs +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: promtail + app.kubernetes.io/version: 2.8.3 + helm.sh/chart: promtail-6.13.1 + name: openebs-promtail + namespace: openebs +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-service-account + namespace: openebs +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + namespace: openebs + labels: + app: localpv-provisioner + chart: localpv-provisioner-4.2.0 + component: localpv-provisioner + heritage: Helm + openebs.io/component-name: openebs-localpv-provisioner + release: openebs + name: openebs-localpv-provisioner +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + labels: + app: loki + chart: loki-2.16.0 + heritage: Helm + release: openebs + name: openebs-loki + namespace: openebs +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + namespace: openebs + labels: + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-cluster-role +rules: +- apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - create + - get + - update + - list + - patch + - replace +- apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions/status + verbs: + - get + - update + - patch +- apiGroups: + - openebs.io + resources: + - mayastorpools + verbs: + - get + - list + - patch + - delete + - deletecollection +- apiGroups: + - openebs.io + resources: + - diskpools + verbs: + - get + - list + - watch + - update + - replace + - patch + - create +- apiGroups: + - openebs.io + resources: + - diskpools/status + verbs: + - update + - patch +- apiGroups: + - "" + resources: + - configmaps + verbs: + - create + - get + - update + - patch +- apiGroups: + - apps + resources: + - deployments + verbs: + - get + - list +- apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - watch + - update + - create + - delete + - patch +- apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - watch + - patch +- apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - list + - watch + - update +- apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - events + verbs: + - list + - watch + - create + - update + - patch +- apiGroups: + - "" + resources: + - pods + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - persistentvolumeclaims/status + verbs: + - patch +- apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotclasses + verbs: + - get + - list + - watch +- apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotcontents + verbs: + - create + - get + - list + - watch + - update + - patch + - delete +- apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotcontents/status + verbs: + - update + - patch +- apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots + verbs: + - get + - list + - watch + - update + - patch + - delete +- apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots/status + verbs: + - update + - patch +- apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - watch +- apiGroups: + - storage.k8s.io + resources: + - volumeattachments + verbs: + - get + - list + - watch + - update + - patch +- apiGroups: + - storage.k8s.io + resources: + - volumeattachments/status + verbs: + - patch +- apiGroups: + - storage.k8s.io + resources: + - csinodes + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - namespaces + verbs: + - get +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + namespace: openebs + labels: + app: localpv-provisioner + chart: localpv-provisioner-4.2.0 + component: localpv-provisioner + heritage: Helm + openebs.io/component-name: openebs-localpv-provisioner + release: openebs + name: openebs-localpv-provisioner +rules: +- apiGroups: + - '*' + resources: + - nodes + verbs: + - get + - list + - watch +- apiGroups: + - '*' + resources: + - namespaces + - pods + - events + - endpoints + verbs: + - '*' +- apiGroups: + - '*' + resources: + - resourcequotas + - limitranges + verbs: + - list + - watch +- apiGroups: + - '*' + resources: + - storageclasses + - persistentvolumeclaims + - persistentvolumes + verbs: + - '*' +- apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - get + - list + - create + - update + - delete + - patch +- apiGroups: + - openebs.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - create + - update +- nonResourceURLs: + - /metrics + verbs: + - get +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + namespace: openebs + annotations: + helm.sh/hook: pre-upgrade + helm.sh/hook-delete-policy: hook-succeeded + helm.sh/hook-weight: "-2" + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 4.2.0 + helm.sh/chart: openebs-4.2.0 + name: openebs-pre-upgrade-hook +rules: +- apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - get + - patch +- apiGroups: + - apps + resources: + - deployments + verbs: + - delete + - list +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + namespace: openebs + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: promtail + app.kubernetes.io/version: 2.8.3 + helm.sh/chart: promtail-6.13.1 + name: openebs-promtail +rules: +- apiGroups: + - "" + resources: + - nodes + - nodes/proxy + - services + - endpoints + - pods + verbs: + - get + - watch + - list +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + app: loki + chart: loki-2.16.0 + heritage: Helm + release: openebs + name: openebs-loki + namespace: openebs +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: openebs-loki +subjects: +- kind: ServiceAccount + name: openebs-loki +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + namespace: openebs + labels: + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-cluster-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: openebs-cluster-role +subjects: +- kind: ServiceAccount + name: openebs-service-account + namespace: openebs +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + namespace: openebs + labels: + app: localpv-provisioner + chart: localpv-provisioner-4.2.0 + component: localpv-provisioner + heritage: Helm + openebs.io/component-name: openebs-localpv-provisioner + release: openebs + name: openebs-localpv-provisioner +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: openebs-localpv-provisioner +subjects: +- kind: ServiceAccount + name: openebs-localpv-provisioner + namespace: openebs +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + namespace: openebs + annotations: + helm.sh/hook: pre-upgrade + helm.sh/hook-delete-policy: hook-succeeded + helm.sh/hook-weight: "-1" + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 4.2.0 + helm.sh/chart: openebs-4.2.0 + name: openebs-pre-upgrade-hook +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: openebs-pre-upgrade-hook +subjects: +- kind: ServiceAccount + name: openebs-pre-upgrade-hook + namespace: openebs +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + namespace: openebs + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: promtail + app.kubernetes.io/version: 2.8.3 + helm.sh/chart: promtail-6.13.1 + name: openebs-promtail +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: openebs-promtail +subjects: +- kind: ServiceAccount + name: openebs-promtail + namespace: openebs +--- +apiVersion: v1 +data: + loki-stack-datasource.yaml: |- + apiVersion: 1 + datasources: + - name: Loki + type: loki + access: proxy + url: "http://openebs-loki:3100" + version: 1 + isDefault: true + jsonData: + {} +kind: ConfigMap +metadata: + labels: + app: loki-stack + chart: loki-stack-2.9.11 + grafana_datasource: "1" + heritage: Helm + release: openebs + name: openebs-loki-stack + namespace: openebs +--- +apiVersion: v1 +data: + nats.conf: "# NATS Clients Port\nport: 4222\n\n# PID file shared with configuration + reloader.\npid_file: \"/var/run/nats/nats.pid\"\n\n###############\n# #\n# + Monitoring #\n# #\n###############\nhttp: 8222\nserver_name:$POD_NAME\n###################################\n# + \ #\n# NATS JetStream #\n# #\n###################################\njetstream + {\n max_mem: 5Mi\n}\n###################################\n# #\n# + NATS Full Mesh Clustering Setup #\n# #\n###################################\ncluster + {\n port: 6222\n name: nats\n\n routes = [\n nats://openebs-nats-0.openebs-nats.openebs:6222,nats://openebs-nats-1.openebs-nats.openebs:6222,nats://openebs-nats-2.openebs-nats.openebs:6222,\n + \ \n ]\n cluster_advertise: $CLUSTER_ADVERTISE\n\n connect_retries: 120\n}\nlame_duck_grace_period: + 10s\nlame_duck_duration: 30s\n" +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: nats + app.kubernetes.io/version: 2.9.17 + helm.sh/chart: nats-0.19.14 + name: openebs-nats-config + namespace: openebs +--- +apiVersion: v1 +data: + test.sh: | + #!/usr/bin/env bash + + LOKI_URI="http://${LOKI_SERVICE}:${LOKI_PORT}" + + function setup() { + apk add -u curl jq + until (curl -s ${LOKI_URI}/loki/api/v1/label/app/values | jq -e '.data[] | select(. == "loki")'); do + sleep 1 + done + } + + @test "Has labels" { + curl -s ${LOKI_URI}/loki/api/v1/labels | \ + jq -e '.data[] | select(. == "app")' + } + + @test "Query log entry" { + curl -sG ${LOKI_URI}/api/prom/query?limit=10 --data-urlencode 'query={app="loki"}' | \ + jq -e '.streams[].entries | length >=1' + } + + @test "Push log entry" { + local timestamp=$(date +%s000000000) + local data=$(jq -n --arg timestamp "${timestamp}" '{"streams": [{"stream": {"app": "loki-test"}, "values": [[$timestamp, "foobar"]]}]}') + + curl -s -X POST -H "Content-Type: application/json" ${LOKI_URI}/loki/api/v1/push --data-raw "${data}" + + curl -sG ${LOKI_URI}/loki/api/v1/query_range?limit=1 --data-urlencode 'query={app="loki-test"}' | \ + jq -e '.data.result[].values[][1] == "foobar"' + } +kind: ConfigMap +metadata: + namespace: openebs + labels: + app: loki-stack + chart: loki-stack-2.9.11 + heritage: Helm + release: openebs + name: openebs-loki-stack-test +--- +apiVersion: v1 +data: + jwt-token.pem: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS3dJQkFBS0NBZ0VBNDdCVW45SkthS0MySEUvSUNRaEVTaDF2OXJvSk1KUHM5ZEVpMVRQa3NKZllFY2dJClRtVGNveHMzWFJvTWo0RkhsVStqT3Nub1VlYUZFNEdIUDZiZHNFM1pMNUtPNUxxVDNQR1oyL1Y4Rk16VnFoTzkKdFNDakRvaE9EUmNTRDF2MytPYlhVVnpiNDlNVnBlUU5yS016YUU1NHUvekFMSVE4QjZPL29KN2RtR2tINVpOSgpTV2VpSFdYN3M4SlpQQkZFNFFaR0R4NVl6SGZLQ3dldG1yUjlaTVRqRSt5SUJuaHlpbldLM3Y3WVZVOXJ3OEllCnU2Y3B0cmdKRnp3d3NidGNYMVJRQ25HbXhvZTd4d2kvMzJtdG52Z0hVSjJZaEJ0MDYvR3Zzb01Qb3NtNzhUMGkKeEg4dTV3Qng3aUoyOWtaRm95VGRzUFFrekZLeEw1ZFkreG9Ea2tDK1NLWlA1aXYrTmVRcDByUWc0SnU5K2R5dwo2RXdreGlyTzNwMkZwM2M2VE90TzdxdGpzZUFvTXhlYlJuWlFKVGpjT2R2WXVCQnZ1MGFtMlFCcGo5TVhlZ3YwClNTQmEzMXRUY2kwMHJMZGtjZ3R5dm5YRi8rS0ZhS1hxMFd3ODIyZUpaU04zaXl2RmQxK3dnWUpudTNjZFZEUTMKTGNYTDNzUFozZ2Jydy9uRmZualdnQ3UrdDdnS0hVd094OXV5OVZ3QUdDbWNGY2R4N01hT0NGbmxJeS9aOXV4SAp4ZVloQWpOeU04cHdKcnBYb0ZzTWVjZVZTenBoOG1Ya016SlNCbjQ4VGVyMGZYVVp1UDhVUnBjZ01kbXVHTXhzCjcxcFBQTzFnVTVPRUp0SVF4dXVoeERsKzZIY1dvMlVOYkJ5ZUVLN1pkUTVTendMeUxTWXA5ZWhjUWJFQ0F3RUEKQVFLQ0FnRUE0QUN1Z0w0RzdvQ09LYlJqL0Y3aHNIamRta0xVbjdJb3duNktZbTYzWXZWQVlkNEdMZm9WQjNMVApPUWxUcWl0cUhYOUgrNktBcVhLOUliK2hMQUlpd0QwV216TDQyaGFsT2cySGJWdEtRN3h4eU8yN0NlT2VCOElaCjU4NzJ1WjJsakg2dS95RDRSRjk3UU1Yb25odkJpN0VJSHdvK2xvMVI4Y0lyMlAzeXpPc29GYmlkdFZYN3JDaVYKUlBqRGlkRURqczc1Umc1NUZsQVR1bDVIY1poNGRSY3V3SDlJSS9XRDJxeGhmNW9CZzR5clhPQXlGRFFWV2VvZApKM3JUL1VkelRXWkppTHpmY3hvK3AwWDRYdmc5RTlTNGZadE9YVW9WOGJySlBEcXN1MTcxUkJUOWk0d0V2TWMzClR5MGhGSkYyR1ZjL3M4TytJRGFLazJPMjZ2Tmc1anFkWDdWdWpzSFh0ZWZUTEsrLy9aQlJxTTFYaXMzc1ovKzQKM0VOL3VVcHZiRmxzSkxQdmZ0OTJRSW16QWNDRng0NWxzQzVjK3BNMVJDaXNNOTNGZ2toZzF3bmYxeWM0bUhVRgpjc2FYa284b1RSZzl6ank0QWh2S0UraStjc1dzMHZycDl0UjVPQVMxRGpxQUoyNFdmQm1HOExhd0xHQXhUQWhUCnZKWmdtZlQ4TDF5cUNnelZhNXh2bDYybTJzQlRPQmI3OGx6MDJBNHRNYzhWbStWczFIUDduY001K1NMaERHTHoKZDVnUGFweldIS0lHeEVPd1dxMHZabjdIU1FTUXd5Qnc2d2tFcGtRSTd0VlIwTFg1YkcwNGM4bTBlL25mUmNkMwp0NDVIVDViRElTVFZRUFh2R01WODFiOVJaT0VCdDhURkRibG03UXBWck5lajlieTh5RUVDZ2dFQkFPV1YwQVlXCkNWZzd5YnBjWWZ6RnMwNGlCYjJJRkxQcExNRVJSYWVKdWp4ZWs0dFFyeWVFRHdBRFBlYWFNUDN6ZnExc2p3NTIKVE4xVG5WaDl2QmJRV0FBRDZ0bDUwRzhlZWdJaENtOXFxMnRFbU8zNjZlMWpxa2lIbEpHeWNrQW03ZG1rWXgzUgp0RFdRZEM2b1ptVENiSWpQTGRZTngzRWN2OWZ6NHl6TnZNR1FOVFpkZE8yaStBcUpYempvZDI1QkYxTEcvYitvCjJ4OW45bDljbmdKQkhrTW5va0pYRHArQW1UYjE1dkgybm1wYWNVb1RDd3V4ZEo2ZllKY2pZMDJYNWR4WGU5bHkKQnJSYkhBU3BuY0czelh0OXFaWlpUa2pxRDluNzU4WFUyejc2VU1relJFaHZKcEkrWWUzR3NTREtRTE5SMXpjVQpCT0RrLzQycUlyREh5clVDZ2dFQkFQM2lxVDY3NnlhclFIbGR6ZmFJRmZDUGN6cDFoUUZickV2TXc4YnBCaXY1CllXTFJjK2k5RlAyeU1nRGFLTmtSaTNzek1kUnVjQWJwUkFIaWE2bXpRNTRFdm05YnJDTXdmRnJYVHI0OWhualMKRHNNT2tqZEVOZ3VIdzRUVVNUMGs5eW55TnZacXViTWVKWlBhNmhCTUgzVzczbTZzNDdkK2xibzBjdGpibis3egowZGNuUmZKT2FRRENSVW5GOVF2ajlncHAvNFd5NjF5d3VPaElndjZ1OUZNbWU5MXFIWlZrWFJjN01MUnRRdFFICkx3Q1NIS0Y1MldHMEdqbHN0K1dEbXpBbHk2RG9paUJHK3NCeCtSWHBWK2Z4ODN1YlFQVVVzQ2Rsd2xIcitQTGsKYnhWRm5ObVNjRXBmQ0VwaHNuSVMxQ0k3Q2tYRHdrUTM3M1hueUVtZ3JJMENnZ0VCQU5oNStVc3p6aDNmU2lncAo0Yzc1RDBmVjlybXVyVzZ5cDV0b1VOaFhtajVBSXprU25BVlRsTjA3TVV2V0NlbjZoWEM2MHUwZENQOE1UMm5ZCkxOa0tIRi92VWFzOEhCZ2FrWXFlWXZ1SmhoYS8rTDgwZnd4eWxHYU5TTDVVbHp2OE9QdWw4RHQydDBobWE5WnUKdlJXMjZhWGFUR3J3VlNWSHFYRFRxMXBjcCtXUHQwMEt0QzA2SkUyekdCRk55UWN4NHU4UGFNWW1UbTcvbFNSMwo3UmxORTE3WTZUdEtZU1J1bW9sak5oN2lucDdEcHR6a3RkNlJ0ZGUzaWRrWTZoS0k3cGxqK0FpaFpzYjZ2YUY3CjJaK0dVdjlsRHRvUVhTdU5YK0wzanFSUVAyYlRtZ2NOQ3c2Tmw3My9pbEVzcjJtdXEzRXA4eGNoRGpTTVdKYlkKWEp0NTE1MENnZ0VCQUxPWFhXOHlFUEptbTVIK3FBNG5UNVcrYzUwN3VsMHVrdDkvdGxHRFRzbFdlK3dpQzZMcgo5ZWhMNEJFNFFVTGpwVTM5OWRhMlZHcWZJV3RQMWliUjF4ZjFkUnhpdFk2aTRxU0R2NERWRnNWcW1lU2k3dzFICkpBL2Q5cEdFZFZaYVNyaVNUUXpjakFYSFluK0hrS0Q4cUJocFQ3dnNjcHkvWDN5N1V5NVJsWDI3WFltYmoyQUsKMVQ0akxrNDBTTllqYUUwUGxCL29ZNU5LczFJazBQMEZsM0VtUE9Kd0NRTS9YcFpyV1ZXWUlIakpxQmI0UkdaNQpRaXRaOGw4Q3A4Y2o1R2dYcEVacm1DR2k5QWVqMTdZSFBSYW0wVHh6bzJ4Nk9PMTFqeExTSUdUNDhCY1ZDaEhpCkE2cW9OTDRoQTlDcnZ3R0QwQTF2bjRFUUxFUzBNN3JaZkpVQ2dnRUJBS1hKb2dJaFhDUDJSR0RWNVNhTjVvNzUKdGEyYTZsS05KcFJXb1YvVnN4eGhUY2RKeS9UbjBtZk9kYlBITWNuR0dpWjhUQXoybUxRUnBBcnpXQkUwVGZBWgpobS8rNDZyMXhEVGR4Ny9TWE85VWg3MU0zWGIxR2ZvNWZmTkFDbDNXZ3FVeTBRSS9KaWd5UUxBR1dxWnpRNG4yCkRtVDcyR041OWJycmtlcGlTZ2VZRGYxYlIwdzg4dG5aaEg5QmZOMys3RWtRN2szb3I3YmNZYmJYZlA2ejVlVzcKdFVZTkxxdkJlVk9udXo1cXBtbTFhY2k3dTJiRTc5QjN4aHYzWnVnT3h5WGdQZnJhNll4cVhwTWVGcFV5NnNmTQpyL3laRWNOY1hrbHVJSmhQVDVCdVFZNjFUZ2JqdlAyc1AyV3d1U3hGTFFTYlZ2ZVg4WjFLMTNtQkJDcEx2OGs9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: etcd + helm.sh/chart: etcd-8.6.0 + name: openebs-etcd-jwt-token + namespace: openebs +type: Opaque +--- +apiVersion: v1 +data: + loki.yaml: YXV0aF9lbmFibGVkOiBmYWxzZQpjaHVua19zdG9yZV9jb25maWc6CiAgbWF4X2xvb2tfYmFja19wZXJpb2Q6IDBzCmNvbXBhY3RvcjoKICBjb21wYWN0aW9uX2ludGVydmFsOiAyMG0KICByZXRlbnRpb25fZGVsZXRlX2RlbGF5OiAxaAogIHJldGVudGlvbl9kZWxldGVfd29ya2VyX2NvdW50OiA1MAogIHJldGVudGlvbl9lbmFibGVkOiB0cnVlCiAgc2hhcmVkX3N0b3JlOiBmaWxlc3lzdGVtCiAgd29ya2luZ19kaXJlY3Rvcnk6IC9kYXRhL2xva2kvYm9sdGRiLXNoaXBwZXItY29tcGFjdG9yCmluZ2VzdGVyOgogIGNodW5rX2Jsb2NrX3NpemU6IDI2MjE0NAogIGNodW5rX2lkbGVfcGVyaW9kOiAzbQogIGNodW5rX3JldGFpbl9wZXJpb2Q6IDFtCiAgbGlmZWN5Y2xlcjoKICAgIHJpbmc6CiAgICAgIHJlcGxpY2F0aW9uX2ZhY3RvcjogMQogIG1heF90cmFuc2Zlcl9yZXRyaWVzOiAwCiAgd2FsOgogICAgZGlyOiAvZGF0YS9sb2tpL3dhbApsaW1pdHNfY29uZmlnOgogIGVuZm9yY2VfbWV0cmljX25hbWU6IGZhbHNlCiAgbWF4X2VudHJpZXNfbGltaXRfcGVyX3F1ZXJ5OiA1MDAwCiAgcmVqZWN0X29sZF9zYW1wbGVzOiB0cnVlCiAgcmVqZWN0X29sZF9zYW1wbGVzX21heF9hZ2U6IDE2OGgKICByZXRlbnRpb25fcGVyaW9kOiAxNjhoCm1lbWJlcmxpc3Q6CiAgam9pbl9tZW1iZXJzOgogIC0gJ29wZW5lYnMtbG9raS1tZW1iZXJsaXN0JwpzY2hlbWFfY29uZmlnOgogIGNvbmZpZ3M6CiAgLSBmcm9tOiAiMjAyMC0xMC0yNCIKICAgIGluZGV4OgogICAgICBwZXJpb2Q6IDI0aAogICAgICBwcmVmaXg6IGluZGV4XwogICAgb2JqZWN0X3N0b3JlOiBmaWxlc3lzdGVtCiAgICBzY2hlbWE6IHYxMQogICAgc3RvcmU6IGJvbHRkYi1zaGlwcGVyCnNlcnZlcjoKICBncnBjX2xpc3Rlbl9wb3J0OiA5MDk1CiAgaHR0cF9saXN0ZW5fcG9ydDogMzEwMApzdG9yYWdlX2NvbmZpZzoKICBib2x0ZGJfc2hpcHBlcjoKICAgIGFjdGl2ZV9pbmRleF9kaXJlY3Rvcnk6IC9kYXRhL2xva2kvYm9sdGRiLXNoaXBwZXItYWN0aXZlCiAgICBjYWNoZV9sb2NhdGlvbjogL2RhdGEvbG9raS9ib2x0ZGItc2hpcHBlci1jYWNoZQogICAgY2FjaGVfdHRsOiAyNGgKICAgIHNoYXJlZF9zdG9yZTogZmlsZXN5c3RlbQogIGZpbGVzeXN0ZW06CiAgICBkaXJlY3Rvcnk6IC9kYXRhL2xva2kvY2h1bmtzCnRhYmxlX21hbmFnZXI6CiAgcmV0ZW50aW9uX2RlbGV0ZXNfZW5hYmxlZDogZmFsc2UKICByZXRlbnRpb25fcGVyaW9kOiAwcw== +kind: Secret +metadata: + labels: + app: loki + chart: loki-2.16.0 + heritage: Helm + release: openebs + name: openebs-loki + namespace: openebs +--- +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: promtail + app.kubernetes.io/version: 2.8.3 + helm.sh/chart: promtail-6.13.1 + name: openebs-promtail + namespace: openebs +stringData: + promtail.yaml: "server:\n log_level: info\n log_format: logfmt\n http_listen_port: + 3101\n health_check_target: false\n\nclients:\n - url: http://openebs-loki:3100/loki/api/v1/push\n\npositions:\n + \ filename: /run/promtail/positions.yaml\n\nscrape_configs:\n - job_name: openebs-pods-name\n + \ pipeline_stages:\n - docker: {}\n - replace:\n expression: + '(\\n)'\n replace: ''\n - multiline:\n firstline: '^ \\x1b\\[2m(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}).(\\d{6})Z'\n + \ max_wait_time: 3s\n - multiline:\n firstline: '^ (\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}).(\\d{6})Z'\n + \ max_wait_time: 3s\n kubernetes_sd_configs:\n - role: pod\n relabel_configs:\n + \ - source_labels:\n - __meta_kubernetes_pod_node_name\n target_label: + hostname\n action: replace\n - action: labelmap\n regex: __meta_kubernetes_pod_label_(.+)\n + \ - action: keep\n source_labels:\n - __meta_kubernetes_pod_label_openebs_io_logging\n + \ regex: true\n target_label: openebs_component\n - action: replace\n + \ replacement: $1\n separator: /\n source_labels:\n - __meta_kubernetes_namespace\n + \ target_label: job\n - action: replace\n source_labels:\n - + __meta_kubernetes_pod_name\n target_label: pod\n - action: replace\n source_labels:\n + \ - __meta_kubernetes_pod_container_name\n target_label: container\n + \ - replacement: /var/log/pods/*$1/*.log\n separator: /\n source_labels:\n + \ - __meta_kubernetes_pod_uid\n - __meta_kubernetes_pod_container_name\n + \ target_label: __path__\n \n \n\nlimits_config:\n \n\ntracing:\n enabled: + false\n" +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: etcd + helm.sh/chart: etcd-8.6.0 + name: openebs-etcd + namespace: openebs +spec: + ports: + - name: client + nodePort: null + port: 2379 + targetPort: client + - name: peer + nodePort: null + port: 2380 + targetPort: peer + selector: + app.kubernetes.io/instance: openebs + app.kubernetes.io/name: etcd + sessionAffinity: None + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + annotations: + service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: etcd + helm.sh/chart: etcd-8.6.0 + name: openebs-etcd-headless + namespace: openebs +spec: + clusterIP: None + ports: + - name: client + port: 2379 + targetPort: client + - name: peer + port: 2380 + targetPort: peer + publishNotReadyAddresses: true + selector: + app.kubernetes.io/instance: openebs + app.kubernetes.io/name: etcd + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: loki + chart: loki-2.16.0 + heritage: Helm + release: openebs + name: openebs-loki + namespace: openebs +spec: + ports: + - name: http-metrics + port: 3100 + protocol: TCP + targetPort: http-metrics + selector: + app: loki + release: openebs + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: loki + chart: loki-2.16.0 + heritage: Helm + release: openebs + variant: headless + name: openebs-loki-headless + namespace: openebs +spec: + clusterIP: None + ports: + - name: http-metrics + port: 3100 + protocol: TCP + targetPort: http-metrics + selector: + app: loki + release: openebs +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: loki + chart: loki-2.16.0 + heritage: Helm + release: openebs + name: openebs-loki-memberlist + namespace: openebs +spec: + clusterIP: None + ports: + - name: http + port: 7946 + protocol: TCP + targetPort: memberlist-port + publishNotReadyAddresses: true + selector: + app: loki + release: openebs + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: nats + app.kubernetes.io/version: 2.9.17 + helm.sh/chart: nats-0.19.14 + name: openebs-nats + namespace: openebs +spec: + clusterIP: None + ports: + - appProtocol: tcp + name: client + port: 4222 + - appProtocol: tcp + name: cluster + port: 6222 + - appProtocol: http + name: monitor + port: 8222 + - appProtocol: http + name: metrics + port: 7777 + - appProtocol: tcp + name: leafnodes + port: 7422 + - appProtocol: tcp + name: gateways + port: 7522 + publishNotReadyAddresses: true + selector: + app.kubernetes.io/instance: openebs + app.kubernetes.io/name: nats +--- +apiVersion: v1 +kind: Service +metadata: + namespace: openebs + labels: + app: agent-core + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-agent-core +spec: + ports: + - name: grpc + port: 50051 + - name: ha-cluster + port: 50052 + selector: + app: agent-core + openebs.io/release: openebs +--- +apiVersion: v1 +kind: Service +metadata: + namespace: openebs + labels: + app: api-rest + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-api-rest +spec: + ports: + - name: https + port: 8080 + protocol: TCP + targetPort: 8080 + - name: http + port: 8081 + protocol: TCP + targetPort: 8081 + selector: + app: api-rest + openebs.io/release: openebs + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + namespace: openebs + labels: + app: metrics-exporter-io-engine + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-metrics-exporter-io-engine +spec: + ports: + - name: metrics + port: 9502 + protocol: TCP + targetPort: 9502 + selector: + app: io-engine + openebs.io/release: openebs +--- +apiVersion: v1 +kind: Service +metadata: + namespace: openebs + labels: + app: obs-callhome + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-obs-callhome-stats +spec: + ports: + - name: https + port: 9090 + protocol: TCP + targetPort: 9090 + - name: http + port: 9091 + protocol: TCP + targetPort: 9091 + selector: + app: obs-callhome + openebs.io/release: openebs +--- +apiVersion: scheduling.k8s.io/v1 +description: Used for critical pods that must run in the cluster, which can be moved + to another node if necessary. +kind: PriorityClass +metadata: + namespace: openebs + name: openebs-cluster-critical +preemptionPolicy: PreemptLowerPriority +value: 1000000000 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: openebs + labels: + app: agent-core + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-agent-core +spec: + replicas: 1 + selector: + matchLabels: + app: agent-core + openebs.io/release: openebs + template: + metadata: + namespace: openebs + labels: + app: agent-core + openebs.io/logging: "true" + openebs.io/release: openebs + openebs.io/version: 2.8.0 + spec: + containers: + - args: + - --store=openebs-etcd:2379 + - --request-timeout=5s + - --cache-period=30s + - --grpc-server-addr=[::]:50051 + - --pool-commitment=250% + - --snapshot-commitment=40% + - --volume-commitment-initial=40% + - --volume-commitment=40% + - --events-url=nats://openebs-nats:4222 + - --fmt-style=pretty + - --ansi-colors=true + - --create-volume-limit=10 + env: + - name: RUST_LOG + value: info + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: docker.io/openebs/mayastor-agent-core:v2.8.0 + imagePullPolicy: IfNotPresent + name: agent-core + ports: + - containerPort: 50051 + resources: + limits: + cpu: 1000m + memory: 128Mi + requests: + cpu: 500m + memory: 32Mi + - args: + - -g=[::]:50052 + - --store=http://openebs-etcd:2379 + - --core-grpc=https://openebs-agent-core:50051 + - --events-url=nats://openebs-nats:4222 + - --ansi-colors=true + - --fmt-style=pretty + env: + - name: RUST_LOG + value: info + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: docker.io/openebs/mayastor-agent-ha-cluster:v2.8.0 + imagePullPolicy: IfNotPresent + name: agent-ha-cluster + ports: + - containerPort: 50052 + resources: + limits: + cpu: 100m + memory: 64Mi + requests: + cpu: 100m + memory: 16Mi + imagePullSecrets: null + initContainers: + - command: + - sh + - -c + - trap "exit 1" TERM; until nc -vzw 5 openebs-etcd 2379; do date; echo "Waiting + for etcd..."; sleep 1; done; + image: docker.io/openebs/alpine-sh:4.1.0 + imagePullPolicy: IfNotPresent + name: etcd-probe + nodeSelector: + kubernetes.io/arch: amd64 + priorityClassName: openebs-cluster-critical + serviceAccountName: openebs-service-account + tolerations: + - effect: NoExecute + key: node.kubernetes.io/unreachable + operator: Exists + tolerationSeconds: 5 + - effect: NoExecute + key: node.kubernetes.io/not-ready + operator: Exists + tolerationSeconds: 5 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: openebs + labels: + app: api-rest + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-api-rest +spec: + replicas: 1 + selector: + matchLabels: + app: api-rest + openebs.io/release: openebs + template: + metadata: + namespace: openebs + labels: + app: api-rest + openebs.io/logging: "true" + openebs.io/release: openebs + openebs.io/version: 2.8.0 + spec: + containers: + - args: + - --dummy-certificates + - --no-auth + - --http=[::]:8081 + - --request-timeout=5s + - --core-grpc=https://openebs-agent-core:50051 + - --ansi-colors=true + - --fmt-style=pretty + - --core-health-freq=20s + env: + - name: RUST_LOG + value: info + image: docker.io/openebs/mayastor-api-rest:v2.8.0 + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 1 + httpGet: + path: /live + port: 8081 + initialDelaySeconds: 0 + periodSeconds: 30 + timeoutSeconds: 5 + name: api-rest + ports: + - containerPort: 8080 + - containerPort: 8081 + readinessProbe: + failureThreshold: 2 + httpGet: + path: /ready + port: 8081 + initialDelaySeconds: 0 + periodSeconds: 20 + timeoutSeconds: 5 + resources: + limits: + cpu: 100m + memory: 64Mi + requests: + cpu: 50m + memory: 32Mi + imagePullSecrets: null + initContainers: + - command: + - sh + - -c + - trap "exit 1" TERM; until nc -vzw 5 openebs-agent-core 50051; do date; echo + "Waiting for agent-core-grpc services..."; sleep 1; done; + image: docker.io/openebs/alpine-sh:4.1.0 + imagePullPolicy: IfNotPresent + name: agent-core-grpc-probe + - command: + - sh + - -c + - trap "exit 1" TERM; until nc -vzw 5 openebs-etcd 2379; do date; echo "Waiting + for etcd..."; sleep 1; done; + image: docker.io/openebs/alpine-sh:4.1.0 + imagePullPolicy: IfNotPresent + name: etcd-probe + nodeSelector: + kubernetes.io/arch: amd64 + priorityClassName: openebs-cluster-critical + tolerations: + - effect: NoExecute + key: node.kubernetes.io/unreachable + operator: Exists + tolerationSeconds: 5 + - effect: NoExecute + key: node.kubernetes.io/not-ready + operator: Exists + tolerationSeconds: 5 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: openebs + labels: + app: csi-controller + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-csi-controller +spec: + replicas: 1 + selector: + matchLabels: + app: csi-controller + openebs.io/release: openebs + template: + metadata: + namespace: openebs + labels: + app: csi-controller + openebs.io/logging: "true" + openebs.io/release: openebs + openebs.io/version: 2.8.0 + spec: + containers: + - args: + - --v=2 + - --csi-address=$(ADDRESS) + - --feature-gates=Topology=true + - --strict-topology=false + - --default-fstype=ext4 + - --extra-create-metadata + - --timeout=36s + - --worker-threads=10 + - --prevent-volume-mode-conversion + env: + - name: ADDRESS + value: /var/lib/csi/sockets/pluginproxy/csi.sock + image: registry.k8s.io/sig-storage/csi-provisioner:v3.5.0 + imagePullPolicy: IfNotPresent + name: csi-provisioner + volumeMounts: + - mountPath: /var/lib/csi/sockets/pluginproxy/ + name: socket-dir + - args: + - --v=2 + - --timeout=36s + - --csi-address=$(ADDRESS) + env: + - name: ADDRESS + value: /var/lib/csi/sockets/pluginproxy/csi.sock + image: registry.k8s.io/sig-storage/csi-attacher:v4.3.0 + imagePullPolicy: IfNotPresent + name: csi-attacher + volumeMounts: + - mountPath: /var/lib/csi/sockets/pluginproxy/ + name: socket-dir + - args: + - --v=2 + - --csi-address=$(ADDRESS) + env: + - name: ADDRESS + value: /var/lib/csi/sockets/pluginproxy/csi.sock + image: registry.k8s.io/sig-storage/csi-snapshotter:v6.3.3 + imagePullPolicy: IfNotPresent + name: csi-snapshotter + volumeMounts: + - mountPath: /var/lib/csi/sockets/pluginproxy/ + name: socket-dir + - args: + - --v=2 + - --leader-election=false + - --prevent-volume-mode-conversion + image: registry.k8s.io/sig-storage/snapshot-controller:v6.3.3 + imagePullPolicy: IfNotPresent + name: csi-snapshot-controller + - args: + - --v=2 + - --csi-address=$(ADDRESS) + - --handle-volume-inuse-error=false + env: + - name: ADDRESS + value: /var/lib/csi/sockets/pluginproxy/csi.sock + image: registry.k8s.io/sig-storage/csi-resizer:v1.9.3 + imagePullPolicy: IfNotPresent + name: csi-resizer + volumeMounts: + - mountPath: /var/lib/csi/sockets/pluginproxy/ + name: socket-dir + - args: + - --csi-socket=/var/lib/csi/sockets/pluginproxy/csi.sock + - --rest-endpoint=http://openebs-api-rest:8081 + - --node-selector=openebs.io/csi-node=mayastor + - --ansi-colors=true + - --fmt-style=pretty + - --create-volume-limit=10 + env: + - name: RUST_LOG + value: info + image: docker.io/openebs/mayastor-csi-controller:v2.8.0 + imagePullPolicy: IfNotPresent + name: csi-controller + resources: + limits: + cpu: 32m + memory: 128Mi + requests: + cpu: 16m + memory: 64Mi + volumeMounts: + - mountPath: /var/lib/csi/sockets/pluginproxy/ + name: socket-dir + dnsPolicy: ClusterFirstWithHostNet + hostNetwork: true + imagePullSecrets: null + initContainers: + - command: + - sh + - -c + - trap "exit 1" TERM; until nc -vzw 5 openebs-api-rest 8081; do date; echo + "Waiting for REST API endpoint to become available"; sleep 1; done; + image: docker.io/openebs/alpine-sh:4.1.0 + imagePullPolicy: IfNotPresent + name: api-rest-probe + nodeSelector: + kubernetes.io/arch: amd64 + priorityClassName: openebs-cluster-critical + serviceAccountName: openebs-service-account + tolerations: + - effect: NoExecute + key: node.kubernetes.io/unreachable + operator: Exists + tolerationSeconds: 5 + - effect: NoExecute + key: node.kubernetes.io/not-ready + operator: Exists + tolerationSeconds: 5 + volumes: + - emptyDir: null + name: socket-dir +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: openebs + labels: + app: localpv-provisioner + chart: localpv-provisioner-4.2.0 + component: localpv-provisioner + heritage: Helm + openebs.io/component-name: openebs-localpv-provisioner + release: openebs + name: openebs-localpv-provisioner +spec: + replicas: 1 + selector: + matchLabels: + app: localpv-provisioner + component: localpv-provisioner + release: openebs + strategy: + rollingUpdate: null + type: Recreate + template: + metadata: + namespace: openebs + labels: + app: localpv-provisioner + chart: localpv-provisioner-4.2.0 + component: localpv-provisioner + heritage: Helm + name: openebs-localpv-provisioner + openebs.io/component-name: openebs-localpv-provisioner + release: openebs + spec: + containers: + - env: + - name: OPENEBS_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: OPENEBS_SERVICE_ACCOUNT + valueFrom: + fieldRef: + fieldPath: spec.serviceAccountName + - name: OPENEBS_IO_ENABLE_ANALYTICS + value: "true" + - name: OPENEBS_IO_BASE_PATH + value: /var/openebs/local + - name: OPENEBS_IO_HELPER_IMAGE + value: openebs/linux-utils:4.1.0 + - name: OPENEBS_IO_HELPER_POD_HOST_NETWORK + value: "false" + - name: OPENEBS_IO_INSTALLER_TYPE + value: localpv-charts-helm + - name: LEADER_ELECTION_ENABLED + value: "true" + image: openebs/provisioner-localpv:4.2.0 + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - sh + - -c + - test `pgrep -c "^provisioner-loc.*"` = 1 + initialDelaySeconds: 30 + periodSeconds: 60 + name: openebs-localpv-provisioner + resources: null + securityContext: {} + serviceAccountName: openebs-localpv-provisioner + tolerations: + - effect: NoExecute + key: node.kubernetes.io/unreachable + operator: Exists + tolerationSeconds: 5 + - effect: NoExecute + key: node.kubernetes.io/not-ready + operator: Exists + tolerationSeconds: 5 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: openebs + labels: + app: obs-callhome + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-obs-callhome +spec: + replicas: 1 + selector: + matchLabels: + app: obs-callhome + openebs.io/release: openebs + template: + metadata: + namespace: openebs + labels: + app: obs-callhome + openebs.io/logging: "true" + openebs.io/release: openebs + openebs.io/version: 2.8.0 + spec: + containers: + - args: + - -e http://openebs-api-rest:8081 + - -n openebs + - --aggregator-url=http://openebs-obs-callhome-stats:9090/stats + - --send-report + env: + - name: RUST_LOG + value: info + image: docker.io/openebs/mayastor-obs-callhome:v2.8.0 + imagePullPolicy: IfNotPresent + name: obs-callhome + resources: + limits: + cpu: 100m + memory: 32Mi + requests: + cpu: 50m + memory: 16Mi + - args: + - --namespace=openebs + - --release-name=openebs + - --mbus-url=nats://openebs-nats:4222 + - --ansi-colors=true + - --fmt-style=pretty + env: + - name: RUST_LOG + value: info + image: docker.io/openebs/mayastor-obs-callhome-stats:v2.8.0 + imagePullPolicy: IfNotPresent + name: obs-callhome-stats + ports: + - containerPort: 9090 + name: stats + protocol: TCP + resources: + limits: + cpu: 100m + memory: 32Mi + requests: + cpu: 50m + memory: 16Mi + imagePullSecrets: null + nodeSelector: + kubernetes.io/arch: amd64 + serviceAccountName: openebs-service-account +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: openebs + labels: + app: operator-diskpool + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-operator-diskpool +spec: + replicas: 1 + selector: + matchLabels: + app: operator-diskpool + openebs.io/release: openebs + template: + metadata: + namespace: openebs + labels: + app: operator-diskpool + openebs.io/logging: "true" + openebs.io/release: openebs + openebs.io/version: 2.8.0 + spec: + containers: + - args: + - -e http://openebs-api-rest:8081 + - -nopenebs + - --request-timeout=5s + - --interval=30s + - --ansi-colors=true + - --fmt-style=pretty + env: + - name: RUST_LOG + value: info + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + image: docker.io/openebs/mayastor-operator-diskpool:v2.8.0 + imagePullPolicy: IfNotPresent + name: operator-diskpool + resources: + limits: + cpu: 100m + memory: 32Mi + requests: + cpu: 50m + memory: 16Mi + imagePullSecrets: null + initContainers: + - command: + - sh + - -c + - trap "exit 1" TERM; until nc -vzw 5 openebs-agent-core 50051; do date; echo + "Waiting for agent-core-grpc services..."; sleep 1; done; + image: docker.io/openebs/alpine-sh:4.1.0 + imagePullPolicy: IfNotPresent + name: agent-core-grpc-probe + - command: + - sh + - -c + - trap "exit 1" TERM; until nc -vzw 5 openebs-etcd 2379; do date; echo "Waiting + for etcd..."; sleep 1; done; + image: docker.io/openebs/alpine-sh:4.1.0 + imagePullPolicy: IfNotPresent + name: etcd-probe + nodeSelector: + kubernetes.io/arch: amd64 + priorityClassName: openebs-cluster-critical + serviceAccountName: openebs-service-account + tolerations: + - effect: NoExecute + key: node.kubernetes.io/unreachable + operator: Exists + tolerationSeconds: 5 + - effect: NoExecute + key: node.kubernetes.io/not-ready + operator: Exists + tolerationSeconds: 5 +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: etcd + helm.sh/chart: etcd-8.6.0 + name: openebs-etcd + namespace: openebs +spec: + podManagementPolicy: Parallel + replicas: 3 + selector: + matchLabels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/name: etcd + serviceName: openebs-etcd-headless + template: + metadata: + namespace: openebs + annotations: + checksum/token-secret: c5108ec83485c41774c75526a02ea8ac574f6311f6aaec2fbba0630a57dd5277 + labels: + app: etcd + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: etcd + helm.sh/chart: etcd-8.6.0 + openebs.io/logging: "true" + spec: + affinity: + nodeAffinity: null + podAffinity: null + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchLabels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/name: etcd + topologyKey: kubernetes.io/hostname + containers: + - env: + - name: BITNAMI_DEBUG + value: "false" + - name: MY_POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_STS_NAME + value: openebs-etcd + - name: ETCDCTL_API + value: "3" + - name: ETCD_ON_K8S + value: "yes" + - name: ETCD_START_FROM_SNAPSHOT + value: "no" + - name: ETCD_DISASTER_RECOVERY + value: "no" + - name: ETCD_NAME + value: $(MY_POD_NAME) + - name: ETCD_DATA_DIR + value: /bitnami/etcd/data + - name: ETCD_LOG_LEVEL + value: info + - name: ALLOW_NONE_AUTHENTICATION + value: "yes" + - name: ETCD_AUTH_TOKEN + value: jwt,priv-key=/opt/bitnami/etcd/certs/token/jwt-token.pem,sign-method=RS256,ttl=10m + - name: ETCD_ADVERTISE_CLIENT_URLS + value: http://$(MY_POD_NAME).openebs-etcd-headless.openebs.svc.cluster.local:2379,http://openebs-etcd.openebs.svc.cluster.local:2379 + - name: ETCD_LISTEN_CLIENT_URLS + value: http://0.0.0.0:2379 + - name: ETCD_INITIAL_ADVERTISE_PEER_URLS + value: http://$(MY_POD_NAME).openebs-etcd-headless.openebs.svc.cluster.local:2380 + - name: ETCD_LISTEN_PEER_URLS + value: http://0.0.0.0:2380 + - name: ETCD_AUTO_COMPACTION_MODE + value: revision + - name: ETCD_AUTO_COMPACTION_RETENTION + value: "100" + - name: ETCD_INITIAL_CLUSTER_TOKEN + value: etcd-cluster-k8s + - name: ETCD_INITIAL_CLUSTER_STATE + value: new + - name: ETCD_INITIAL_CLUSTER + value: openebs-etcd-0=http://openebs-etcd-0.openebs-etcd-headless.openebs.svc.cluster.local:2380,openebs-etcd-1=http://openebs-etcd-1.openebs-etcd-headless.openebs.svc.cluster.local:2380,openebs-etcd-2=http://openebs-etcd-2.openebs-etcd-headless.openebs.svc.cluster.local:2380 + - name: ETCD_CLUSTER_DOMAIN + value: openebs-etcd-headless.openebs.svc.cluster.local + - name: ETCD_QUOTA_BACKEND_BYTES + value: "8589934592" + envFrom: null + image: docker.io/bitnami/etcd:3.5.6-debian-11-r10 + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /opt/bitnami/scripts/etcd/healthcheck.sh + failureThreshold: 5 + initialDelaySeconds: 60 + periodSeconds: 30 + successThreshold: 1 + timeoutSeconds: 5 + name: etcd + ports: + - containerPort: 2379 + name: client + protocol: TCP + - containerPort: 2380 + name: peer + protocol: TCP + readinessProbe: + exec: + command: + - /opt/bitnami/scripts/etcd/healthcheck.sh + failureThreshold: 5 + initialDelaySeconds: 60 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + resources: + limits: {} + requests: {} + securityContext: + allowPrivilegeEscalation: false + runAsNonRoot: true + runAsUser: 1001 + volumeMounts: + - mountPath: /bitnami/etcd + name: data + - mountPath: /opt/bitnami/etcd/certs/token/ + name: etcd-jwt-token + readOnly: true + initContainers: + - command: + - /bin/bash + - -ec + - | + chown -R 1001:1001 /bitnami/etcd + image: docker.io/openebs/alpine-bash:4.1.0 + imagePullPolicy: IfNotPresent + name: volume-permissions + resources: + limits: {} + requests: {} + securityContext: + runAsUser: 0 + volumeMounts: + - mountPath: /bitnami/etcd + name: data + securityContext: + fsGroup: 1001 + serviceAccountName: default + volumes: + - name: etcd-jwt-token + secret: + defaultMode: 256 + secretName: openebs-etcd-jwt-token + updateStrategy: + type: RollingUpdate + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 2Gi + storageClassName: mayastor-etcd-localpv +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app: loki + chart: loki-2.16.0 + heritage: Helm + release: openebs + name: openebs-loki + namespace: openebs +spec: + podManagementPolicy: OrderedReady + replicas: 1 + selector: + matchLabels: + app: loki + release: openebs + serviceName: openebs-loki-headless + template: + metadata: + namespace: openebs + annotations: + checksum/config: d754b334e2f0f83d14eaa66553982a27439f3f6a19d4625cb63ced56e32602c1 + prometheus.io/port: http-metrics + prometheus.io/scrape: "true" + labels: + app: loki + name: openebs-loki + release: openebs + spec: + affinity: {} + containers: + - args: + - -config.file=/etc/loki/loki.yaml + env: null + image: grafana/loki:2.6.1 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /ready + port: http-metrics + initialDelaySeconds: 45 + name: loki + ports: + - containerPort: 3100 + name: http-metrics + protocol: TCP + - containerPort: 9095 + name: grpc + protocol: TCP + - containerPort: 7946 + name: memberlist-port + protocol: TCP + readinessProbe: + httpGet: + path: /ready + port: http-metrics + initialDelaySeconds: 45 + resources: {} + securityContext: + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /tmp + name: tmp + - mountPath: /etc/loki + name: config + - mountPath: /data + name: storage + subPath: null + initContainers: + - command: + - /bin/sh + - -ec + - chown -R 1001:1001 /data + image: docker.io/openebs/alpine-sh:4.1.0 + imagePullPolicy: IfNotPresent + name: volume-permissions + securityContext: + runAsUser: 0 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data + name: storage + nodeSelector: {} + securityContext: + fsGroup: 1001 + runAsGroup: 1001 + runAsNonRoot: false + runAsUser: 1001 + serviceAccountName: openebs-loki + terminationGracePeriodSeconds: 4800 + tolerations: [] + volumes: + - emptyDir: {} + name: tmp + - name: config + secret: + secretName: openebs-loki + updateStrategy: + type: RollingUpdate + volumeClaimTemplates: + - metadata: + annotations: {} + labels: {} + name: storage + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + storageClassName: mayastor-loki-localpv +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: nats + app.kubernetes.io/version: 2.9.17 + helm.sh/chart: nats-0.19.14 + name: openebs-nats + namespace: openebs +spec: + podManagementPolicy: Parallel + replicas: 3 + selector: + matchLabels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/name: nats + serviceName: openebs-nats + template: + metadata: + namespace: openebs + annotations: + checksum/config: e4e59e32c0128fae11bf52af4b733c364d878e4619792f720850b606df60fbd2 + prometheus.io/path: /metrics + prometheus.io/port: "7777" + prometheus.io/scrape: "true" + labels: + app: nats + app.kubernetes.io/instance: openebs + app.kubernetes.io/name: nats + openebs.io/logging: "true" + spec: + containers: + - command: + - nats-server + - --config + - /etc/nats-config/nats.conf + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: SERVER_NAME + value: $(POD_NAME) + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: CLUSTER_ADVERTISE + value: $(POD_NAME).openebs-nats.$(POD_NAMESPACE) + image: nats:2.9.17-alpine + imagePullPolicy: IfNotPresent + lifecycle: + preStop: + exec: + command: + - nats-server + - -sl=ldm=/var/run/nats/nats.pid + livenessProbe: + failureThreshold: 3 + httpGet: + path: / + port: 8222 + initialDelaySeconds: 10 + periodSeconds: 30 + successThreshold: 1 + timeoutSeconds: 5 + name: nats + ports: + - containerPort: 4222 + name: client + - containerPort: 6222 + name: cluster + - containerPort: 8222 + name: monitor + readinessProbe: + failureThreshold: 3 + httpGet: + path: / + port: 8222 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + resources: {} + startupProbe: + failureThreshold: 90 + httpGet: + path: /healthz + port: 8222 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + volumeMounts: + - mountPath: /etc/nats-config + name: config-volume + - mountPath: /var/run/nats + name: pid + - command: + - nats-server-config-reloader + - -pid + - /var/run/nats/nats.pid + - -config + - /etc/nats-config/nats.conf + image: natsio/nats-server-config-reloader:0.10.1 + imagePullPolicy: IfNotPresent + name: reloader + resources: {} + volumeMounts: + - mountPath: /etc/nats-config + name: config-volume + - mountPath: /var/run/nats + name: pid + - args: + - -connz + - -routez + - -subz + - -varz + - -prefix=nats + - -use_internal_server_id + - -jsz=all + - http://localhost:8222/ + image: natsio/prometheus-nats-exporter:0.11.0 + imagePullPolicy: IfNotPresent + name: metrics + ports: + - containerPort: 7777 + name: metrics + resources: {} + dnsPolicy: ClusterFirst + serviceAccountName: openebs-nats + shareProcessNamespace: true + terminationGracePeriodSeconds: 60 + volumes: + - configMap: + name: openebs-nats-config + name: config-volume + - emptyDir: {} + name: pid + volumeClaimTemplates: null +--- +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: etcd + helm.sh/chart: etcd-8.6.0 + name: openebs-etcd + namespace: openebs +spec: + minAvailable: 51% + selector: + matchLabels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/name: etcd +--- +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: nats + app.kubernetes.io/version: 2.9.17 + helm.sh/chart: nats-0.19.14 + name: openebs-nats + namespace: openebs +spec: + maxUnavailable: 1 + selector: + matchLabels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/name: nats +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: promtail + app.kubernetes.io/version: 2.8.3 + helm.sh/chart: promtail-6.13.1 + name: openebs-promtail + namespace: openebs +spec: + selector: + matchLabels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/name: promtail + template: + metadata: + namespace: openebs + annotations: + checksum/config: e67cf0d4573abbc19bbd0798f5a6dfeaa0bb173cca295c7523f09b09ba9fb133 + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/name: promtail + spec: + containers: + - args: + - -config.file=/etc/promtail/promtail.yaml + env: + - name: HOSTNAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + image: docker.io/grafana/promtail:2.8.3 + imagePullPolicy: IfNotPresent + name: promtail + ports: + - containerPort: 3101 + name: http-metrics + protocol: TCP + readinessProbe: + failureThreshold: 5 + httpGet: + path: /ready + port: http-metrics + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /etc/promtail + name: config + - mountPath: /run/promtail + name: run + - mountPath: /var/lib/docker/containers + name: containers + readOnly: true + - mountPath: /var/log/pods + name: pods + readOnly: true + enableServiceLinks: true + securityContext: + runAsGroup: 0 + runAsUser: 0 + serviceAccountName: openebs-promtail + volumes: + - name: config + secret: + secretName: openebs-promtail + - hostPath: + path: /run/promtail + name: run + - hostPath: + path: /var/lib/docker/containers + name: containers + - hostPath: + path: /var/log/pods + name: pods + updateStrategy: {} +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + namespace: openebs + labels: + app: agent-ha-node + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-agent-ha-node +spec: + minReadySeconds: 10 + selector: + matchLabels: + app: agent-ha-node + openebs.io/release: openebs + template: + metadata: + namespace: openebs + labels: + app: agent-ha-node + openebs.io/logging: "true" + openebs.io/release: openebs + openebs.io/version: 2.8.0 + spec: + containers: + - args: + - --node-name=$(MY_NODE_NAME) + - --csi-socket=/csi/csi.sock + - --grpc-ip=$(MY_POD_IP) + - --grpc-port=50053 + - --cluster-agent=https://openebs-agent-core:50052 + - --events-url=nats://openebs-nats:4222 + - --ansi-colors=true + - --fmt-style=pretty + env: + - name: RUST_LOG + value: info + - name: MY_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: MY_POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: RUST_BACKTRACE + value: "1" + image: docker.io/openebs/mayastor-agent-ha-node:v2.8.0 + imagePullPolicy: IfNotPresent + name: agent-ha-node + ports: + - containerPort: 50053 + name: ha-node + protocol: TCP + resources: + limits: + cpu: 100m + memory: 64Mi + requests: + cpu: 100m + memory: 64Mi + securityContext: + privileged: true + volumeMounts: + - mountPath: /dev + name: device + - mountPath: /sys + name: sys + - mountPath: /run/udev + name: run-udev + - mountPath: /csi + name: plugin-dir + dnsPolicy: ClusterFirstWithHostNet + hostNetwork: true + imagePullSecrets: null + initContainers: + - command: + - sh + - -c + - trap "exit 1" TERM; until nc -vzw 5 openebs-agent-core 50052; do date; echo + "Waiting for agent-cluster-grpc services..."; sleep 1; done; + image: docker.io/openebs/alpine-sh:4.1.0 + imagePullPolicy: IfNotPresent + name: agent-cluster-grpc-probe + nodeSelector: + kubernetes.io/arch: amd64 + volumes: + - hostPath: + path: /dev + type: Directory + name: device + - hostPath: + path: /sys + type: Directory + name: sys + - hostPath: + path: /run/udev + type: Directory + name: run-udev + - hostPath: + path: /var/lib/kubelet/plugins/io.openebs.mayastor/ + type: DirectoryOrCreate + name: plugin-dir + updateStrategy: + rollingUpdate: + maxUnavailable: 1 + type: RollingUpdate +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + namespace: openebs + labels: + app: csi-node + openebs.io/csi-node: mayastor + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-csi-node +spec: + minReadySeconds: 10 + selector: + matchLabels: + app: csi-node + openebs.io/release: openebs + template: + metadata: + namespace: openebs + labels: + app: csi-node + openebs.io/logging: "true" + openebs.io/release: openebs + openebs.io/version: 2.8.0 + spec: + containers: + - args: + - --csi-socket=/csi/csi.sock + - --node-name=$(MY_NODE_NAME) + - --rest-endpoint=http://openebs-api-rest:8081 + - --enable-rest + - --enable-registration + - --grpc-ip=$(MY_POD_IP) + - --grpc-port=10199 + - --nvme-io-timeout=110s10s + - --nvme-core-io-timeout=110s10s + - --nvme-ctrl-loss-tmo=1980 + - --nvme-nr-io-queues=2 + - --nvme-connect-fallback=true + - --kubelet-path=/var/lib/kubelet + - --node-selector=openebs.io/csi-node=mayastor + - --fmt-style=pretty + - --ansi-colors=true + env: + - name: RUST_LOG + value: info + - name: MY_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: MY_POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: RUST_BACKTRACE + value: "1" + image: docker.io/openebs/mayastor-csi-node:v2.8.0 + imagePullPolicy: IfNotPresent + name: csi-node + resources: + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 100m + memory: 64Mi + securityContext: + privileged: true + volumeMounts: + - mountPath: /dev + name: device + - mountPath: /sys + name: sys + - mountPath: /run/udev + name: run-udev + - mountPath: /csi + name: plugin-dir + - mountPath: /var/lib/kubelet + mountPropagation: Bidirectional + name: kubelet-dir + - args: + - --csi-address=/csi/csi.sock + - --kubelet-registration-path=/var/lib/kubelet/plugins/io.openebs.mayastor/csi.sock + image: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.0 + imagePullPolicy: IfNotPresent + name: csi-driver-registrar + ports: + - containerPort: 10199 + name: mayastor-node + protocol: TCP + resources: + limits: + cpu: 100m + memory: 50Mi + requests: + cpu: 100m + memory: 50Mi + volumeMounts: + - mountPath: /csi + name: plugin-dir + - mountPath: /registration + name: registration-dir + dnsPolicy: ClusterFirstWithHostNet + hostNetwork: true + imagePullSecrets: null + initContainers: null + nodeSelector: + kubernetes.io/arch: amd64 + serviceAccountName: openebs-service-account + volumes: + - hostPath: + path: /dev + type: Directory + name: device + - hostPath: + path: /sys + type: Directory + name: sys + - hostPath: + path: /run/udev + type: Directory + name: run-udev + - hostPath: + path: /var/lib/kubelet/plugins_registry/ + type: Directory + name: registration-dir + - hostPath: + path: /var/lib/kubelet/plugins/io.openebs.mayastor/ + type: DirectoryOrCreate + name: plugin-dir + - hostPath: + path: /var/lib/kubelet + type: Directory + name: kubelet-dir + updateStrategy: + rollingUpdate: + maxUnavailable: 1 + type: RollingUpdate +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + namespace: openebs + labels: + app: io-engine + openebs.io/release: openebs + openebs.io/version: 2.8.0 + name: openebs-io-engine +spec: + minReadySeconds: 10 + selector: + matchLabels: + app: io-engine + openebs.io/release: openebs + template: + metadata: + namespace: openebs + labels: + app: io-engine + openebs.io/logging: "true" + openebs.io/release: openebs + openebs.io/version: 2.8.0 + spec: + containers: + - args: + - --fmt-style=pretty + - --ansi-colors=true + env: + - name: MY_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: MY_POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + image: docker.io/openebs/mayastor-metrics-exporter-io-engine:v2.8.0 + imagePullPolicy: IfNotPresent + name: metrics-exporter-io-engine + ports: + - containerPort: 9502 + name: metrics + protocol: TCP + - args: + - --grpc-ip=$(MY_POD_IP) + - -N$(MY_NODE_NAME) + - -Rhttps://openebs-agent-core:50051 + - -y/var/local/openebs/io-engine/config.yaml + - -l1,2 + - -p=openebs-etcd:2379 + - --ptpl-dir=/var/local/openebs/io-engine/ptpl/ + - --api-versions=v1 + - --tgt-crdt=30 + - --events-url=nats://openebs-nats:4222 + - --ps-retries=300 + command: + - io-engine + env: + - name: RUST_LOG + value: info + - name: NVMF_TCP_MAX_QPAIRS_PER_CTRL + value: "32" + - name: NVMF_TCP_MAX_QUEUE_DEPTH + value: "32" + - name: NVME_TIMEOUT + value: 110s + - name: NVME_TIMEOUT_ADMIN + value: 30s + - name: NVME_KATO + value: 10s + - name: MY_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: MY_POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: NEXUS_NVMF_ANA_ENABLE + value: "1" + - name: NEXUS_NVMF_RESV_ENABLE + value: "1" + image: docker.io/openebs/mayastor-io-engine:v2.8.0 + imagePullPolicy: IfNotPresent + name: io-engine + ports: + - containerPort: 10124 + name: io-engine + protocol: TCP + resources: + limits: + cpu: "2" + hugepages-2Mi: 2Gi + memory: 1Gi + requests: + cpu: "2" + hugepages-2Mi: 2Gi + memory: 1Gi + securityContext: + privileged: true + volumeMounts: + - mountPath: /dev + name: device + - mountPath: /run/udev + name: udev + - mountPath: /dev/shm + name: dshm + - mountPath: /var/local/openebs/io-engine/ + name: configlocation + - mountPath: /dev/hugepages + name: hugepage + dnsPolicy: ClusterFirstWithHostNet + hostNetwork: true + imagePullSecrets: null + initContainers: + - command: + - sh + - -c + - trap "exit 1" TERM; until nc -vzw 5 openebs-agent-core 50051; do date; echo + "Waiting for agent-core-grpc services..."; sleep 1; done; + image: docker.io/openebs/alpine-sh:4.1.0 + imagePullPolicy: IfNotPresent + name: agent-core-grpc-probe + - command: + - sh + - -c + - trap "exit 1" TERM; until nc -vzw 5 openebs-etcd 2379; do date; echo "Waiting + for etcd..."; sleep 1; done; + image: docker.io/openebs/alpine-sh:4.1.0 + imagePullPolicy: IfNotPresent + name: etcd-probe + nodeSelector: + kubernetes.io/arch: amd64 + openebs.io/engine: mayastor + volumes: + - hostPath: + path: /dev + type: Directory + name: device + - hostPath: + path: /run/udev + type: Directory + name: udev + - emptyDir: + medium: Memory + sizeLimit: 1Gi + name: dshm + - emptyDir: + medium: HugePages + name: hugepage + - hostPath: + path: /var/local/openebs/io-engine/ + type: DirectoryOrCreate + name: configlocation + updateStrategy: + type: OnDelete +--- +apiVersion: batch/v1 +kind: Job +metadata: + namespace: openebs + annotations: + helm.sh/hook: pre-upgrade + helm.sh/hook-delete-policy: hook-succeeded + helm.sh/hook-weight: "0" + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 4.2.0 + helm.sh/chart: openebs-4.2.0 + name: openebs-pre-upgrade-hook +spec: + template: + metadata: + namespace: openebs + labels: + app.kubernetes.io/instance: openebs + app.kubernetes.io/managed-by: Helm + helm.sh/chart: openebs-4.2.0 + name: openebs-pre-upgrade-hook + spec: + containers: + - args: + - (kubectl annotate --overwrite crd volumesnapshots.snapshot.storage.k8s.io + volumesnapshotclasses.snapshot.storage.k8s.io volumesnapshotcontents.snapshot.storage.k8s.io + helm.sh/resource-policy=keep || true) && (kubectl -n openebs delete deploy + -l openebs.io/component-name=openebs-localpv-provisioner --ignore-not-found) + command: + - /bin/sh + - -c + image: docker.io/bitnami/kubectl:1.25.15 + imagePullPolicy: IfNotPresent + name: pre-upgrade-job + restartPolicy: Never + serviceAccountName: openebs-pre-upgrade-hook +--- +apiVersion: v1 +kind: Pod +metadata: + namespace: openebs + annotations: + helm.sh/hook: test-success + labels: + app: loki-stack + chart: loki-stack-2.9.11 + heritage: Helm + release: openebs + name: openebs-loki-stack-test +spec: + containers: + - args: + - /var/lib/loki/test.sh + env: + - name: LOKI_SERVICE + value: openebs-loki + - name: LOKI_PORT + value: "3100" + image: bats/bats:1.8.2 + imagePullPolicy: "" + name: test + volumeMounts: + - mountPath: /var/lib/loki + name: tests + restartPolicy: Never + volumes: + - configMap: + name: openebs-loki-stack-test + name: tests +--- +apiVersion: v1 +kind: Pod +metadata: + namespace: openebs + annotations: + helm.sh/hook: test + labels: + app: openebs-nats-test-request-reply + chart: nats-0.19.14 + name: openebs-nats-test-request-reply +spec: + containers: + - command: + - /bin/sh + - -ec + - | + nats reply -s nats://$NATS_HOST:4222 'name.>' --command "echo 1" & + - | + "&&" + - | + name=$(nats request -s nats://$NATS_HOST:4222 name.test '' 2>/dev/null) + - | + "&&" + - | + [ $name = test ] + env: + - name: NATS_HOST + value: openebs-nats + image: natsio/nats-box:0.13.8 + name: nats-box + restartPolicy: Never diff --git a/openebs/src/kustomization.yaml b/openebs/src/kustomization.yaml new file mode 100644 index 0000000..6293ea8 --- /dev/null +++ b/openebs/src/kustomization.yaml @@ -0,0 +1,15 @@ +# kubernetes/cilium/kustomization.yaml +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ns.yaml + +helmCharts: + - name: openebs + repo: https://openebs.github.io/openebs + version: 4.2.0 + releaseName: openebs + includeCRDs: true + namespace: openebs + valuesFile: values.yaml diff --git a/openebs/src/ns.yaml b/openebs/src/ns.yaml new file mode 100644 index 0000000..2175285 --- /dev/null +++ b/openebs/src/ns.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: openebs \ No newline at end of file diff --git a/openebs/src/values.yaml b/openebs/src/values.yaml new file mode 100644 index 0000000..4b6ae22 --- /dev/null +++ b/openebs/src/values.yaml @@ -0,0 +1,65 @@ +# values.yaml +openebs-crds: + csi: + volumeSnapshots: + enabled: true + keep: true + +# Refer to https://github.com/openebs/dynamic-localpv-provisioner/blob/v4.1.2/deploy/helm/charts/values.yaml for complete set of values. +localpv-provisioner: + rbac: + create: true + +# Refer to https://github.com/openebs/zfs-localpv/blob/v2.6.2/deploy/helm/charts/values.yaml for complete set of values. +zfs-localpv: + crds: + zfsLocalPv: + enabled: true + csi: + volumeSnapshots: + enabled: false + +# Refer to https://github.com/openebs/lvm-localpv/blob/lvm-localpv-1.6.2/deploy/helm/charts/values.yaml for complete set of values. +lvm-localpv: + crds: + lvmLocalPv: + enabled: true + csi: + volumeSnapshots: + enabled: false + +# Refer to https://github.com/openebs/mayastor-extensions/blob/v2.7.2/chart/values.yaml for complete set of values. +mayastor: + csi: + node: + initContainers: + enabled: false + etcd: + # -- Kubernetes Cluster Domain + clusterDomain: cluster.local + localpv-provisioner: + enabled: false + crds: + enabled: false + +# -- Configuration options for pre-upgrade helm hook job. +preUpgradeHook: + image: + # -- The container image registry URL for the hook job + registry: docker.io + # -- The container repository for the hook job + repo: bitnami/kubectl + # -- The container image tag for the hook job + tag: "1.25.15" + # -- The imagePullPolicy for the container + pullPolicy: IfNotPresent + +engines: + local: + lvm: + enabled: false + zfs: + enabled: false + replicated: + mayastor: + enabled: true \ No newline at end of file diff --git a/openebs/storageclass.yaml b/openebs/storageclass.yaml new file mode 100644 index 0000000..ec12234 --- /dev/null +++ b/openebs/storageclass.yaml @@ -0,0 +1,10 @@ +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: openebs-3-replicas + namespace: openebs +parameters: + protocol: nvmf + repl: "3" +provisioner: io.openebs.csi-mayastor \ No newline at end of file