From 7c96b87217935dccbe32173bc2338fc4208b43ed Mon Sep 17 00:00:00 2001 From: Akhil Mohan Date: Fri, 15 Jan 2021 13:04:29 +0530 Subject: [PATCH] [stable/ndm]: update ndm charts to 1.1.0 (#531) * [stable/ndm]: update ndm charts to 1.1.0 - update chart version - update README - update values.yaml - update NDM daemonset and NDM operator - update CRDs with openAPI validation Signed-off-by: Akhil Mohan --- deploy/helm/charts/Chart.yaml | 6 +- deploy/helm/charts/README.md | 6 +- deploy/helm/charts/crds/blockdevice.yaml | 230 +++++++++++++++++- deploy/helm/charts/crds/blockdeviceclaim.yaml | 145 ++++++++++- deploy/helm/charts/templates/daemonset.yaml | 7 +- deploy/helm/charts/templates/deployment.yaml | 8 +- deploy/helm/charts/values.yaml | 15 +- 7 files changed, 396 insertions(+), 21 deletions(-) diff --git a/deploy/helm/charts/Chart.yaml b/deploy/helm/charts/Chart.yaml index cab4716cb..233393c51 100644 --- a/deploy/helm/charts/Chart.yaml +++ b/deploy/helm/charts/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 name: openebs-ndm -description: Kubernetes Storage Device Management. Also used to maintain the inventory of block devices. -version: 1.0.2 -appVersion: 1.0.1 +description: Helm chart for OpenEBS Node Disk Manager - a Kubernetes native storage device management solution. For instructions on how to install, refer to https://openebs.github.io/node-disk-manager/. +version: 1.1.0 +appVersion: 1.1.0 icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/openebs/icon/color/openebs-icon-color.png home: http://www.openebs.io/ keywords: diff --git a/deploy/helm/charts/README.md b/deploy/helm/charts/README.md index 41f907500..da6f80fdd 100644 --- a/deploy/helm/charts/README.md +++ b/deploy/helm/charts/README.md @@ -20,7 +20,7 @@ The following table lists the configurable parameters of the OpenEBS NDM chart a | `ndm.image.registry` | Registry for Node Disk Manager image | `""` | | `ndm.image.repository` | Image repository for Node Disk Manager | `openebs/node-disk-manager` | | `ndm.image.pullPolicy` | Image pull policy for Node Disk Manager | `IfNotPresent` | -| `ndm.image.tag` | Image tag for Node Disk Manager | `1.0.1` | +| `ndm.image.tag` | Image tag for Node Disk Manager | `1.1.0` | | `ndm.sparse.path` | Directory where Sparse files are created | `/var/openebs/sparse` | | `ndm.sparse.size` | Size of the sparse file in bytes | `10737418240` | | `ndm.sparse.count` | Number of sparse files to be created | `0` | @@ -49,7 +49,7 @@ The following table lists the configurable parameters of the OpenEBS NDM chart a | `ndmOperator.image.registry` | Registry for NDM operator image | `""` | | `ndmOperator.image.repository` | Image repository for NDM operator | `openebs/node-disk-operator` | | `ndmOperator.image.pullPolicy` | Image pull policy for NDM operator | `IfNotPresent` | -| `ndmOperator.image.tag` | Image tag for NDM operator | `1.0.1` | +| `ndmOperator.image.tag` | Image tag for NDM operator | `1.1.0` | | `ndmOperator.annotations` | Annotations for NDM operator metadata | `""` | | `ndmOperator.podAnnotations` | Annotations for NDM operator's pods metadata | `""` | | `ndmOperator.resources` | Resource and request and limit for containers | `""` | @@ -65,7 +65,7 @@ The following table lists the configurable parameters of the OpenEBS NDM chart a | `helperPod.image.registry` | Registry for helper image | `""` | | `helperPod.image.repository` | Image for helper pod | `openebs/linux-utils` | | `helperPod.image.pullPolicy` | Pull policy for helper pod | `IfNotPresent` | -| `helperPod.image.tag` | Image tag for helper image | `2.4.0` | +| `helperPod.image.tag` | Image tag for helper image | `2.5.0` | | `varDirectoryPath.baseDir` | Directory to store debug info and so forth | `/var/openebs` | | `serviceAccount.create` | Create a service account or not | `true` | | `serviceAccount.name` | Name for the service account | `true` | diff --git a/deploy/helm/charts/crds/blockdevice.yaml b/deploy/helm/charts/crds/blockdevice.yaml index f0b854a84..c50e6aea9 100644 --- a/deploy/helm/charts/crds/blockdevice.yaml +++ b/deploy/helm/charts/crds/blockdevice.yaml @@ -28,12 +28,236 @@ spec: name: Age type: date group: openebs.io - version: v1alpha1 - scope: Namespaced names: kind: BlockDevice listKind: BlockDeviceList plural: blockdevices - singular: blockdevice shortNames: - bd + singular: blockdevice + scope: Namespaced + subresources: {} + validation: + openAPIV3Schema: + description: BlockDevice is the Schema used to represent a BlockDevice CR + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: DeviceSpec defines the properties and runtime status of a BlockDevice + properties: + aggregateDevice: + description: AggregateDevice was intended to store the hierachical information + in cases of LVM. However this is currently not implemented and may + need to be re-looked into for better design. To be deprecated + type: string + capacity: + description: Capacity + properties: + logicalSectorSize: + description: LogicalSectorSize is blockdevice logical-sector size + in bytes + format: int32 + type: integer + physicalSectorSize: + description: PhysicalSectorSize is blockdevice physical-Sector size + in bytes + format: int32 + type: integer + storage: + description: Storage is the blockdevice capacity in bytes + format: int64 + type: integer + required: + - storage + type: object + claimRef: + description: ClaimRef is the reference to the BDC which has claimed + this BD + 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 + details: + description: Details contain static attributes of BD like model,serial, + and so forth + properties: + compliance: + description: Compliance is standards/specifications version implemented + by device firmware such as SPC-1, SPC-2, etc + type: string + deviceType: + description: DeviceType represents the type of device like sparse, + disk, partition, lvm, crypt + enum: + - disk + - partition + - sparse + - loop + - lvm + - crypt + - dm + - mpath + type: string + driveType: + description: DriveType is the type of backing drive, HDD/SSD + enum: + - HDD + - SDD + - Unknown + - "" + type: string + firmwareRevision: + description: FirmwareRevision is the disk firmware revision + type: string + hardwareSectorSize: + description: HardwareSectorSize is the hardware sector size in bytes + format: int32 + type: integer + logicalBlockSize: + description: LogicalBlockSize is the logical block size in bytes + reported by /sys/class/block/sda/queue/logical_block_size + format: int32 + type: integer + model: + description: Model is model of disk + type: string + physicalBlockSize: + description: PhysicalBlockSize is the physical block size in bytes + reported by /sys/class/block/sda/queue/physical_block_size + format: int32 + type: integer + serial: + description: Serial is serial number of disk + type: string + vendor: + description: Vendor is vendor of disk + type: string + type: object + devlinks: + description: DevLinks contains soft links of a block device like /dev/by-id/... + /dev/by-uuid/... + items: + description: DeviceDevLink holds the mapping between type and links + like by-id type or by-path type link + properties: + kind: + description: Kind is the type of link like by-id or by-path. + enum: + - by-id + - by-path + type: string + links: + description: Links are the soft links + items: + type: string + type: array + type: object + type: array + filesystem: + description: FileSystem contains mountpoint and filesystem type + properties: + fsType: + description: Type represents the FileSystem type of the block device + type: string + mountPoint: + description: MountPoint represents the mountpoint of the block device. + type: string + type: object + nodeAttributes: + description: NodeAttributes has the details of the node on which BD + is attached + properties: + nodeName: + description: NodeName is the name of the Kubernetes node resource + on which the device is attached + type: string + type: object + parentDevice: + description: "ParentDevice was intended to store the UUID of the parent + Block Device as is the case for partitioned block devices. \n For + example: /dev/sda is the parent for /dev/sda1 To be deprecated" + type: string + partitioned: + description: Partitioned represents if BlockDevice has partitions or + not (Yes/No) Currently always default to No. To be deprecated + enum: + - "Yes" + - "No" + type: string + path: + description: Path contain devpath (e.g. /dev/sdb) + type: string + required: + - capacity + - devlinks + - nodeAttributes + - path + type: object + status: + description: DeviceStatus defines the observed state of BlockDevice + properties: + claimState: + description: ClaimState represents the claim state of the block device + enum: + - Claimed + - Unclaimed + - Released + type: string + state: + description: State is the current state of the blockdevice (Active/Inactive/Unknown) + enum: + - Active + - Inactive + - Unknown + type: string + required: + - claimState + - state + type: object + type: object + version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true diff --git a/deploy/helm/charts/crds/blockdeviceclaim.yaml b/deploy/helm/charts/crds/blockdeviceclaim.yaml index a2d796f85..e3b3f5136 100644 --- a/deploy/helm/charts/crds/blockdeviceclaim.yaml +++ b/deploy/helm/charts/crds/blockdeviceclaim.yaml @@ -14,8 +14,6 @@ spec: name: Age type: date group: openebs.io - version: v1alpha1 - scope: Namespaced names: kind: BlockDeviceClaim listKind: BlockDeviceClaimList @@ -23,3 +21,146 @@ spec: shortNames: - bdc singular: blockdeviceclaim + scope: Namespaced + subresources: {} + validation: + openAPIV3Schema: + description: BlockDeviceClaim is the Schema for the BlockDeviceClaim CR + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: DeviceClaimSpec defines the request details for a BlockDevice + properties: + blockDeviceName: + description: BlockDeviceName is the reference to the block-device backing + this claim + type: string + blockDeviceNodeAttributes: + description: BlockDeviceNodeAttributes is the attributes on the node + from which a BD should be selected for this claim. It can include + nodename, failure domain etc. + properties: + hostName: + description: HostName represents the hostname of the Kubernetes + node resource where the BD should be present + type: string + nodeName: + description: NodeName represents the name of the Kubernetes node + resource where the BD should be present + type: string + type: object + deviceClaimDetails: + description: Details of the device to be claimed + properties: + allowPartition: + description: AllowPartition represents whether to claim a full block + device or a device that is a partition + type: boolean + blockVolumeMode: + description: 'BlockVolumeMode represents whether to claim a device + in Block mode or Filesystem mode. These are use cases of BlockVolumeMode: + 1) Not specified: VolumeMode check will not be effective 2) VolumeModeBlock: + BD should not have any filesystem or mountpoint 3) VolumeModeFileSystem: + BD should have a filesystem and mountpoint. If DeviceFormat is specified + then the format should match with the FSType in BD' + type: string + formatType: + description: Format of the device required, eg:ext4, xfs + type: string + type: object + deviceType: + description: DeviceType represents the type of drive like SSD, HDD etc., + nullable: true + type: string + hostName: + description: Node name from where blockdevice has to be claimed. To + be deprecated. Use NodeAttributes.HostName instead + type: string + resources: + description: Resources will help with placing claims on Capacity, IOPS + properties: + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum resources required. + eg: if storage resource of 10G is requested minimum capacity of + 10G should be available TODO for validating' + type: object + required: + - requests + type: object + selector: + description: Selector is used to find block devices to be considered + for claiming + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains + values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: operator represents a key's relationship to a + set of values. Valid operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator + is In or NotIn, the values array must be non-empty. If the + operator is Exists or DoesNotExist, the values array must + be empty. This array is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator is + "In", and the values array contains only "value". The requirements + are ANDed. + type: object + type: object + type: object + status: + description: DeviceClaimStatus defines the observed state of BlockDeviceClaim + properties: + phase: + description: Phase represents the current phase of the claim + type: string + required: + - phase + type: object + type: object + version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true diff --git a/deploy/helm/charts/templates/daemonset.yaml b/deploy/helm/charts/templates/daemonset.yaml index d9334bd2b..5b7a61492 100644 --- a/deploy/helm/charts/templates/daemonset.yaml +++ b/deploy/helm/charts/templates/daemonset.yaml @@ -44,6 +44,9 @@ spec: - --feature-gates={{ .Values.featureGates.APIService.featureGateFlag }} - --api-service-address={{ .Values.featureGates.APIService.address }} {{- end}} +{{- if .Values.featureGates.UseOSDisk.enabled }} + - --feature-gates={{ .Values.featureGates.UseOSDisk.featureGateFlag }} +{{- end}} {{- end}} imagePullPolicy: {{ .Values.ndm.image.pullPolicy }} resources: @@ -150,9 +153,9 @@ spec: # kubectl label node "openebs.io/nodegroup"="storage-node" #nodeSelector: # "openebs.io/nodegroup": "storage-node" -{{- if .Values.imagePullSecrets }} +{{- with .Values.imagePullSecrets }} imagePullSecrets: -{{ toYaml .Values.imagePullSecrets | indent 2 }} + {{- toYaml . | nindent 6 }} {{- end }} {{- if .Values.ndm.nodeSelector }} nodeSelector: diff --git a/deploy/helm/charts/templates/deployment.yaml b/deploy/helm/charts/templates/deployment.yaml index 97ca13dd6..00132c23c 100644 --- a/deploy/helm/charts/templates/deployment.yaml +++ b/deploy/helm/charts/templates/deployment.yaml @@ -64,6 +64,10 @@ spec: # from NDM Operator. By default the CRDs will be installed - name: OPENEBS_IO_INSTALL_CRD value: "{{ .Values.crd.enableInstall }}" +{{- if .Values.imagePullSecrets }} + - name: OPENEBS_IO_IMAGE_PULL_SECRETS + value: "{{- range $index, $secret := .Values.imagePullSecrets}}{{if $index}},{{end}}{{ $secret.name }}{{- end}}" +{{- end }} # Process name used for matching is limited to the 15 characters # present in the pgrep output. # So fullname can be used here with pgrep (cmd is < 15 chars). @@ -74,9 +78,9 @@ spec: - "ndo" initialDelaySeconds: {{ .Values.ndmOperator.healthCheck.initialDelaySeconds }} periodSeconds: {{ .Values.ndmOperator.healthCheck.periodSeconds }} -{{- if .Values.imagePullSecrets }} +{{- with .Values.imagePullSecrets }} imagePullSecrets: -{{ toYaml .Values.imagePullSecrets | indent 2 }} + {{- toYaml . | nindent 6 }} {{- end }} {{- if .Values.ndmOperator.nodeSelector }} nodeSelector: diff --git a/deploy/helm/charts/values.yaml b/deploy/helm/charts/values.yaml index 4eacbfbac..c74d229d8 100644 --- a/deploy/helm/charts/values.yaml +++ b/deploy/helm/charts/values.yaml @@ -2,10 +2,10 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. release: - version: "1.0.1" + version: "1.1.0" imagePullSecrets: -# - name: "image-pull-secret" +# - name: "image-pull-secret" ndm: componentName: ndm @@ -17,7 +17,7 @@ ndm: repository: openebs/node-disk-manager pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. - tag: 1.0.1 + tag: 1.1.0 sparse: path: "/var/openebs/sparse" size: "10737418240" @@ -62,7 +62,7 @@ ndmOperator: repository: openebs/node-disk-operator pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. - tag: 1.0.1 + tag: 1.1.0 podLabels: name: openebs-ndm-operator annotations: {} @@ -87,10 +87,10 @@ helperPod: repository: openebs/linux-utils pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. - tag: 2.4.0 + tag: 2.5.0 crd: - enableInstall: true + enableInstall: false featureGates: enabled: true @@ -101,6 +101,9 @@ featureGates: enabled: true featureGateFlag: "APIService" address: "0.0.0.0:9115" + UseOSDisk: + enabled: false + featureGateFlag: "UseOSDisk" # Directory used by the OpenEBS to store debug information and so forth # that are generated in the course of running OpenEBS containers.