From 2685d9927ba89096687df84b0badf4acff44fa82 Mon Sep 17 00:00:00 2001 From: Rensy Thomas Date: Wed, 23 Feb 2022 19:09:37 +0530 Subject: [PATCH] Add required manifests to install operator in OLM environment --- Makefile | 13 - bundle.Dockerfile | 20 + ...er-manager-metrics-service_v1_service.yaml | 17 + ...ole_rbac.authorization.k8s.io_v1_role.yaml | 37 + ...c.authorization.k8s.io_v1_rolebinding.yaml | 13 + ...-operator-manager-config_v1_configmap.yaml | 17 + ...c.authorization.k8s.io_v1_clusterrole.yaml | 10 + ...c.authorization.k8s.io_v1_clusterrole.yaml | 18 + ...rization.k8s.io_v1_clusterrolebinding.yaml | 13 + ...ll-csm-operator.clusterserviceversion.yaml | 735 ++++++++++ ...rage.dell.com_containerstoragemodules.yaml | 1302 +++++++++++++++++ bundle/metadata/annotations.yaml | 14 + bundle/tests/scorecard/config.yaml | 70 + config/manager/kustomization.yaml | 4 - ...ll-csm-operator.clusterserviceversion.yaml | 301 ++++ config/samples/kustomization.yaml | 5 - ...rage.dell.com_containerstoragemodules.yaml | 736 +++------- deploy/olm/operator_community.yaml | 26 + docker.mk | 28 +- 19 files changed, 2797 insertions(+), 582 deletions(-) create mode 100644 bundle.Dockerfile create mode 100644 bundle/manifests/dell-csm-operator-controller-manager-metrics-service_v1_service.yaml create mode 100644 bundle/manifests/dell-csm-operator-leader-election-role_rbac.authorization.k8s.io_v1_role.yaml create mode 100644 bundle/manifests/dell-csm-operator-leader-election-rolebinding_rbac.authorization.k8s.io_v1_rolebinding.yaml create mode 100644 bundle/manifests/dell-csm-operator-manager-config_v1_configmap.yaml create mode 100644 bundle/manifests/dell-csm-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml create mode 100644 bundle/manifests/dell-csm-operator-proxy-role_rbac.authorization.k8s.io_v1_clusterrole.yaml create mode 100644 bundle/manifests/dell-csm-operator-proxy-rolebinding_rbac.authorization.k8s.io_v1_clusterrolebinding.yaml create mode 100644 bundle/manifests/dell-csm-operator.clusterserviceversion.yaml create mode 100644 bundle/manifests/storage.dell.com_containerstoragemodules.yaml create mode 100644 bundle/metadata/annotations.yaml create mode 100644 bundle/tests/scorecard/config.yaml create mode 100644 config/manifests/bases/dell-csm-operator.clusterserviceversion.yaml create mode 100644 deploy/olm/operator_community.yaml diff --git a/Makefile b/Makefile index 4f65beaac..383abed23 100644 --- a/Makefile +++ b/Makefile @@ -19,16 +19,6 @@ BUNDLE_DEFAULT_CHANNEL := --default-channel=$(DEFAULT_CHANNEL) endif BUNDLE_METADATA_OPTS ?= $(BUNDLE_CHANNELS) $(BUNDLE_DEFAULT_CHANNEL) -# IMAGE_TAG_BASE defines the docker.io namespace and part of the image name for remote images. -# This variable is used to construct full image tags for bundle and catalog images. -# -# For example, running 'make bundle-build bundle-push catalog-build catalog-push' will build and push both -# dell.com/csm-operator-bundle:$VERSION and dell.com/csm-operator-catalog:$VERSION. -IMAGE_TAG_BASE ?= dell.com/csm-operator - -# BUNDLE_IMG defines the image:tag used for the bundle. -# You can use it as an arg. (E.g make bundle-build BUNDLE_IMG=/:) -BUNDLE_IMG ?= $(IMAGE_TAG_BASE)-bundle:v$(VERSION) # Produce CRDs that work back to Kubernetes 1.11 (no version conversion) CRD_OPTIONS ?= "crd:trivialVersions=true,preserveUnknownFields=false" @@ -193,9 +183,6 @@ endif # These images MUST exist in a registry and be pull-able. BUNDLE_IMGS ?= $(BUNDLE_IMG) -# The image tag given to the resulting catalog image (e.g. make catalog-build CATALOG_IMG=example.com/operator-catalog:v0.2.0). -CATALOG_IMG ?= $(IMAGE_TAG_BASE)-catalog:v$(VERSION) - # Set CATALOG_BASE_IMG to an existing catalog image tag to add $BUNDLE_IMGS to that image. ifneq ($(origin CATALOG_BASE_IMG), undefined) FROM_INDEX_OPT := --from-index $(CATALOG_BASE_IMG) diff --git a/bundle.Dockerfile b/bundle.Dockerfile new file mode 100644 index 000000000..203651d37 --- /dev/null +++ b/bundle.Dockerfile @@ -0,0 +1,20 @@ +FROM scratch + +# Core bundle labels. +LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 +LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ +LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ +LABEL operators.operatorframework.io.bundle.package.v1=dell-csm-operator +LABEL operators.operatorframework.io.bundle.channels.v1=alpha +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.14.0+git +LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 +LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 + +# Labels for testing. +LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1 +LABEL operators.operatorframework.io.test.config.v1=tests/scorecard/ + +# Copy files to locations specified by labels. +COPY bundle/manifests /manifests/ +COPY bundle/metadata /metadata/ +COPY bundle/tests/scorecard /tests/scorecard/ diff --git a/bundle/manifests/dell-csm-operator-controller-manager-metrics-service_v1_service.yaml b/bundle/manifests/dell-csm-operator-controller-manager-metrics-service_v1_service.yaml new file mode 100644 index 000000000..d74ee1d5d --- /dev/null +++ b/bundle/manifests/dell-csm-operator-controller-manager-metrics-service_v1_service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + labels: + control-plane: controller-manager + name: dell-csm-operator-controller-manager-metrics-service +spec: + ports: + - name: https + port: 8443 + protocol: TCP + targetPort: https + selector: + control-plane: controller-manager +status: + loadBalancer: {} diff --git a/bundle/manifests/dell-csm-operator-leader-election-role_rbac.authorization.k8s.io_v1_role.yaml b/bundle/manifests/dell-csm-operator-leader-election-role_rbac.authorization.k8s.io_v1_role.yaml new file mode 100644 index 000000000..6b238f1da --- /dev/null +++ b/bundle/manifests/dell-csm-operator-leader-election-role_rbac.authorization.k8s.io_v1_role.yaml @@ -0,0 +1,37 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + creationTimestamp: null + name: dell-csm-operator-leader-election-role +rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - events + verbs: + - create + - patch diff --git a/bundle/manifests/dell-csm-operator-leader-election-rolebinding_rbac.authorization.k8s.io_v1_rolebinding.yaml b/bundle/manifests/dell-csm-operator-leader-election-rolebinding_rbac.authorization.k8s.io_v1_rolebinding.yaml new file mode 100644 index 000000000..e76f855b0 --- /dev/null +++ b/bundle/manifests/dell-csm-operator-leader-election-rolebinding_rbac.authorization.k8s.io_v1_rolebinding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + creationTimestamp: null + name: dell-csm-operator-leader-election-rolebinding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: dell-csm-operator-leader-election-role +subjects: +- kind: ServiceAccount + name: controller-manager + namespace: system diff --git a/bundle/manifests/dell-csm-operator-manager-config_v1_configmap.yaml b/bundle/manifests/dell-csm-operator-manager-config_v1_configmap.yaml new file mode 100644 index 000000000..b0be172c7 --- /dev/null +++ b/bundle/manifests/dell-csm-operator-manager-config_v1_configmap.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +data: + controller_manager_config.yaml: | + apiVersion: controller-runtime.sigs.k8s.io/v1alpha1 + kind: ControllerManagerConfig + health: + healthProbeBindAddress: :8081 + metrics: + bindAddress: 127.0.0.1:8080 + webhook: + port: 9443 + leaderElection: + leaderElect: true + resourceName: 090cae6a.dell.com +kind: ConfigMap +metadata: + name: dell-csm-operator-manager-config diff --git a/bundle/manifests/dell-csm-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml b/bundle/manifests/dell-csm-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml new file mode 100644 index 000000000..f9745ba6b --- /dev/null +++ b/bundle/manifests/dell-csm-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml @@ -0,0 +1,10 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + name: dell-csm-operator-metrics-reader +rules: +- nonResourceURLs: + - /metrics + verbs: + - get diff --git a/bundle/manifests/dell-csm-operator-proxy-role_rbac.authorization.k8s.io_v1_clusterrole.yaml b/bundle/manifests/dell-csm-operator-proxy-role_rbac.authorization.k8s.io_v1_clusterrole.yaml new file mode 100644 index 000000000..4eaa31e97 --- /dev/null +++ b/bundle/manifests/dell-csm-operator-proxy-role_rbac.authorization.k8s.io_v1_clusterrole.yaml @@ -0,0 +1,18 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + name: dell-csm-operator-proxy-role +rules: +- apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create +- apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create diff --git a/bundle/manifests/dell-csm-operator-proxy-rolebinding_rbac.authorization.k8s.io_v1_clusterrolebinding.yaml b/bundle/manifests/dell-csm-operator-proxy-rolebinding_rbac.authorization.k8s.io_v1_clusterrolebinding.yaml new file mode 100644 index 000000000..517a83dda --- /dev/null +++ b/bundle/manifests/dell-csm-operator-proxy-rolebinding_rbac.authorization.k8s.io_v1_clusterrolebinding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + creationTimestamp: null + name: dell-csm-operator-proxy-rolebinding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: dell-csm-operator-proxy-role +subjects: +- kind: ServiceAccount + name: controller-manager + namespace: system diff --git a/bundle/manifests/dell-csm-operator.clusterserviceversion.yaml b/bundle/manifests/dell-csm-operator.clusterserviceversion.yaml new file mode 100644 index 000000000..893a14d18 --- /dev/null +++ b/bundle/manifests/dell-csm-operator.clusterserviceversion.yaml @@ -0,0 +1,735 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "storage.dell.com/v1alpha1", + "kind": "ContainerStorageModule", + "metadata": { + "name": "test-isilon", + "namespace": "test-isilon" + }, + "spec": { + "driver": { + "common": { + "envs": [ + { + "name": "X_CSI_VERBOSE", + "value": "1" + }, + { + "name": "X_CSI_ISI_PORT", + "value": "8080" + }, + { + "name": "X_CSI_ISI_PATH", + "value": "/ifs/data/csi" + }, + { + "name": "X_CSI_ISI_NO_PROBE_ON_START", + "value": "false" + }, + { + "name": "X_CSI_ISI_AUTOPROBE", + "value": "true" + }, + { + "name": "X_CSI_ISI_SKIP_CERTIFICATE_VALIDATION", + "value": "true" + }, + { + "name": "X_CSI_CUSTOM_TOPOLOGY_ENABLED", + "value": "false" + }, + { + "name": "CSI_LOG_LEVEL", + "value": "debug" + } + ], + "image": "dellemc/csi-isilon:v2.0.0", + "imagePullPolicy": "IfNotPresent" + }, + "configVersion": "v2.0.0", + "controller": { + "envs": [ + { + "name": "X_CSI_ISI_QUOTA_ENABLED", + "value": "true" + }, + { + "name": "X_CSI_ISI_ACCESS_ZONE", + "value": "System" + }, + { + "name": "X_CSI_ISI_VOLUME_PATH_PERMISSIONS", + "value": "0777" + } + ] + }, + "dnsPolicy": "ClusterFirstWithHostNet", + "forceUpdate": false, + "k8sVersion": "v1.23", + "node": { + "envs": [ + { + "name": "X_CSI_MAX_VOLUMES_PER_NODE", + "value": "0" + }, + { + "name": "X_CSI_ALLOWED_NETWORKS", + "value": "" + } + ] + }, + "replicas": 2, + "siDriverType": "powerscale", + "sideCars": [ + { + "args": [ + "--volume-name-prefix=csipscale" + ], + "name": "provisioner" + } + ], + "volumeNamePrefix": "k8s" + }, + "modules": [ + { + "components": [ + { + "envs": [ + { + "name": "PROXY_HOST", + "value": "" + }, + { + "name": "INSECURE", + "value": true + } + ], + "image": "dellemc/csm-authorization-sidecar:v1.0.0" + } + ], + "configVersion": "v2.0.0", + "enabled": false, + "name": "authorization" + } + ] + } + } + ] + capabilities: Basic Install + operators.operatorframework.io/builder: operator-sdk-v1.14.0+git + operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 + name: dell-csm-operator.v0.1.0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: ContainerStorageModule is the Schema for the containerstoragemodules + API + displayName: Container Storage Module + kind: ContainerStorageModule + name: containerstoragemodules.storage.dell.com + specDescriptors: + - description: AuthSecret is the name of the credentials secret for the driver + displayName: Auth Secret + path: driver.authSecret + - description: Common is the common specification for both controller and node + plugins + displayName: Common specification + path: driver.common + - description: Args is the set of arguments for the container + displayName: Container Arguments + path: driver.common.args + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: driver.common.enabled + - description: Envs is the set of environment variables for the container + displayName: Container Environment vars + path: driver.common.envs + - description: Image is the image tag for the Container + displayName: Container Image + path: driver.common.image + - description: ImagePullPolicy is the image pull policy for the image + displayName: Container Image Pull Policy + path: driver.common.imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - description: Name is the name of Container + displayName: Container Name + path: driver.common.name + - description: NodeSelector is a selector which must be true for the pod to + fit on a node. Selector which must match a node's labels for the pod to + be scheduled on that node. + displayName: NodeSelector + path: driver.common.nodeSelector + - description: Tolerations is the list of tolerations for the driver pods + displayName: Tolerations + path: driver.common.tolerations + - description: ConfigVersion is the configuration version of the driver + displayName: Config Version + path: driver.configVersion + - description: Controller is the specification for Controller plugin only + displayName: Controller Specification + path: driver.controller + - description: Args is the set of arguments for the container + displayName: Container Arguments + path: driver.controller.args + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: driver.controller.enabled + - description: Envs is the set of environment variables for the container + displayName: Container Environment vars + path: driver.controller.envs + - description: Image is the image tag for the Container + displayName: Container Image + path: driver.controller.image + - description: ImagePullPolicy is the image pull policy for the image + displayName: Container Image Pull Policy + path: driver.controller.imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - description: Name is the name of Container + displayName: Container Name + path: driver.controller.name + - description: NodeSelector is a selector which must be true for the pod to + fit on a node. Selector which must match a node's labels for the pod to + be scheduled on that node. + displayName: NodeSelector + path: driver.controller.nodeSelector + - description: Tolerations is the list of tolerations for the driver pods + displayName: Tolerations + path: driver.controller.tolerations + - description: CSIDriverType is the CSI Driver type for Dell EMC - e.g, powermax, + powerflex,... + displayName: CSI Driver Type + path: driver.csiDriverType + - description: DNSPolicy is the dnsPolicy of the daemonset for Node plugin + displayName: DNSPolicy + path: driver.dnsPolicy + - description: ForceRemoveDriver is the boolean flag used to remove driver deployment + when CR is deleted + displayName: Force Remove Driver + path: driver.forceRemoveDriver + - description: ForceUpdate is the boolean flag used to force an update of the + driver instance + displayName: Force update + path: driver.forceUpdate + - description: Args is the set of arguments for the container + displayName: Container Arguments + path: driver.initContainers[0].args + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: driver.initContainers[0].enabled + - description: Envs is the set of environment variables for the container + displayName: Container Environment vars + path: driver.initContainers[0].envs + - description: Image is the image tag for the Container + displayName: Container Image + path: driver.initContainers[0].image + - description: ImagePullPolicy is the image pull policy for the image + displayName: Container Image Pull Policy + path: driver.initContainers[0].imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - description: Name is the name of Container + displayName: Container Name + path: driver.initContainers[0].name + - description: NodeSelector is a selector which must be true for the pod to + fit on a node. Selector which must match a node's labels for the pod to + be scheduled on that node. + displayName: NodeSelector + path: driver.initContainers[0].nodeSelector + - description: Tolerations is the list of tolerations for the driver pods + displayName: Tolerations + path: driver.initContainers[0].tolerations + - description: Node is the specification for Node plugin only + displayName: Node specification + path: driver.node + - description: Args is the set of arguments for the container + displayName: Container Arguments + path: driver.node.args + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: driver.node.enabled + - description: Envs is the set of environment variables for the container + displayName: Container Environment vars + path: driver.node.envs + - description: Image is the image tag for the Container + displayName: Container Image + path: driver.node.image + - description: ImagePullPolicy is the image pull policy for the image + displayName: Container Image Pull Policy + path: driver.node.imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - description: Name is the name of Container + displayName: Container Name + path: driver.node.name + - description: NodeSelector is a selector which must be true for the pod to + fit on a node. Selector which must match a node's labels for the pod to + be scheduled on that node. + displayName: NodeSelector + path: driver.node.nodeSelector + - description: Tolerations is the list of tolerations for the driver pods + displayName: Tolerations + path: driver.node.tolerations + - description: Replicas is the count of controllers for Controller plugin + displayName: Controller count + path: driver.replicas + - description: SideCars is the specification for CSI sidecar containers + displayName: CSI SideCars specification + path: driver.sideCars + - description: Args is the set of arguments for the container + displayName: Container Arguments + path: driver.sideCars[0].args + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: driver.sideCars[0].enabled + - description: Envs is the set of environment variables for the container + displayName: Container Environment vars + path: driver.sideCars[0].envs + - description: Image is the image tag for the Container + displayName: Container Image + path: driver.sideCars[0].image + - description: ImagePullPolicy is the image pull policy for the image + displayName: Container Image Pull Policy + path: driver.sideCars[0].imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - description: Name is the name of Container + displayName: Container Name + path: driver.sideCars[0].name + - description: NodeSelector is a selector which must be true for the pod to + fit on a node. Selector which must match a node's labels for the pod to + be scheduled on that node. + displayName: NodeSelector + path: driver.sideCars[0].nodeSelector + - description: Tolerations is the list of tolerations for the driver pods + displayName: Tolerations + path: driver.sideCars[0].tolerations + - description: SnapshotClass is the specification for Snapshot Classes + displayName: Snapshot Classes + path: driver.snapshotClass + - description: Name is the name of the Snapshot Class + displayName: Snapshot Class Name + path: driver.snapshotClass[0].name + - description: Parameters is a map of driver specific parameters for snapshot + class + displayName: Snapshot Class Parameters + path: driver.snapshotClass[0].parameters + - description: TLSCertSecret is the name of the TLS Cert secret + displayName: TLSCert Secret + path: driver.tlsCertSecret + - description: Components is the specification for SM components containers + displayName: ContainerStorageModule components specification + path: modules[0].components + - description: Args is the set of arguments for the container + displayName: Container Arguments + path: modules[0].components[0].args + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: modules[0].components[0].enabled + - description: Envs is the set of environment variables for the container + displayName: Container Environment vars + path: modules[0].components[0].envs + - description: Image is the image tag for the Container + displayName: Container Image + path: modules[0].components[0].image + - description: ImagePullPolicy is the image pull policy for the image + displayName: Container Image Pull Policy + path: modules[0].components[0].imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - description: Name is the name of Container + displayName: Container Name + path: modules[0].components[0].name + - description: NodeSelector is a selector which must be true for the pod to + fit on a node. Selector which must match a node's labels for the pod to + be scheduled on that node. + displayName: NodeSelector + path: modules[0].components[0].nodeSelector + - description: Tolerations is the list of tolerations for the driver pods + displayName: Tolerations + path: modules[0].components[0].tolerations + - description: ConfigVersion is the configuration version of the driver + displayName: Config Version + path: modules[0].configVersion + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: modules[0].enabled + - description: Name is name of ContainerStorageModule modules + displayName: Name + path: modules[0].name + statusDescriptors: + - description: ControllerStatus is the status of Controller pods + displayName: ControllerStatus + path: controllerStatus + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podStatuses + - description: NodeStatus is the status of Controller pods + displayName: NodeStatus + path: nodeStatus + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podStatuses + - description: State is the state of the driver installation + displayName: State + path: state + x-descriptors: + - urn:alm:descriptor:text + version: v1alpha1 + description: Common Operator for installing various Dell CSI Drivers and Dell CSM + Modules + displayName: dell-csm-operator + icon: + - base64data: "" + mediatype: "" + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + - endpoints + - events + - persistentvolumeclaims + - pods + - secrets + - serviceaccounts + - services + - services/finalizers + verbs: + - '*' + - apiGroups: + - "" + resourceNames: + - dell-csm-operator-controller-manager + resources: + - deployments/finalizers + verbs: + - update + - apiGroups: + - "" + resources: + - nodes + verbs: + - create + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - persistentvolumeclaims/status + verbs: + - patch + - update + - apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - create + - delete + - list + - watch + - apiGroups: + - apps + resources: + - daemonsets + - deployments + - replicasets + - statefulsets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - csi.storage.k8s.io + resources: + - csinodeinfos + verbs: + - get + - list + - watch + - apiGroups: + - monitoring.coreos.com + resources: + - servicemonitors + verbs: + - create + - get + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterrolebindings + - clusterroles + - replicasets + - rolebindings + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterroles/finalizers + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - rbac.authorization.k8s.io + resources: + - roles + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - security.openshift.io + resourceNames: + - privileged + resources: + - securitycontextconstraints + verbs: + - use + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotclasses + - volumesnapshotcontents + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotcontents/status + verbs: + - update + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots + - volumesnapshots/status + verbs: + - get + - list + - update + - watch + - apiGroups: + - storage.dell.com + resources: + - containerstoragemodules + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - storage.dell.com + resources: + - containerstoragemodules/finalizers + verbs: + - update + - apiGroups: + - storage.dell.com + resources: + - containerstoragemodules/status + verbs: + - get + - patch + - update + - apiGroups: + - storage.k8s.io + resources: + - csidrivers + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - storage.k8s.io + resources: + - csinodes + verbs: + - create + - get + - list + - update + - watch + - apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - storage.k8s.io + resources: + - volumeattachments + verbs: + - create + - get + - list + - patch + - update + - watch + - apiGroups: + - storage.k8s.io + resources: + - volumeattachments/status + verbs: + - patch + serviceAccountName: dell-csm-operator-controller-manager + deployments: + - name: dell-csm-operator-controller-manager + spec: + replicas: 1 + selector: + matchLabels: + control-plane: controller-manager + strategy: {} + template: + metadata: + labels: + control-plane: controller-manager + spec: + containers: + - args: + - --secure-listen-address=0.0.0.0:8443 + - --upstream=http://127.0.0.1:8080/ + - --logtostderr=true + - --v=10 + image: gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0 + name: kube-rbac-proxy + ports: + - containerPort: 8443 + name: https + protocol: TCP + resources: {} + - args: + - --health-probe-bind-address=:8081 + - --metrics-bind-address=127.0.0.1:8080 + - --leader-elect + command: + - /manager + image: dellemc/dell-csm-operator:0.1.0 + imagePullPolicy: Always + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 200m + memory: 100Mi + requests: + cpu: 100m + memory: 20Mi + securityContext: + allowPrivilegeEscalation: false + securityContext: + runAsNonRoot: true + serviceAccountName: dell-csm-operator-controller-manager + terminationGracePeriodSeconds: 10 + strategy: deployment + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - Dell CSM Operator + - Dell CSI Driver + - Dell CSM Modules + - Powerscale + - Authorization + links: + - name: Dell Csm Operator + url: https://dell-csm-operator.domain + maintainers: + - email: dell.csm.operator@dell.com + name: Dell CSM Operator + maturity: alpha + provider: + name: Dell Inc. + url: https://github.com/dell/csm-operator + version: 0.1.0 diff --git a/bundle/manifests/storage.dell.com_containerstoragemodules.yaml b/bundle/manifests/storage.dell.com_containerstoragemodules.yaml new file mode 100644 index 000000000..dc57e3ca7 --- /dev/null +++ b/bundle/manifests/storage.dell.com_containerstoragemodules.yaml @@ -0,0 +1,1302 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.1 + creationTimestamp: null + name: containerstoragemodules.storage.dell.com +spec: + group: storage.dell.com + names: + kind: ContainerStorageModule + listKind: ContainerStorageModuleList + plural: containerstoragemodules + shortNames: + - csm + singular: containerstoragemodule + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .metadata.creationTimestamp + name: CreationTime + type: date + - description: Type of CSIDriver + jsonPath: .spec.driver.csiDriverType + name: CSIDriverType + type: string + - description: Version of CSIDriver + jsonPath: .spec.driver.configVersion + name: ConfigVersion + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ContainerStorageModule is the Schema for the containerstoragemodules + API + 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: ContainerStorageModuleSpec defines the desired state of ContainerStorageModule + properties: + driver: + description: Driver is a CSI Drivers for Dell EMC + properties: + authSecret: + description: AuthSecret is the name of the credentials secret + for the driver + type: string + common: + description: Common is the common specification for both controller + and node plugins + properties: + args: + description: Args is the set of arguments for the container + items: + type: string + type: array + enabled: + description: Enabled is used to indicate wether or not to + deploy a module + type: boolean + envs: + description: Envs is the set of environment variables for + the container + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in + the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Defaults to + "".' + type: string + valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or + its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in + the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of + the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the pod's + namespace + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + image: + description: Image is the image tag for the Container + type: string + imagePullPolicy: + description: ImagePullPolicy is the image pull policy for + the image + type: string + name: + description: Name is the name of Container + type: string + nodeSelector: + additionalProperties: + type: string + description: NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match + a node's labels for the pod to be scheduled on that node. + type: object + tolerations: + description: Tolerations is the list of tolerations for the + driver pods + items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . + properties: + effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. + type: string + key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. + type: string + operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period + of time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration + matches to. If the operator is Exists, the value should + be empty, otherwise just a regular string. + type: string + type: object + type: array + type: object + configVersion: + description: ConfigVersion is the configuration version of the + driver + type: string + controller: + description: Controller is the specification for Controller plugin + only + properties: + args: + description: Args is the set of arguments for the container + items: + type: string + type: array + enabled: + description: Enabled is used to indicate wether or not to + deploy a module + type: boolean + envs: + description: Envs is the set of environment variables for + the container + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in + the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Defaults to + "".' + type: string + valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or + its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in + the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of + the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the pod's + namespace + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + image: + description: Image is the image tag for the Container + type: string + imagePullPolicy: + description: ImagePullPolicy is the image pull policy for + the image + type: string + name: + description: Name is the name of Container + type: string + nodeSelector: + additionalProperties: + type: string + description: NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match + a node's labels for the pod to be scheduled on that node. + type: object + tolerations: + description: Tolerations is the list of tolerations for the + driver pods + items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . + properties: + effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. + type: string + key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. + type: string + operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period + of time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration + matches to. If the operator is Exists, the value should + be empty, otherwise just a regular string. + type: string + type: object + type: array + type: object + csiDriverType: + description: CSIDriverType is the CSI Driver type for Dell EMC + - e.g, powermax, powerflex,... + type: string + dnsPolicy: + description: DNSPolicy is the dnsPolicy of the daemonset for Node + plugin + type: string + forceRemoveDriver: + description: ForceRemoveDriver is the boolean flag used to remove + driver deployment when CR is deleted + type: boolean + forceUpdate: + description: ForceUpdate is the boolean flag used to force an + update of the driver instance + type: boolean + initContainers: + description: InitContainers is the specification for Driver InitContainers + items: + description: ContainerTemplate template + properties: + args: + description: Args is the set of arguments for the container + items: + type: string + type: array + enabled: + description: Enabled is used to indicate wether or not to + deploy a module + type: boolean + envs: + description: Envs is the set of environment variables for + the container + items: + description: EnvVar represents an environment variable + present in a Container. + properties: + name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in + the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for + volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of + the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the + pod's namespace + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + image: + description: Image is the image tag for the Container + type: string + imagePullPolicy: + description: ImagePullPolicy is the image pull policy for + the image + type: string + name: + description: Name is the name of Container + type: string + nodeSelector: + additionalProperties: + type: string + description: NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match + a node's labels for the pod to be scheduled on that node. + type: object + tolerations: + description: Tolerations is the list of tolerations for + the driver pods + items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple + using the matching operator . + properties: + effect: + description: Effect indicates the taint effect to + match. Empty means match all taint effects. When + specified, allowed values are NoSchedule, PreferNoSchedule + and NoExecute. + type: string + key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If + the key is empty, operator must be Exists; this + combination means to match all values and all keys. + type: string + operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints + of a particular category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period + of time the toleration (which must be of effect + NoExecute, otherwise this field is ignored) tolerates + the taint. By default, it is not set, which means + tolerate the taint forever (do not evict). Zero + and negative values will be treated as 0 (evict + immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration + matches to. If the operator is Exists, the value + should be empty, otherwise just a regular string. + type: string + type: object + type: array + type: object + type: array + node: + description: Node is the specification for Node plugin only + properties: + args: + description: Args is the set of arguments for the container + items: + type: string + type: array + enabled: + description: Enabled is used to indicate wether or not to + deploy a module + type: boolean + envs: + description: Envs is the set of environment variables for + the container + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in + the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Defaults to + "".' + type: string + valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or + its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in + the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of + the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the pod's + namespace + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + image: + description: Image is the image tag for the Container + type: string + imagePullPolicy: + description: ImagePullPolicy is the image pull policy for + the image + type: string + name: + description: Name is the name of Container + type: string + nodeSelector: + additionalProperties: + type: string + description: NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match + a node's labels for the pod to be scheduled on that node. + type: object + tolerations: + description: Tolerations is the list of tolerations for the + driver pods + items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . + properties: + effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. + type: string + key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. + type: string + operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period + of time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration + matches to. If the operator is Exists, the value should + be empty, otherwise just a regular string. + type: string + type: object + type: array + type: object + replicas: + description: Replicas is the count of controllers for Controller + plugin + format: int32 + type: integer + sideCars: + description: SideCars is the specification for CSI sidecar containers + items: + description: ContainerTemplate template + properties: + args: + description: Args is the set of arguments for the container + items: + type: string + type: array + enabled: + description: Enabled is used to indicate wether or not to + deploy a module + type: boolean + envs: + description: Envs is the set of environment variables for + the container + items: + description: EnvVar represents an environment variable + present in a Container. + properties: + name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in + the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for + volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of + the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the + pod's namespace + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + image: + description: Image is the image tag for the Container + type: string + imagePullPolicy: + description: ImagePullPolicy is the image pull policy for + the image + type: string + name: + description: Name is the name of Container + type: string + nodeSelector: + additionalProperties: + type: string + description: NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match + a node's labels for the pod to be scheduled on that node. + type: object + tolerations: + description: Tolerations is the list of tolerations for + the driver pods + items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple + using the matching operator . + properties: + effect: + description: Effect indicates the taint effect to + match. Empty means match all taint effects. When + specified, allowed values are NoSchedule, PreferNoSchedule + and NoExecute. + type: string + key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If + the key is empty, operator must be Exists; this + combination means to match all values and all keys. + type: string + operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints + of a particular category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period + of time the toleration (which must be of effect + NoExecute, otherwise this field is ignored) tolerates + the taint. By default, it is not set, which means + tolerate the taint forever (do not evict). Zero + and negative values will be treated as 0 (evict + immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration + matches to. If the operator is Exists, the value + should be empty, otherwise just a regular string. + type: string + type: object + type: array + type: object + type: array + snapshotClass: + description: SnapshotClass is the specification for Snapshot Classes + items: + description: SnapshotClass struct + properties: + name: + description: Name is the name of the Snapshot Class + type: string + parameters: + additionalProperties: + type: string + description: Parameters is a map of driver specific parameters + for snapshot class + type: object + type: object + type: array + tlsCertSecret: + description: TLSCertSecret is the name of the TLS Cert secret + type: string + type: object + modules: + description: Modules is list of Container Storage Module modules you + want to deploy + items: + description: Module defines the desired state of a ContainerStorageModuleModules + properties: + components: + description: Components is the specification for SM components + containers + items: + description: ContainerTemplate template + properties: + args: + description: Args is the set of arguments for the container + items: + type: string + type: array + enabled: + description: Enabled is used to indicate wether or not + to deploy a module + type: boolean + envs: + description: Envs is the set of environment variables + for the container + items: + description: EnvVar represents an environment variable + present in a Container. + properties: + name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select + in the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for + volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format + of the exposed resources, defaults to + "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the + pod's namespace + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + image: + description: Image is the image tag for the Container + type: string + imagePullPolicy: + description: ImagePullPolicy is the image pull policy + for the image + type: string + name: + description: Name is the name of Container + type: string + nodeSelector: + additionalProperties: + type: string + description: NodeSelector is a selector which must be + true for the pod to fit on a node. Selector which must + match a node's labels for the pod to be scheduled on + that node. + type: object + tolerations: + description: Tolerations is the list of tolerations for + the driver pods + items: + description: The pod this Toleration is attached to + tolerates any taint that matches the triple + using the matching operator . + properties: + effect: + description: Effect indicates the taint effect to + match. Empty means match all taint effects. When + specified, allowed values are NoSchedule, PreferNoSchedule + and NoExecute. + type: string + key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; + this combination means to match all values and + all keys. + type: string + operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints + of a particular category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period + of time the toleration (which must be of effect + NoExecute, otherwise this field is ignored) tolerates + the taint. By default, it is not set, which means + tolerate the taint forever (do not evict). Zero + and negative values will be treated as 0 (evict + immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration + matches to. If the operator is Exists, the value + should be empty, otherwise just a regular string. + type: string + type: object + type: array + type: object + type: array + configVersion: + description: ConfigVersion is the configuration version of the + driver + type: string + enabled: + description: Enabled is used to indicate wether or not to deploy + a module + type: boolean + name: + description: Name is name of ContainerStorageModule modules + type: string + type: object + type: array + type: object + status: + description: ContainerStorageModuleStatus defines the observed state of + ContainerStorageModule + properties: + controllerStatus: + description: ControllerStatus is the status of Controller pods + properties: + available: + type: string + desired: + type: string + failed: + type: string + type: object + nodeStatus: + description: NodeStatus is the status of Controller pods + properties: + available: + type: string + desired: + type: string + failed: + type: string + type: object + state: + description: State is the state of the driver installation + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/bundle/metadata/annotations.yaml b/bundle/metadata/annotations.yaml new file mode 100644 index 000000000..9801c6515 --- /dev/null +++ b/bundle/metadata/annotations.yaml @@ -0,0 +1,14 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: dell-csm-operator + operators.operatorframework.io.bundle.channels.v1: alpha + operators.operatorframework.io.metrics.builder: operator-sdk-v1.14.0+git + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3 + + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ diff --git a/bundle/tests/scorecard/config.yaml b/bundle/tests/scorecard/config.yaml new file mode 100644 index 000000000..2cbf8825d --- /dev/null +++ b/bundle/tests/scorecard/config.yaml @@ -0,0 +1,70 @@ +apiVersion: scorecard.operatorframework.io/v1alpha3 +kind: Configuration +metadata: + name: config +stages: +- parallel: true + tests: + - entrypoint: + - scorecard-test + - basic-check-spec + image: quay.io/operator-framework/scorecard-test:v1.13.1 + labels: + suite: basic + test: basic-check-spec-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-bundle-validation + image: quay.io/operator-framework/scorecard-test:v1.13.1 + labels: + suite: olm + test: olm-bundle-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-validation + image: quay.io/operator-framework/scorecard-test:v1.13.1 + labels: + suite: olm + test: olm-crds-have-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-resources + image: quay.io/operator-framework/scorecard-test:v1.13.1 + labels: + suite: olm + test: olm-crds-have-resources-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-spec-descriptors + image: quay.io/operator-framework/scorecard-test:v1.13.1 + labels: + suite: olm + test: olm-spec-descriptors-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-status-descriptors + image: quay.io/operator-framework/scorecard-test:v1.13.1 + labels: + suite: olm + test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {} diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index 73c350872..538c69f29 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -10,7 +10,3 @@ configMapGenerator: name: manager-config apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization -images: -- name: controller - newName: controller - newTag: v0.0.2 diff --git a/config/manifests/bases/dell-csm-operator.clusterserviceversion.yaml b/config/manifests/bases/dell-csm-operator.clusterserviceversion.yaml new file mode 100644 index 000000000..dab4325c9 --- /dev/null +++ b/config/manifests/bases/dell-csm-operator.clusterserviceversion.yaml @@ -0,0 +1,301 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: '[]' + capabilities: Basic Install + name: dell-csm-operator.v0.0.0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: ContainerStorageModule is the Schema for the containerstoragemodules + API + displayName: Container Storage Module + kind: ContainerStorageModule + name: containerstoragemodules.storage.dell.com + specDescriptors: + - description: AuthSecret is the name of the credentials secret for the driver + displayName: Auth Secret + path: driver.authSecret + - description: Common is the common specification for both controller and node + plugins + displayName: Common specification + path: driver.common + - description: Args is the set of arguments for the container + displayName: Container Arguments + path: driver.common.args + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: driver.common.enabled + - description: Envs is the set of environment variables for the container + displayName: Container Environment vars + path: driver.common.envs + - description: Image is the image tag for the Container + displayName: Container Image + path: driver.common.image + - description: ImagePullPolicy is the image pull policy for the image + displayName: Container Image Pull Policy + path: driver.common.imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - description: Name is the name of Container + displayName: Container Name + path: driver.common.name + - description: NodeSelector is a selector which must be true for the pod to + fit on a node. Selector which must match a node's labels for the pod to + be scheduled on that node. + displayName: NodeSelector + path: driver.common.nodeSelector + - description: Tolerations is the list of tolerations for the driver pods + displayName: Tolerations + path: driver.common.tolerations + - description: ConfigVersion is the configuration version of the driver + displayName: Config Version + path: driver.configVersion + - description: Controller is the specification for Controller plugin only + displayName: Controller Specification + path: driver.controller + - description: Args is the set of arguments for the container + displayName: Container Arguments + path: driver.controller.args + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: driver.controller.enabled + - description: Envs is the set of environment variables for the container + displayName: Container Environment vars + path: driver.controller.envs + - description: Image is the image tag for the Container + displayName: Container Image + path: driver.controller.image + - description: ImagePullPolicy is the image pull policy for the image + displayName: Container Image Pull Policy + path: driver.controller.imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - description: Name is the name of Container + displayName: Container Name + path: driver.controller.name + - description: NodeSelector is a selector which must be true for the pod to + fit on a node. Selector which must match a node's labels for the pod to + be scheduled on that node. + displayName: NodeSelector + path: driver.controller.nodeSelector + - description: Tolerations is the list of tolerations for the driver pods + displayName: Tolerations + path: driver.controller.tolerations + - description: CSIDriverType is the CSI Driver type for Dell EMC - e.g, powermax, + powerflex,... + displayName: CSI Driver Type + path: driver.csiDriverType + - description: DNSPolicy is the dnsPolicy of the daemonset for Node plugin + displayName: DNSPolicy + path: driver.dnsPolicy + - description: ForceRemoveDriver is the boolean flag used to remove driver deployment + when CR is deleted + displayName: Force Remove Driver + path: driver.forceRemoveDriver + - description: ForceUpdate is the boolean flag used to force an update of the + driver instance + displayName: Force update + path: driver.forceUpdate + - description: Args is the set of arguments for the container + displayName: Container Arguments + path: driver.initContainers[0].args + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: driver.initContainers[0].enabled + - description: Envs is the set of environment variables for the container + displayName: Container Environment vars + path: driver.initContainers[0].envs + - description: Image is the image tag for the Container + displayName: Container Image + path: driver.initContainers[0].image + - description: ImagePullPolicy is the image pull policy for the image + displayName: Container Image Pull Policy + path: driver.initContainers[0].imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - description: Name is the name of Container + displayName: Container Name + path: driver.initContainers[0].name + - description: NodeSelector is a selector which must be true for the pod to + fit on a node. Selector which must match a node's labels for the pod to + be scheduled on that node. + displayName: NodeSelector + path: driver.initContainers[0].nodeSelector + - description: Tolerations is the list of tolerations for the driver pods + displayName: Tolerations + path: driver.initContainers[0].tolerations + - description: Node is the specification for Node plugin only + displayName: Node specification + path: driver.node + - description: Args is the set of arguments for the container + displayName: Container Arguments + path: driver.node.args + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: driver.node.enabled + - description: Envs is the set of environment variables for the container + displayName: Container Environment vars + path: driver.node.envs + - description: Image is the image tag for the Container + displayName: Container Image + path: driver.node.image + - description: ImagePullPolicy is the image pull policy for the image + displayName: Container Image Pull Policy + path: driver.node.imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - description: Name is the name of Container + displayName: Container Name + path: driver.node.name + - description: NodeSelector is a selector which must be true for the pod to + fit on a node. Selector which must match a node's labels for the pod to + be scheduled on that node. + displayName: NodeSelector + path: driver.node.nodeSelector + - description: Tolerations is the list of tolerations for the driver pods + displayName: Tolerations + path: driver.node.tolerations + - description: Replicas is the count of controllers for Controller plugin + displayName: Controller count + path: driver.replicas + - description: SideCars is the specification for CSI sidecar containers + displayName: CSI SideCars specification + path: driver.sideCars + - description: Args is the set of arguments for the container + displayName: Container Arguments + path: driver.sideCars[0].args + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: driver.sideCars[0].enabled + - description: Envs is the set of environment variables for the container + displayName: Container Environment vars + path: driver.sideCars[0].envs + - description: Image is the image tag for the Container + displayName: Container Image + path: driver.sideCars[0].image + - description: ImagePullPolicy is the image pull policy for the image + displayName: Container Image Pull Policy + path: driver.sideCars[0].imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - description: Name is the name of Container + displayName: Container Name + path: driver.sideCars[0].name + - description: NodeSelector is a selector which must be true for the pod to + fit on a node. Selector which must match a node's labels for the pod to + be scheduled on that node. + displayName: NodeSelector + path: driver.sideCars[0].nodeSelector + - description: Tolerations is the list of tolerations for the driver pods + displayName: Tolerations + path: driver.sideCars[0].tolerations + - description: SnapshotClass is the specification for Snapshot Classes + displayName: Snapshot Classes + path: driver.snapshotClass + - description: Name is the name of the Snapshot Class + displayName: Snapshot Class Name + path: driver.snapshotClass[0].name + - description: Parameters is a map of driver specific parameters for snapshot + class + displayName: Snapshot Class Parameters + path: driver.snapshotClass[0].parameters + - description: TLSCertSecret is the name of the TLS Cert secret + displayName: TLSCert Secret + path: driver.tlsCertSecret + - description: Components is the specification for SM components containers + displayName: ContainerStorageModule components specification + path: modules[0].components + - description: Args is the set of arguments for the container + displayName: Container Arguments + path: modules[0].components[0].args + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: modules[0].components[0].enabled + - description: Envs is the set of environment variables for the container + displayName: Container Environment vars + path: modules[0].components[0].envs + - description: Image is the image tag for the Container + displayName: Container Image + path: modules[0].components[0].image + - description: ImagePullPolicy is the image pull policy for the image + displayName: Container Image Pull Policy + path: modules[0].components[0].imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - description: Name is the name of Container + displayName: Container Name + path: modules[0].components[0].name + - description: NodeSelector is a selector which must be true for the pod to + fit on a node. Selector which must match a node's labels for the pod to + be scheduled on that node. + displayName: NodeSelector + path: modules[0].components[0].nodeSelector + - description: Tolerations is the list of tolerations for the driver pods + displayName: Tolerations + path: modules[0].components[0].tolerations + - description: ConfigVersion is the configuration version of the driver + displayName: Config Version + path: modules[0].configVersion + - description: Enabled is used to indicate wether or not to deploy a module + displayName: Enabled + path: modules[0].enabled + - description: Name is name of ContainerStorageModule modules + displayName: Name + path: modules[0].name + statusDescriptors: + - description: ControllerStatus is the status of Controller pods + displayName: ControllerStatus + path: controllerStatus + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podStatuses + - description: NodeStatus is the status of Controller pods + displayName: NodeStatus + path: nodeStatus + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podStatuses + - description: State is the state of the driver installation + displayName: State + path: state + x-descriptors: + - urn:alm:descriptor:text + version: v1alpha1 + description: Common Operator for installing various Dell CSI Drivers and Dell CSM + Modules + displayName: dell-csm-operator + icon: + - base64data: "" + mediatype: "" + install: + spec: + deployments: null + strategy: "" + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - Dell CSM Operator + - Dell CSI Driver + - Dell CSM Modules + - Powerscale + - Authorization + links: + - name: Dell Csm Operator + url: https://dell-csm-operator.domain + maintainers: + - email: dell.csm.operator@dell.com + name: Dell CSM Operator + maturity: alpha + provider: + name: Dell Inc. + url: https://github.com/dell/csm-operator + version: 0.0.0 diff --git a/config/samples/kustomization.yaml b/config/samples/kustomization.yaml index f2d6e6513..a08e47335 100644 --- a/config/samples/kustomization.yaml +++ b/config/samples/kustomization.yaml @@ -1,9 +1,4 @@ ## Append samples you want in your CSV to this file as resources ## resources: - storage_v1_csm_powerscale.yaml - - storage_v1_csm_powermax.yaml - - storage_v1_csm_powerstore.yaml - - storage_v1_csm_observability.yaml - - storage_v1_csm_powerflex.yaml - - storage_v1_csm_unity.yaml #+kubebuilder:scaffold:manifestskustomizesamples \ No newline at end of file diff --git a/deploy/crds/storage.dell.com_containerstoragemodules.yaml b/deploy/crds/storage.dell.com_containerstoragemodules.yaml index e131fd376..1477949cc 100644 --- a/deploy/crds/storage.dell.com_containerstoragemodules.yaml +++ b/deploy/crds/storage.dell.com_containerstoragemodules.yaml @@ -1,5 +1,3 @@ - ---- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: @@ -33,18 +31,13 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: ContainerStorageModule is the Schema for the containerstoragemodules - API + description: ContainerStorageModule is the Schema for the containerstoragemodules API 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' + 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' + 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 @@ -55,12 +48,10 @@ spec: description: Driver is a CSI Drivers for Dell EMC properties: authSecret: - description: AuthSecret is the name of the credentials secret - for the driver + description: AuthSecret is the name of the credentials secret for the driver type: string common: - description: Common is the common specification for both controller - and node plugins + description: Common is the common specification for both controller and node plugins properties: args: description: Args is the set of arguments for the container @@ -68,34 +59,21 @@ spec: type: string type: array enabled: - description: Enabled is used to indicate wether or not to - deploy a module + description: Enabled is used to indicate wether or not to deploy a module type: boolean envs: - description: Envs is the set of environment variables for - the container + description: Envs is the set of environment variables for the container items: - description: EnvVar represents an environment variable present - in a Container. + description: EnvVar represents an environment variable present in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in - the container and any service environment variables. - If a variable cannot be resolved, the reference in - the input string will be unchanged. The $(VAR_NAME) - syntax can be escaped with a double $$, ie: $$(VAR_NAME). - Escaped references will never be expanded, regardless - of whether the variable exists or not. Defaults to - "".' + description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: string valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. + description: Source for the environment variable's value. Cannot be used if value is not empty. properties: configMapKeyRef: description: Selects a key of a ConfigMap. @@ -104,53 +82,37 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: Specify whether the ConfigMap or - its key must be defined + description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' properties: containerName: - description: 'Container name: required for volumes, - optional for env vars' + description: 'Container name: required for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: @@ -160,22 +122,16 @@ spec: - resource type: object secretKeyRef: - description: Selects a key of a secret in the pod's - namespace + description: Selects a key of a secret in the pod's namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. + description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: Specify whether the Secret or its - key must be defined + description: Specify whether the Secret or its key must be defined type: boolean required: - key @@ -189,8 +145,7 @@ spec: description: Image is the image tag for the Container type: string imagePullPolicy: - description: ImagePullPolicy is the image pull policy for - the image + description: ImagePullPolicy is the image pull policy for the image type: string name: description: Name is the name of Container @@ -198,61 +153,37 @@ spec: nodeSelector: additionalProperties: type: string - description: NodeSelector is a selector which must be true - for the pod to fit on a node. Selector which must match - a node's labels for the pod to be scheduled on that node. + description: NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. type: object tolerations: - description: Tolerations is the list of tolerations for the - driver pods + description: Tolerations is the list of tolerations for the driver pods items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple using - the matching operator . + description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. - Empty means match all taint effects. When specified, - allowed values are NoSchedule, PreferNoSchedule and - NoExecute. + description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration - applies to. Empty means match all taint keys. If the - key is empty, operator must be Exists; this combination - means to match all values and all keys. + description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship - to the value. Valid operators are Exists and Equal. - Defaults to Equal. Exists is equivalent to wildcard - for value, so that a pod can tolerate all taints of - a particular category. + description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period - of time the toleration (which must be of effect NoExecute, - otherwise this field is ignored) tolerates the taint. - By default, it is not set, which means tolerate the - taint forever (do not evict). Zero and negative values - will be treated as 0 (evict immediately) by the system. + description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration - matches to. If the operator is Exists, the value should - be empty, otherwise just a regular string. + description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object configVersion: - description: ConfigVersion is the configuration version of the - driver + description: ConfigVersion is the configuration version of the driver type: string controller: - description: Controller is the specification for Controller plugin - only + description: Controller is the specification for Controller plugin only properties: args: description: Args is the set of arguments for the container @@ -260,34 +191,21 @@ spec: type: string type: array enabled: - description: Enabled is used to indicate wether or not to - deploy a module + description: Enabled is used to indicate wether or not to deploy a module type: boolean envs: - description: Envs is the set of environment variables for - the container + description: Envs is the set of environment variables for the container items: - description: EnvVar represents an environment variable present - in a Container. + description: EnvVar represents an environment variable present in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in - the container and any service environment variables. - If a variable cannot be resolved, the reference in - the input string will be unchanged. The $(VAR_NAME) - syntax can be escaped with a double $$, ie: $$(VAR_NAME). - Escaped references will never be expanded, regardless - of whether the variable exists or not. Defaults to - "".' + description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: string valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. + description: Source for the environment variable's value. Cannot be used if value is not empty. properties: configMapKeyRef: description: Selects a key of a ConfigMap. @@ -296,53 +214,37 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: Specify whether the ConfigMap or - its key must be defined + description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' properties: containerName: - description: 'Container name: required for volumes, - optional for env vars' + description: 'Container name: required for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: @@ -352,22 +254,16 @@ spec: - resource type: object secretKeyRef: - description: Selects a key of a secret in the pod's - namespace + description: Selects a key of a secret in the pod's namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. + description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: Specify whether the Secret or its - key must be defined + description: Specify whether the Secret or its key must be defined type: boolean required: - key @@ -381,8 +277,7 @@ spec: description: Image is the image tag for the Container type: string imagePullPolicy: - description: ImagePullPolicy is the image pull policy for - the image + description: ImagePullPolicy is the image pull policy for the image type: string name: description: Name is the name of Container @@ -390,69 +285,43 @@ spec: nodeSelector: additionalProperties: type: string - description: NodeSelector is a selector which must be true - for the pod to fit on a node. Selector which must match - a node's labels for the pod to be scheduled on that node. + description: NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. type: object tolerations: - description: Tolerations is the list of tolerations for the - driver pods + description: Tolerations is the list of tolerations for the driver pods items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple using - the matching operator . + description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. - Empty means match all taint effects. When specified, - allowed values are NoSchedule, PreferNoSchedule and - NoExecute. + description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration - applies to. Empty means match all taint keys. If the - key is empty, operator must be Exists; this combination - means to match all values and all keys. + description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship - to the value. Valid operators are Exists and Equal. - Defaults to Equal. Exists is equivalent to wildcard - for value, so that a pod can tolerate all taints of - a particular category. + description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period - of time the toleration (which must be of effect NoExecute, - otherwise this field is ignored) tolerates the taint. - By default, it is not set, which means tolerate the - taint forever (do not evict). Zero and negative values - will be treated as 0 (evict immediately) by the system. + description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration - matches to. If the operator is Exists, the value should - be empty, otherwise just a regular string. + description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object csiDriverType: - description: CSIDriverType is the CSI Driver type for Dell EMC - - e.g, powermax, powerflex,... + description: CSIDriverType is the CSI Driver type for Dell EMC - e.g, powermax, powerflex,... type: string dnsPolicy: - description: DNSPolicy is the dnsPolicy of the daemonset for Node - plugin + description: DNSPolicy is the dnsPolicy of the daemonset for Node plugin type: string forceRemoveDriver: - description: ForceRemoveDriver is the boolean flag used to remove - driver deployment when CR is deleted + description: ForceRemoveDriver is the boolean flag used to remove driver deployment when CR is deleted type: boolean forceUpdate: - description: ForceUpdate is the boolean flag used to force an - update of the driver instance + description: ForceUpdate is the boolean flag used to force an update of the driver instance type: boolean initContainers: description: InitContainers is the specification for Driver InitContainers @@ -465,34 +334,21 @@ spec: type: string type: array enabled: - description: Enabled is used to indicate wether or not to - deploy a module + description: Enabled is used to indicate wether or not to deploy a module type: boolean envs: - description: Envs is the set of environment variables for - the container + description: Envs is the set of environment variables for the container items: - description: EnvVar represents an environment variable - present in a Container. + description: EnvVar represents an environment variable present in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are - expanded using the previous defined environment - variables in the container and any service environment - variables. If a variable cannot be resolved, the - reference in the input string will be unchanged. - The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never - be expanded, regardless of whether the variable - exists or not. Defaults to "".' + description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: string valueFrom: - description: Source for the environment variable's - value. Cannot be used if value is not empty. + description: Source for the environment variable's value. Cannot be used if value is not empty. properties: configMapKeyRef: description: Selects a key of a ConfigMap. @@ -501,53 +357,37 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: Specify whether the ConfigMap - or its key must be defined + description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' properties: containerName: - description: 'Container name: required for - volumes, optional for env vars' + description: 'Container name: required for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: @@ -557,22 +397,16 @@ spec: - resource type: object secretKeyRef: - description: Selects a key of a secret in the - pod's namespace + description: Selects a key of a secret in the pod's namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. + description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: Specify whether the Secret or - its key must be defined + description: Specify whether the Secret or its key must be defined type: boolean required: - key @@ -586,8 +420,7 @@ spec: description: Image is the image tag for the Container type: string imagePullPolicy: - description: ImagePullPolicy is the image pull policy for - the image + description: ImagePullPolicy is the image pull policy for the image type: string name: description: Name is the name of Container @@ -595,51 +428,28 @@ spec: nodeSelector: additionalProperties: type: string - description: NodeSelector is a selector which must be true - for the pod to fit on a node. Selector which must match - a node's labels for the pod to be scheduled on that node. + description: NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. type: object tolerations: - description: Tolerations is the list of tolerations for - the driver pods + description: Tolerations is the list of tolerations for the driver pods items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple - using the matching operator . + description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to - match. Empty means match all taint effects. When - specified, allowed values are NoSchedule, PreferNoSchedule - and NoExecute. + description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration - applies to. Empty means match all taint keys. If - the key is empty, operator must be Exists; this - combination means to match all values and all keys. + description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship - to the value. Valid operators are Exists and Equal. - Defaults to Equal. Exists is equivalent to wildcard - for value, so that a pod can tolerate all taints - of a particular category. + description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period - of time the toleration (which must be of effect - NoExecute, otherwise this field is ignored) tolerates - the taint. By default, it is not set, which means - tolerate the taint forever (do not evict). Zero - and negative values will be treated as 0 (evict - immediately) by the system. + description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration - matches to. If the operator is Exists, the value - should be empty, otherwise just a regular string. + description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array @@ -654,34 +464,21 @@ spec: type: string type: array enabled: - description: Enabled is used to indicate wether or not to - deploy a module + description: Enabled is used to indicate wether or not to deploy a module type: boolean envs: - description: Envs is the set of environment variables for - the container + description: Envs is the set of environment variables for the container items: - description: EnvVar represents an environment variable present - in a Container. + description: EnvVar represents an environment variable present in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in - the container and any service environment variables. - If a variable cannot be resolved, the reference in - the input string will be unchanged. The $(VAR_NAME) - syntax can be escaped with a double $$, ie: $$(VAR_NAME). - Escaped references will never be expanded, regardless - of whether the variable exists or not. Defaults to - "".' + description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: string valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. + description: Source for the environment variable's value. Cannot be used if value is not empty. properties: configMapKeyRef: description: Selects a key of a ConfigMap. @@ -690,53 +487,37 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: Specify whether the ConfigMap or - its key must be defined + description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' properties: containerName: - description: 'Container name: required for volumes, - optional for env vars' + description: 'Container name: required for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: @@ -746,22 +527,16 @@ spec: - resource type: object secretKeyRef: - description: Selects a key of a secret in the pod's - namespace + description: Selects a key of a secret in the pod's namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. + description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: Specify whether the Secret or its - key must be defined + description: Specify whether the Secret or its key must be defined type: boolean required: - key @@ -775,8 +550,7 @@ spec: description: Image is the image tag for the Container type: string imagePullPolicy: - description: ImagePullPolicy is the image pull policy for - the image + description: ImagePullPolicy is the image pull policy for the image type: string name: description: Name is the name of Container @@ -784,57 +558,34 @@ spec: nodeSelector: additionalProperties: type: string - description: NodeSelector is a selector which must be true - for the pod to fit on a node. Selector which must match - a node's labels for the pod to be scheduled on that node. + description: NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. type: object tolerations: - description: Tolerations is the list of tolerations for the - driver pods + description: Tolerations is the list of tolerations for the driver pods items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple using - the matching operator . + description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. - Empty means match all taint effects. When specified, - allowed values are NoSchedule, PreferNoSchedule and - NoExecute. + description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration - applies to. Empty means match all taint keys. If the - key is empty, operator must be Exists; this combination - means to match all values and all keys. + description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship - to the value. Valid operators are Exists and Equal. - Defaults to Equal. Exists is equivalent to wildcard - for value, so that a pod can tolerate all taints of - a particular category. + description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period - of time the toleration (which must be of effect NoExecute, - otherwise this field is ignored) tolerates the taint. - By default, it is not set, which means tolerate the - taint forever (do not evict). Zero and negative values - will be treated as 0 (evict immediately) by the system. + description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration - matches to. If the operator is Exists, the value should - be empty, otherwise just a regular string. + description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object replicas: - description: Replicas is the count of controllers for Controller - plugin + description: Replicas is the count of controllers for Controller plugin format: int32 type: integer sideCars: @@ -848,34 +599,21 @@ spec: type: string type: array enabled: - description: Enabled is used to indicate wether or not to - deploy a module + description: Enabled is used to indicate wether or not to deploy a module type: boolean envs: - description: Envs is the set of environment variables for - the container + description: Envs is the set of environment variables for the container items: - description: EnvVar represents an environment variable - present in a Container. + description: EnvVar represents an environment variable present in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are - expanded using the previous defined environment - variables in the container and any service environment - variables. If a variable cannot be resolved, the - reference in the input string will be unchanged. - The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never - be expanded, regardless of whether the variable - exists or not. Defaults to "".' + description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: string valueFrom: - description: Source for the environment variable's - value. Cannot be used if value is not empty. + description: Source for the environment variable's value. Cannot be used if value is not empty. properties: configMapKeyRef: description: Selects a key of a ConfigMap. @@ -884,53 +622,37 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: Specify whether the ConfigMap - or its key must be defined + description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' properties: containerName: - description: 'Container name: required for - volumes, optional for env vars' + description: 'Container name: required for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: @@ -940,22 +662,16 @@ spec: - resource type: object secretKeyRef: - description: Selects a key of a secret in the - pod's namespace + description: Selects a key of a secret in the pod's namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. + description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: Specify whether the Secret or - its key must be defined + description: Specify whether the Secret or its key must be defined type: boolean required: - key @@ -969,8 +685,7 @@ spec: description: Image is the image tag for the Container type: string imagePullPolicy: - description: ImagePullPolicy is the image pull policy for - the image + description: ImagePullPolicy is the image pull policy for the image type: string name: description: Name is the name of Container @@ -978,51 +693,28 @@ spec: nodeSelector: additionalProperties: type: string - description: NodeSelector is a selector which must be true - for the pod to fit on a node. Selector which must match - a node's labels for the pod to be scheduled on that node. + description: NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. type: object tolerations: - description: Tolerations is the list of tolerations for - the driver pods + description: Tolerations is the list of tolerations for the driver pods items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple - using the matching operator . + description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to - match. Empty means match all taint effects. When - specified, allowed values are NoSchedule, PreferNoSchedule - and NoExecute. + description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration - applies to. Empty means match all taint keys. If - the key is empty, operator must be Exists; this - combination means to match all values and all keys. + description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship - to the value. Valid operators are Exists and Equal. - Defaults to Equal. Exists is equivalent to wildcard - for value, so that a pod can tolerate all taints - of a particular category. + description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period - of time the toleration (which must be of effect - NoExecute, otherwise this field is ignored) tolerates - the taint. By default, it is not set, which means - tolerate the taint forever (do not evict). Zero - and negative values will be treated as 0 (evict - immediately) by the system. + description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration - matches to. If the operator is Exists, the value - should be empty, otherwise just a regular string. + description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array @@ -1039,8 +731,7 @@ spec: parameters: additionalProperties: type: string - description: Parameters is a map of driver specific parameters - for snapshot class + description: Parameters is a map of driver specific parameters for snapshot class type: object type: object type: array @@ -1049,14 +740,12 @@ spec: type: string type: object modules: - description: Modules is list of Container Storage Module modules you - want to deploy + description: Modules is list of Container Storage Module modules you want to deploy items: description: Module defines the desired state of a ContainerStorageModuleModules properties: components: - description: Components is the specification for SM components - containers + description: Components is the specification for SM components containers items: description: ContainerTemplate template properties: @@ -1066,34 +755,21 @@ spec: type: string type: array enabled: - description: Enabled is used to indicate wether or not - to deploy a module + description: Enabled is used to indicate wether or not to deploy a module type: boolean envs: - description: Envs is the set of environment variables - for the container + description: Envs is the set of environment variables for the container items: - description: EnvVar represents an environment variable - present in a Container. + description: EnvVar represents an environment variable present in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are - expanded using the previous defined environment - variables in the container and any service environment - variables. If a variable cannot be resolved, the - reference in the input string will be unchanged. - The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will - never be expanded, regardless of whether the variable - exists or not. Defaults to "".' + description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: string valueFrom: - description: Source for the environment variable's - value. Cannot be used if value is not empty. + description: Source for the environment variable's value. Cannot be used if value is not empty. properties: configMapKeyRef: description: Selects a key of a ConfigMap. @@ -1102,54 +778,37 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: Specify whether the ConfigMap - or its key must be defined + description: Specify whether the ConfigMap or its key must be defined type: boolean required: - key type: object fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select - in the specified API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' properties: containerName: - description: 'Container name: required for - volumes, optional for env vars' + description: 'Container name: required for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: @@ -1159,22 +818,16 @@ spec: - resource type: object secretKeyRef: - description: Selects a key of a secret in the - pod's namespace + description: Selects a key of a secret in the pod's namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. + description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: Specify whether the Secret - or its key must be defined + description: Specify whether the Secret or its key must be defined type: boolean required: - key @@ -1188,8 +841,7 @@ spec: description: Image is the image tag for the Container type: string imagePullPolicy: - description: ImagePullPolicy is the image pull policy - for the image + description: ImagePullPolicy is the image pull policy for the image type: string name: description: Name is the name of Container @@ -1197,65 +849,38 @@ spec: nodeSelector: additionalProperties: type: string - description: NodeSelector is a selector which must be - true for the pod to fit on a node. Selector which must - match a node's labels for the pod to be scheduled on - that node. + description: NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. type: object tolerations: - description: Tolerations is the list of tolerations for - the driver pods + description: Tolerations is the list of tolerations for the driver pods items: - description: The pod this Toleration is attached to - tolerates any taint that matches the triple - using the matching operator . + description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to - match. Empty means match all taint effects. When - specified, allowed values are NoSchedule, PreferNoSchedule - and NoExecute. + description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration - applies to. Empty means match all taint keys. - If the key is empty, operator must be Exists; - this combination means to match all values and - all keys. + description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship - to the value. Valid operators are Exists and Equal. - Defaults to Equal. Exists is equivalent to wildcard - for value, so that a pod can tolerate all taints - of a particular category. + description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period - of time the toleration (which must be of effect - NoExecute, otherwise this field is ignored) tolerates - the taint. By default, it is not set, which means - tolerate the taint forever (do not evict). Zero - and negative values will be treated as 0 (evict - immediately) by the system. + description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration - matches to. If the operator is Exists, the value - should be empty, otherwise just a regular string. + description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object type: array configVersion: - description: ConfigVersion is the configuration version of the - driver + description: ConfigVersion is the configuration version of the driver type: string enabled: - description: Enabled is used to indicate wether or not to deploy - a module + description: Enabled is used to indicate wether or not to deploy a module type: boolean name: description: Name is name of ContainerStorageModule modules @@ -1264,8 +889,7 @@ spec: type: array type: object status: - description: ContainerStorageModuleStatus defines the observed state of - ContainerStorageModule + description: ContainerStorageModuleStatus defines the observed state of ContainerStorageModule properties: controllerStatus: description: ControllerStatus is the status of Controller pods diff --git a/deploy/olm/operator_community.yaml b/deploy/olm/operator_community.yaml new file mode 100644 index 000000000..b827774e5 --- /dev/null +++ b/deploy/olm/operator_community.yaml @@ -0,0 +1,26 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: CatalogSource +metadata: + name: dell-csm-catalogsource + namespace: test-csm-operator-olm +spec: + sourceType: grpc + image: dellemc/dell-csm-operator:v0.1.0 +--- +apiVersion: operators.coreos.com/v1 +kind: OperatorGroup +metadata: + annotations: + olm.providedAPIs: ContainerStorageModule.v1alpha1.storage.dell.com + name: dell-csm-operatorgroup + namespace: test-csm-operator-olm +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: Subscription +metadata: + name: dell-csm-subscription + namespace: test-csm-operator-olm +spec: + name: dell-csm-operator + source: dell-csm-catalogsource + sourceNamespace: test-csm-operator-olm diff --git a/docker.mk b/docker.mk index 6aa8104cf..4c547197c 100644 --- a/docker.mk +++ b/docker.mk @@ -1,8 +1,18 @@ # Registry for all images REGISTRY ?= dellemc -# Default Operator image name -OPERATOR_IMAGE ?= dell-csm-operator +# IMAGE_TAG_BASE defines the docker.io namespace and part of the image name for remote images. +# This variable is used to construct full image tags for bundle and catalog images. +# +# For example, running 'make bundle-build bundle-push catalog-build catalog-push' will build and push both +# dell.com/csm-operator-bundle:$VERSION and dell.com/csm-operator-catalog:$VERSION. +IMAGE_TAG_BASE ?= dell-csm-operator + +# Image tag base for community bundle images +BUNDLE_IMAGE_TAG_BASE_COMMUNITY ?= dell-csm-community-operator-bundle + +# Image tag base for community catalog images +CATALOG_IMAGE_TAG_BASE_COMMUNITY ?= dell-csm-community-operator-catalog # Operator version tagged with build number. For e.g. - v1.2.0.001 VERSION ?= 0.1.0 @@ -12,5 +22,15 @@ TIMESTAMP := $(shell date +%Y%m%d%H%M%S) # Image URL to use all building/pushing image targets # Local Image -DEFAULT_IMG := "$(OPERATOR_IMAGE):$(TIMESTAMP)" -IMG ?= "$(REGISTRY)/$(OPERATOR_IMAGE):$(VERSION)" \ No newline at end of file +DEFAULT_IMG ?= "$(IMAGE_TAG_BASE):$(TIMESTAMP)" + +# Operator image name +IMG ?= "$(REGISTRY)/$(IMAGE_TAG_BASE):$(VERSION)" + +# OLM Images +# BUNDLE_IMG defines the image:tag used for the bundle. +# You can use it as an arg. (E.g make bundle-build BUNDLE_IMG=/:) +BUNDLE_IMG ?= "$(REGISTRY)/$(BUNDLE_IMAGE_TAG_BASE_COMMUNITY):$(VERSION)" + +# The image tag given to the resulting catalog image (e.g. make catalog-build CATALOG_IMG=example.com/operator-catalog:v0.2.0). +CATALOG_IMG ?= "$(REGISTRY)/$(CATALOG_IMAGE_TAG_BASE_COMMUNITY):$(VERSION)" \ No newline at end of file