diff --git a/generate-resources.sh b/generate-resources.sh index a527e70b..6fa83970 100755 --- a/generate-resources.sh +++ b/generate-resources.sh @@ -71,48 +71,24 @@ function git_commit() { } function update_resources() { - path="resources/base" - declare directpv_args - echo "$@" - for arg in "$@"; do - if [ "${arg}" == "--legacy" ]; then - path="resources/legacy/base" - elif [ "${arg}" == "--openshift" ]; then - path="resources/openshift/base" - fi - directpv_args+=("${arg}") - done - - declare -A resources - "${KUBECTL_DIRECTPV}" install "${directpv_args[@]}" -o yaml | sed -e 's/^---/~~~/g' | awk '{f="file" NR; print $0 > f}' RS='~~~' + "${KUBECTL_DIRECTPV}" install -o yaml | sed -e 's/^---/~~~/g' | awk '{f="file" NR; print $0 > f}' RS='~~~' for file in file*; do - name=$(awk '/^kind:/ { print $NF }' "${file}") - if [ "${name}" == "CustomResourceDefinition" ]; then - name=$(awk '/^ name:/ { print $NF }' "${file}") - fi - if [[ -v "resources[$name]" ]]; then - name+=-$(awk '/^ name:/ { print $NF }' "${file}") - fi - if [ -n "$name" ]; then - resources["$name"]="" - fi - if [ -n "${name}" ]; then - mv "${file}" "${PWD}/${path}/${name}.yaml" - else - rm "${file}" - fi + name=$(awk '/^kind:/ { print $NF }' "${file}") + if [ "${name}" == "CustomResourceDefinition" ]; then + name=$(awk '/^ name:/ { print $NF }' "${file}") + fi + if [ -n "${name}" ]; then + mv "${file}" "${PWD}/resources/base/${name}.yaml" + else + rm "${file}" + fi done - git_commit "Updated resources for v${BUILD_VERSION}" } function main() { rm -rf resources/base/* update_resources - rm -rf resources/legacy/base/* - update_resources --legacy - rm -rf resources/openshift/base/* - update_resources --openshift } init "$@" diff --git a/resources/base/kustomization.yaml b/resources/base/kustomization.yaml new file mode 100644 index 00000000..3608595d --- /dev/null +++ b/resources/base/kustomization.yaml @@ -0,0 +1,21 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: directpv +commonAnnotations: + directpv.min.io/authors: MinIO, Inc. + directpv.min.io/support: https://subnet.min.io +resources: + - resources/Namespace.yaml + - resources/directpvdrives.directpv.min.io.yaml + - resources/directpvinitrequests.directpv.min.io.yaml + - resources/directpvnodes.directpv.min.io.yaml + - resources/directpvvolumes.directpv.min.io.yaml + - resources/CSIDriver.yaml + - resources/StorageClass.yaml + - resources/ServiceAccount.yaml + - resources/ClusterRole.yaml + - resources/ClusterRoleBinding.yaml + - resources/Role.yaml + - resources/RoleBinding.yaml + - resources/DaemonSet.yaml + - resources/Deployment.yaml diff --git a/resources/base/CSIDriver.yaml b/resources/base/resources/CSIDriver.yaml similarity index 100% rename from resources/base/CSIDriver.yaml rename to resources/base/resources/CSIDriver.yaml diff --git a/resources/base/ClusterRole.yaml b/resources/base/resources/ClusterRole.yaml similarity index 100% rename from resources/base/ClusterRole.yaml rename to resources/base/resources/ClusterRole.yaml diff --git a/resources/base/ClusterRoleBinding.yaml b/resources/base/resources/ClusterRoleBinding.yaml similarity index 100% rename from resources/base/ClusterRoleBinding.yaml rename to resources/base/resources/ClusterRoleBinding.yaml diff --git a/resources/base/DaemonSet.yaml b/resources/base/resources/DaemonSet.yaml similarity index 98% rename from resources/base/DaemonSet.yaml rename to resources/base/resources/DaemonSet.yaml index 8b9fcfa0..1fe3f909 100644 --- a/resources/base/DaemonSet.yaml +++ b/resources/base/resources/DaemonSet.yaml @@ -16,14 +16,14 @@ metadata: spec: selector: matchLabels: - selector.directpv.min.io: directpv-min-io-2c3pu + selector.directpv.min.io: directpv-min-io-ooufw template: metadata: annotations: created-by: kubectl-directpv creationTimestamp: null labels: - selector.directpv.min.io: directpv-min-io-2c3pu + selector.directpv.min.io: directpv-min-io-ooufw selector.directpv.min.io.service: enabled name: node-server namespace: directpv diff --git a/resources/base/Deployment.yaml b/resources/base/resources/Deployment.yaml similarity index 97% rename from resources/base/Deployment.yaml rename to resources/base/resources/Deployment.yaml index 2f6d6fa1..7892dbe6 100644 --- a/resources/base/Deployment.yaml +++ b/resources/base/resources/Deployment.yaml @@ -17,7 +17,7 @@ spec: replicas: 3 selector: matchLabels: - selector.directpv.min.io: controller-ms345 + selector.directpv.min.io: controller-ckhew strategy: type: Recreate template: @@ -26,7 +26,7 @@ spec: created-by: kubectl-directpv creationTimestamp: null labels: - selector.directpv.min.io: controller-ms345 + selector.directpv.min.io: controller-ckhew name: controller namespace: directpv spec: diff --git a/resources/base/Namespace.yaml b/resources/base/resources/Namespace.yaml similarity index 100% rename from resources/base/Namespace.yaml rename to resources/base/resources/Namespace.yaml diff --git a/resources/base/Role.yaml b/resources/base/resources/Role.yaml similarity index 100% rename from resources/base/Role.yaml rename to resources/base/resources/Role.yaml diff --git a/resources/base/RoleBinding.yaml b/resources/base/resources/RoleBinding.yaml similarity index 100% rename from resources/base/RoleBinding.yaml rename to resources/base/resources/RoleBinding.yaml diff --git a/resources/base/ServiceAccount.yaml b/resources/base/resources/ServiceAccount.yaml similarity index 100% rename from resources/base/ServiceAccount.yaml rename to resources/base/resources/ServiceAccount.yaml diff --git a/resources/base/StorageClass.yaml b/resources/base/resources/StorageClass.yaml similarity index 100% rename from resources/base/StorageClass.yaml rename to resources/base/resources/StorageClass.yaml diff --git a/resources/base/directpvdrives.directpv.min.io.yaml b/resources/base/resources/directpvdrives.directpv.min.io.yaml similarity index 100% rename from resources/base/directpvdrives.directpv.min.io.yaml rename to resources/base/resources/directpvdrives.directpv.min.io.yaml diff --git a/resources/base/directpvinitrequests.directpv.min.io.yaml b/resources/base/resources/directpvinitrequests.directpv.min.io.yaml similarity index 100% rename from resources/base/directpvinitrequests.directpv.min.io.yaml rename to resources/base/resources/directpvinitrequests.directpv.min.io.yaml diff --git a/resources/base/directpvnodes.directpv.min.io.yaml b/resources/base/resources/directpvnodes.directpv.min.io.yaml similarity index 100% rename from resources/base/directpvnodes.directpv.min.io.yaml rename to resources/base/resources/directpvnodes.directpv.min.io.yaml diff --git a/resources/base/directpvvolumes.directpv.min.io.yaml b/resources/base/resources/directpvvolumes.directpv.min.io.yaml similarity index 100% rename from resources/base/directpvvolumes.directpv.min.io.yaml rename to resources/base/resources/directpvvolumes.directpv.min.io.yaml diff --git a/resources/kustomization.yaml b/resources/kustomization.yaml deleted file mode 100644 index 88034414..00000000 --- a/resources/kustomization.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -namespace: directpv -commonAnnotations: - directpv.aistor.min.io/authors: MinIO, Inc. - directpv.min.io/support: https://subnet.min.io -resources: - - base/Namespace.yaml - - base/directpvdrives.directpv.min.io.yaml - - base/directpvinitrequests.directpv.min.io.yaml - - base/directpvnodes.directpv.min.io.yaml - - base/directpvvolumes.directpv.min.io.yaml - - base/CSIDriver.yaml - - base/StorageClass.yaml - - base/ServiceAccount.yaml - - base/ClusterRole.yaml - - base/ClusterRoleBinding.yaml - - base/Role.yaml - - base/RoleBinding.yaml - - base/DaemonSet.yaml - - base/Deployment.yaml diff --git a/resources/legacy/base/CSIDriver-direct-csi-min-io.yaml b/resources/legacy/CSIDriver.yaml similarity index 100% rename from resources/legacy/base/CSIDriver-direct-csi-min-io.yaml rename to resources/legacy/CSIDriver.yaml diff --git a/resources/legacy/base/DaemonSet-legacy-node-server.yaml b/resources/legacy/DaemonSet.yaml similarity index 100% rename from resources/legacy/base/DaemonSet-legacy-node-server.yaml rename to resources/legacy/DaemonSet.yaml diff --git a/resources/legacy/base/Deployment-legacy-controller.yaml b/resources/legacy/Deployment.yaml similarity index 100% rename from resources/legacy/base/Deployment-legacy-controller.yaml rename to resources/legacy/Deployment.yaml diff --git a/resources/legacy/base/StorageClass-direct-csi-min-io.yaml b/resources/legacy/StorageClass.yaml similarity index 100% rename from resources/legacy/base/StorageClass-direct-csi-min-io.yaml rename to resources/legacy/StorageClass.yaml diff --git a/resources/legacy/base/CSIDriver.yaml b/resources/legacy/base/CSIDriver.yaml deleted file mode 100644 index 3ac38e4f..00000000 --- a/resources/legacy/base/CSIDriver.yaml +++ /dev/null @@ -1,21 +0,0 @@ - -apiVersion: storage.k8s.io/v1 -kind: CSIDriver -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io -spec: - attachRequired: false - podInfoOnMount: true - volumeLifecycleModes: - - Persistent - - Ephemeral - - diff --git a/resources/legacy/base/ClusterRole.yaml b/resources/legacy/base/ClusterRole.yaml deleted file mode 100644 index b3d573a1..00000000 --- a/resources/legacy/base/ClusterRole.yaml +++ /dev/null @@ -1,173 +0,0 @@ - -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - rbac.authorization.kubernetes.io/autoupdate: "true" - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io -rules: -- apiGroups: - - "" - resources: - - persistentvolumes - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims/status - verbs: - - patch -- apiGroups: - - policy - resources: - - podsecuritypolicies - verbs: - - use -- apiGroups: - - "" - resources: - - persistentvolumeclaims - verbs: - - get - - list - - update - - watch -- apiGroups: - - storage.k8s.io - resources: - - storageclasses - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - list - - patch - - update - - watch -- apiGroups: - - snapshot.storage.k8s.io - resources: - - volumesnapshots - verbs: - - get - - list -- apiGroups: - - snapshot.storage.k8s.io - resources: - - volumesnapshotcontents - verbs: - - get - - list -- apiGroups: - - storage.k8s.io - resources: - - csinodes - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - nodes - verbs: - - get - - list - - watch -- apiGroups: - - storage.k8s.io - resources: - - volumeattachments - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - endpoints - verbs: - - create - - delete - - get - - list - - update - - watch -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - create - - delete - - get - - list - - update - - watch -- apiGroups: - - apiextensions.k8s.io - - directpv.min.io - resources: - - customresourcedefinitions - - customresourcedefinition - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - directpv.min.io - resources: - - directpvdrives - - directpvvolumes - - directpvnodes - - directpvinitrequests - verbs: - - create - - delete - - get - - list - - update - - watch -- apiGroups: - - "" - resources: - - pods - - pod - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - secrets - - secret - verbs: - - get - - list - - watch - - diff --git a/resources/legacy/base/ClusterRoleBinding.yaml b/resources/legacy/base/ClusterRoleBinding.yaml deleted file mode 100644 index 68c7ee30..00000000 --- a/resources/legacy/base/ClusterRoleBinding.yaml +++ /dev/null @@ -1,24 +0,0 @@ - -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - rbac.authorization.kubernetes.io/autoupdate: "true" - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: directpv-min-io -subjects: -- kind: ServiceAccount - name: directpv-min-io - namespace: directpv - - diff --git a/resources/legacy/base/DaemonSet.yaml b/resources/legacy/base/DaemonSet.yaml deleted file mode 100644 index ef58ab6d..00000000 --- a/resources/legacy/base/DaemonSet.yaml +++ /dev/null @@ -1,234 +0,0 @@ - -apiVersion: apps/v1 -kind: DaemonSet -metadata: - annotations: - directpv.min.io/image-tag: v4.1.4 - directpv.min.io/plugin-version: v4.1.4 - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: node-server - namespace: directpv -spec: - selector: - matchLabels: - selector.directpv.min.io: directpv-min-io-mmhtk - template: - metadata: - annotations: - created-by: kubectl-directpv - creationTimestamp: null - labels: - selector.directpv.min.io: directpv-min-io-mmhtk - selector.directpv.min.io.service: enabled - name: node-server - namespace: directpv - spec: - containers: - - args: - - --v=3 - - --csi-address=unix:///csi/csi.sock - - --kubelet-registration-path=/var/lib/kubelet/plugins/directpv-min-io/csi.sock - env: - - name: KUBE_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - image: quay.io/minio/csi-node-driver-registrar@sha256:dafc7f667aa2e20d7f059c20db02dd6987c2624d64d8f166cd5930721be98ea9 - name: node-driver-registrar - resources: {} - terminationMessagePath: /var/log/driver-registrar-termination-log - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - - mountPath: /registration - mountPropagation: None - name: registration-dir - - args: - - node-server - - -v=3 - - --identity=directpv-min-io - - --csi-endpoint=$(CSI_ENDPOINT) - - --kube-node-name=$(KUBE_NODE_NAME) - - --readiness-port=30443 - - --metrics-port=10443 - env: - - name: KUBE_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - - name: CSI_ENDPOINT - value: unix:///csi/csi.sock - image: quay.io/minio/directpv:v4.1.4 - livenessProbe: - failureThreshold: 5 - httpGet: - path: /healthz - port: healthz - initialDelaySeconds: 60 - periodSeconds: 10 - timeoutSeconds: 10 - name: node-server - ports: - - containerPort: 30443 - name: readinessport - protocol: TCP - - containerPort: 9898 - name: healthz - protocol: TCP - - containerPort: 10443 - name: metrics - protocol: TCP - readinessProbe: - failureThreshold: 5 - httpGet: - path: /ready - port: readinessport - scheme: HTTP - initialDelaySeconds: 60 - periodSeconds: 10 - timeoutSeconds: 10 - resources: {} - securityContext: - privileged: true - terminationMessagePath: /var/log/driver-termination-log - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - - mountPath: /var/lib/kubelet/pods - mountPropagation: Bidirectional - name: mountpoint-dir - - mountPath: /var/lib/kubelet/plugins - mountPropagation: Bidirectional - name: plugins-dir - - mountPath: /var/lib/directpv/ - mountPropagation: Bidirectional - name: directpv-common-root - - mountPath: /var/lib/direct-csi/ - mountPropagation: Bidirectional - name: direct-csi-common-root - - mountPath: /sys - mountPropagation: Bidirectional - name: sysfs - - mountPath: /dev - mountPropagation: HostToContainer - name: devfs - readOnly: true - - mountPath: /run/udev/data - mountPropagation: Bidirectional - name: run-udev-data-dir - readOnly: true - - args: - - node-controller - - -v=3 - - --kube-node-name=$(KUBE_NODE_NAME) - env: - - name: KUBE_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - image: quay.io/minio/directpv:v4.1.4 - name: node-controller - resources: {} - securityContext: - privileged: true - terminationMessagePath: /var/log/driver-termination-log - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - - mountPath: /var/lib/kubelet/pods - mountPropagation: Bidirectional - name: mountpoint-dir - - mountPath: /var/lib/kubelet/plugins - mountPropagation: Bidirectional - name: plugins-dir - - mountPath: /var/lib/directpv/ - mountPropagation: Bidirectional - name: directpv-common-root - - mountPath: /var/lib/direct-csi/ - mountPropagation: Bidirectional - name: direct-csi-common-root - - mountPath: /sys - mountPropagation: Bidirectional - name: sysfs - - mountPath: /dev - mountPropagation: HostToContainer - name: devfs - readOnly: true - - mountPath: /run/udev/data - mountPropagation: Bidirectional - name: run-udev-data-dir - readOnly: true - - args: - - --csi-address=/csi/csi.sock - - --health-port=9898 - image: quay.io/minio/livenessprobe@sha256:783010e10e4d74b6b2b157a4b52772c5a264fd76bb2ad671054b8c3f706c8324 - name: liveness-probe - resources: {} - terminationMessagePath: /var/log/driver-liveness-termination-log - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - hostPID: true - serviceAccountName: directpv-min-io - volumes: - - hostPath: - path: /var/lib/kubelet/plugins/directpv-min-io - type: DirectoryOrCreate - name: socket-dir - - hostPath: - path: /var/lib/kubelet/pods - type: DirectoryOrCreate - name: mountpoint-dir - - hostPath: - path: /var/lib/kubelet/plugins_registry - type: DirectoryOrCreate - name: registration-dir - - hostPath: - path: /var/lib/kubelet/plugins - type: DirectoryOrCreate - name: plugins-dir - - hostPath: - path: /var/lib/directpv/ - type: DirectoryOrCreate - name: directpv-common-root - - hostPath: - path: /var/lib/direct-csi/ - type: DirectoryOrCreate - name: direct-csi-common-root - - hostPath: - path: /sys - type: DirectoryOrCreate - name: sysfs - - hostPath: - path: /dev - type: DirectoryOrCreate - name: devfs - - hostPath: - path: /run/udev/data - type: DirectoryOrCreate - name: run-udev-data-dir - updateStrategy: - type: RollingUpdate -status: - currentNumberScheduled: 0 - desiredNumberScheduled: 0 - numberMisscheduled: 0 - numberReady: 0 - - diff --git a/resources/legacy/base/Deployment.yaml b/resources/legacy/base/Deployment.yaml deleted file mode 100644 index a40f2425..00000000 --- a/resources/legacy/base/Deployment.yaml +++ /dev/null @@ -1,122 +0,0 @@ - -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: - directpv.min.io/image-tag: v4.1.4 - directpv.min.io/plugin-version: v4.1.4 - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: controller - namespace: directpv -spec: - replicas: 3 - selector: - matchLabels: - selector.directpv.min.io: controller-bq3dy - strategy: - type: Recreate - template: - metadata: - annotations: - created-by: kubectl-directpv - creationTimestamp: null - labels: - selector.directpv.min.io: controller-bq3dy - name: controller - namespace: directpv - spec: - containers: - - args: - - --v=3 - - --timeout=300s - - --csi-address=$(CSI_ENDPOINT) - - --leader-election - - --feature-gates=Topology=true - - --strict-topology - env: - - name: CSI_ENDPOINT - value: unix:///csi/csi.sock - image: quay.io/minio/csi-provisioner@sha256:fc1f992dd5591357fa123c396aaadaea5033f312b9c136a11d62cf698474bebb - name: csi-provisioner - resources: {} - securityContext: - privileged: true - terminationMessagePath: /var/log/controller-provisioner-termination-log - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - - args: - - --v=3 - - --timeout=300s - - --csi-address=$(CSI_ENDPOINT) - - --leader-election - env: - - name: CSI_ENDPOINT - value: unix:///csi/csi.sock - image: quay.io/minio/csi-resizer@sha256:58fa627393f20892b105a137d27e236dfaec233a3a64980f84dcb15f38c21533 - name: csi-resizer - resources: {} - securityContext: - privileged: true - terminationMessagePath: /var/log/controller-csi-resizer-termination-log - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - - args: - - controller - - --identity=directpv-min-io - - -v=3 - - --csi-endpoint=$(CSI_ENDPOINT) - - --kube-node-name=$(KUBE_NODE_NAME) - - --readiness-port=30443 - env: - - name: KUBE_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - - name: CSI_ENDPOINT - value: unix:///csi/csi.sock - image: quay.io/minio/directpv:v4.1.4 - name: controller - ports: - - containerPort: 30443 - name: readinessport - protocol: TCP - - containerPort: 9898 - name: healthz - protocol: TCP - readinessProbe: - failureThreshold: 5 - httpGet: - path: /ready - port: readinessport - scheme: HTTP - initialDelaySeconds: 60 - periodSeconds: 10 - timeoutSeconds: 10 - resources: {} - securityContext: - privileged: true - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - serviceAccountName: directpv-min-io - volumes: - - hostPath: - path: /var/lib/kubelet/plugins/controller-controller - type: DirectoryOrCreate - name: socket-dir -status: {} - - diff --git a/resources/legacy/base/Namespace.yaml b/resources/legacy/base/Namespace.yaml deleted file mode 100644 index 720dc640..00000000 --- a/resources/legacy/base/Namespace.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - creationTimestamp: null - finalizers: - - foregroundDeletion - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - pod-security.kubernetes.io/enforce: privileged - name: directpv -spec: {} -status: {} - - diff --git a/resources/legacy/base/Role.yaml b/resources/legacy/base/Role.yaml deleted file mode 100644 index 7c6b5cb8..00000000 --- a/resources/legacy/base/Role.yaml +++ /dev/null @@ -1,29 +0,0 @@ - -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - rbac.authorization.kubernetes.io/autoupdate: "true" - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io - namespace: directpv -rules: -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - create - - delete - - get - - list - - update - - watch - - diff --git a/resources/legacy/base/RoleBinding.yaml b/resources/legacy/base/RoleBinding.yaml deleted file mode 100644 index dbf8f821..00000000 --- a/resources/legacy/base/RoleBinding.yaml +++ /dev/null @@ -1,25 +0,0 @@ - -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - rbac.authorization.kubernetes.io/autoupdate: "true" - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io - namespace: directpv -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: directpv-min-io -subjects: -- kind: ServiceAccount - name: directpv-min-io - namespace: directpv - - diff --git a/resources/legacy/base/ServiceAccount.yaml b/resources/legacy/base/ServiceAccount.yaml deleted file mode 100644 index 897548f3..00000000 --- a/resources/legacy/base/ServiceAccount.yaml +++ /dev/null @@ -1,16 +0,0 @@ - -apiVersion: v1 -kind: ServiceAccount -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io - namespace: directpv - - diff --git a/resources/legacy/base/StorageClass.yaml b/resources/legacy/base/StorageClass.yaml deleted file mode 100644 index c9baa092..00000000 --- a/resources/legacy/base/StorageClass.yaml +++ /dev/null @@ -1,28 +0,0 @@ - -allowVolumeExpansion: true -allowedTopologies: -- matchLabelExpressions: - - key: directpv.min.io/identity - values: - - directpv-min-io -apiVersion: storage.k8s.io/v1 -kind: StorageClass -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - creationTimestamp: null - finalizers: - - foregroundDeletion - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io -parameters: - csi.storage.k8s.io/fstype: xfs -provisioner: directpv-min-io -reclaimPolicy: Delete -volumeBindingMode: WaitForFirstConsumer - - diff --git a/resources/legacy/base/directpvdrives.directpv.min.io.yaml b/resources/legacy/base/directpvdrives.directpv.min.io.yaml deleted file mode 100644 index b1b34c81..00000000 --- a/resources/legacy/base/directpvdrives.directpv.min.io.yaml +++ /dev/null @@ -1,168 +0,0 @@ - -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.15.0 - creationTimestamp: null - labels: - directpv.min.io/version: v1beta1 - name: directpvdrives.directpv.min.io -spec: - conversion: - strategy: None - group: directpv.min.io - names: - kind: DirectPVDrive - listKind: DirectPVDriveList - plural: directpvdrives - singular: directpvdrive - scope: Cluster - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - description: DirectPVDrive denotes drive CRD object. - 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: DriveSpec represents DirectPV drive specification values. - properties: - relabel: - type: boolean - unschedulable: - type: boolean - type: object - status: - description: DriveStatus denotes drive information. - properties: - allocatedCapacity: - format: int64 - type: integer - conditions: - items: - description: "Condition contains details for one aspect of the current - state of this API Resource.\n---\nThis struct is intended for - direct use as an array at the field path .status.conditions. For - example,\n\n\n\ttype FooStatus struct{\n\t // Represents the - observations of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t - \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - freeCapacity: - format: int64 - type: integer - fsuuid: - type: string - make: - type: string - status: - description: DriveStatus denotes drive status - type: string - topology: - additionalProperties: - type: string - type: object - totalCapacity: - format: int64 - type: integer - required: - - allocatedCapacity - - freeCapacity - - fsuuid - - status - - topology - - totalCapacity - type: object - required: - - metadata - - status - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null - - diff --git a/resources/legacy/base/directpvinitrequests.directpv.min.io.yaml b/resources/legacy/base/directpvinitrequests.directpv.min.io.yaml deleted file mode 100644 index 48eef357..00000000 --- a/resources/legacy/base/directpvinitrequests.directpv.min.io.yaml +++ /dev/null @@ -1,104 +0,0 @@ - -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.15.0 - creationTimestamp: null - labels: - directpv.min.io/version: v1beta1 - name: directpvinitrequests.directpv.min.io -spec: - conversion: - strategy: None - group: directpv.min.io - names: - kind: DirectPVInitRequest - listKind: DirectPVInitRequestList - plural: directpvinitrequests - singular: directpvinitrequest - scope: Cluster - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - description: DirectPVInitRequest denotes DirectPVInitRequest CRD object. - 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: InitRequestSpec represents the spec for InitRequest. - properties: - devices: - items: - description: InitDevice represents the device requested for initialization. - properties: - force: - type: boolean - id: - type: string - name: - type: string - required: - - force - - id - - name - type: object - type: array - x-kubernetes-list-type: atomic - required: - - devices - type: object - status: - description: InitRequestStatus represents the status of the InitRequest. - properties: - results: - items: - description: InitDeviceResult represents the result of the InitDeviceRequest. - properties: - error: - type: string - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-type: atomic - status: - description: InitStatus denotes initialization status - type: string - required: - - results - - status - type: object - required: - - metadata - - spec - - status - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null - - diff --git a/resources/legacy/base/directpvnodes.directpv.min.io.yaml b/resources/legacy/base/directpvnodes.directpv.min.io.yaml deleted file mode 100644 index 5de53e42..00000000 --- a/resources/legacy/base/directpvnodes.directpv.min.io.yaml +++ /dev/null @@ -1,170 +0,0 @@ - -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.15.0 - creationTimestamp: null - labels: - directpv.min.io/version: v1beta1 - name: directpvnodes.directpv.min.io -spec: - conversion: - strategy: None - group: directpv.min.io - names: - kind: DirectPVNode - listKind: DirectPVNodeList - plural: directpvnodes - singular: directpvnode - scope: Cluster - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - description: DirectPVNode denotes Node CRD object. - 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: NodeSpec represents DirectPV node specification values. - properties: - refresh: - type: boolean - type: object - status: - description: NodeStatus denotes node information. - properties: - conditions: - items: - description: "Condition contains details for one aspect of the current - state of this API Resource.\n---\nThis struct is intended for - direct use as an array at the field path .status.conditions. For - example,\n\n\n\ttype FooStatus struct{\n\t // Represents the - observations of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t - \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - devices: - items: - description: Device denotes the device information in a drive - properties: - deniedReason: - type: string - fsType: - type: string - fsuuid: - type: string - id: - type: string - majorMinor: - type: string - make: - type: string - name: - type: string - size: - format: int64 - type: integer - required: - - id - - majorMinor - - name - - size - type: object - type: array - x-kubernetes-list-type: atomic - required: - - devices - type: object - required: - - metadata - - status - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null - - diff --git a/resources/legacy/base/directpvvolumes.directpv.min.io.yaml b/resources/legacy/base/directpvvolumes.directpv.min.io.yaml deleted file mode 100644 index 7ad2ca89..00000000 --- a/resources/legacy/base/directpvvolumes.directpv.min.io.yaml +++ /dev/null @@ -1,162 +0,0 @@ - -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.15.0 - creationTimestamp: null - labels: - directpv.min.io/version: v1beta1 - name: directpvvolumes.directpv.min.io -spec: - conversion: - strategy: None - group: directpv.min.io - names: - kind: DirectPVVolume - listKind: DirectPVVolumeList - plural: directpvvolumes - singular: directpvvolume - scope: Cluster - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - description: DirectPVVolume denotes volume CRD object. - 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 - status: - description: VolumeStatus denotes volume information. - properties: - availableCapacity: - format: int64 - type: integer - conditions: - items: - description: "Condition contains details for one aspect of the current - state of this API Resource.\n---\nThis struct is intended for - direct use as an array at the field path .status.conditions. For - example,\n\n\n\ttype FooStatus struct{\n\t // Represents the - observations of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t - \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - dataPath: - type: string - fsuuid: - type: string - stagingTargetPath: - type: string - status: - description: VolumeStatus represents status of a volume. - type: string - targetPath: - type: string - totalCapacity: - format: int64 - type: integer - usedCapacity: - format: int64 - type: integer - required: - - availableCapacity - - dataPath - - fsuuid - - stagingTargetPath - - status - - targetPath - - totalCapacity - - usedCapacity - type: object - required: - - metadata - - status - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null - - diff --git a/resources/legacy/kustomization.yaml b/resources/legacy/kustomization.yaml index 60e29687..953f6d63 100644 --- a/resources/legacy/kustomization.yaml +++ b/resources/legacy/kustomization.yaml @@ -2,24 +2,12 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: directpv commonAnnotations: - directpv.aistor.min.io/authors: MinIO, Inc. + directpv.min.io/authors: MinIO, Inc. directpv.min.io/support: https://subnet.min.io resources: - - base/Namespace.yaml - - base/directpvdrives.directpv.min.io.yaml - - base/directpvinitrequests.directpv.min.io.yaml - - base/directpvnodes.directpv.min.io.yaml - - base/directpvvolumes.directpv.min.io.yaml - - base/CSIDriver.yaml - - base/CSIDriver-direct-csi-min-io.yaml - - base/StorageClass.yaml - - base/StorageClass-direct-csi-min-io.yaml - - base/ServiceAccount.yaml - - base/ClusterRole.yaml - - base/ClusterRoleBinding.yaml - - base/Role.yaml - - base/RoleBinding.yaml - - base/DaemonSet.yaml - - base/DaemonSet-legacy-node-server.yaml - - base/Deployment.yaml - - base/Deployment-legacy-controller.yaml + - ../base + - CSIDriver.yaml + - DaemonSet.yaml + - Deployment.yaml + - StorageClass.yaml + diff --git a/resources/openshift-with-legacy/kustomization.yaml b/resources/openshift-with-legacy/kustomization.yaml new file mode 100644 index 00000000..a7d40a0f --- /dev/null +++ b/resources/openshift-with-legacy/kustomization.yaml @@ -0,0 +1,13 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: directpv +commonAnnotations: + directpv.min.io/authors: MinIO, Inc. + directpv.min.io/support: https://subnet.min.io +resources: + - ../legacy +patchesStrategicMerge: + - patch-daemonset-image.yaml + - patch-deployment-image.yaml + - patch-legacy-daemonset-image.yaml + - patch-legacy-deployment-image.yaml diff --git a/resources/openshift-with-legacy/patch-daemonset-image.yaml b/resources/openshift-with-legacy/patch-daemonset-image.yaml new file mode 100644 index 00000000..511aeb29 --- /dev/null +++ b/resources/openshift-with-legacy/patch-daemonset-image.yaml @@ -0,0 +1,14 @@ + +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: node-server + namespace: directpv +spec: + template: + spec: + containers: + - name: node-driver-registrar + image: registry.redhat.io/openshift4/ose-csi-node-driver-registrar-rhel8@sha256:ab54e6a2e8a6a1ca2da5aaf25f784c09f5bf22ea32224ec1bdb6c564f88695a9 + - name: liveness-probe + image: registry.redhat.io/openshift4/ose-csi-livenessprobe-rhel8@sha256:b28029f929fe2a28e666910d1acc57c3474fabdb2f9129688ef1ca56c7231d90 diff --git a/resources/openshift-with-legacy/patch-deployment-image.yaml b/resources/openshift-with-legacy/patch-deployment-image.yaml new file mode 100644 index 00000000..18313089 --- /dev/null +++ b/resources/openshift-with-legacy/patch-deployment-image.yaml @@ -0,0 +1,14 @@ + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: controller + namespace: directpv +spec: + template: + spec: + containers: + - name: csi-provisioner + image: registry.redhat.io/openshift4/ose-csi-external-provisioner-rhel8@sha256:8bf8aa8975790e19ba107fd58699f98389e3fb692d192f4df3078fff7f0a4bba + - name: csi-resizer + image: registry.redhat.io/openshift4/ose-csi-external-resizer-rhel8@sha256:bed8de36bac80108909205342b2d92e4de5adbfa33bf13f9346236fca52a0d3e diff --git a/resources/openshift-with-legacy/patch-legacy-daemonset-image.yaml b/resources/openshift-with-legacy/patch-legacy-daemonset-image.yaml new file mode 100644 index 00000000..fc45ced4 --- /dev/null +++ b/resources/openshift-with-legacy/patch-legacy-daemonset-image.yaml @@ -0,0 +1,14 @@ + +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: legacy-node-server + namespace: directpv +spec: + template: + spec: + containers: + - name: node-driver-registrar + image: registry.redhat.io/openshift4/ose-csi-node-driver-registrar-rhel8@sha256:ab54e6a2e8a6a1ca2da5aaf25f784c09f5bf22ea32224ec1bdb6c564f88695a9 + - name: liveness-probe + image: registry.redhat.io/openshift4/ose-csi-livenessprobe-rhel8@sha256:b28029f929fe2a28e666910d1acc57c3474fabdb2f9129688ef1ca56c7231d90 diff --git a/resources/openshift-with-legacy/patch-legacy-deployment-image.yaml b/resources/openshift-with-legacy/patch-legacy-deployment-image.yaml new file mode 100644 index 00000000..18313089 --- /dev/null +++ b/resources/openshift-with-legacy/patch-legacy-deployment-image.yaml @@ -0,0 +1,14 @@ + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: controller + namespace: directpv +spec: + template: + spec: + containers: + - name: csi-provisioner + image: registry.redhat.io/openshift4/ose-csi-external-provisioner-rhel8@sha256:8bf8aa8975790e19ba107fd58699f98389e3fb692d192f4df3078fff7f0a4bba + - name: csi-resizer + image: registry.redhat.io/openshift4/ose-csi-external-resizer-rhel8@sha256:bed8de36bac80108909205342b2d92e4de5adbfa33bf13f9346236fca52a0d3e diff --git a/resources/openshift/base/CSIDriver.yaml b/resources/openshift/base/CSIDriver.yaml deleted file mode 100644 index 3ac38e4f..00000000 --- a/resources/openshift/base/CSIDriver.yaml +++ /dev/null @@ -1,21 +0,0 @@ - -apiVersion: storage.k8s.io/v1 -kind: CSIDriver -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io -spec: - attachRequired: false - podInfoOnMount: true - volumeLifecycleModes: - - Persistent - - Ephemeral - - diff --git a/resources/openshift/base/ClusterRole.yaml b/resources/openshift/base/ClusterRole.yaml deleted file mode 100644 index b3d573a1..00000000 --- a/resources/openshift/base/ClusterRole.yaml +++ /dev/null @@ -1,173 +0,0 @@ - -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - rbac.authorization.kubernetes.io/autoupdate: "true" - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io -rules: -- apiGroups: - - "" - resources: - - persistentvolumes - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims/status - verbs: - - patch -- apiGroups: - - policy - resources: - - podsecuritypolicies - verbs: - - use -- apiGroups: - - "" - resources: - - persistentvolumeclaims - verbs: - - get - - list - - update - - watch -- apiGroups: - - storage.k8s.io - resources: - - storageclasses - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - list - - patch - - update - - watch -- apiGroups: - - snapshot.storage.k8s.io - resources: - - volumesnapshots - verbs: - - get - - list -- apiGroups: - - snapshot.storage.k8s.io - resources: - - volumesnapshotcontents - verbs: - - get - - list -- apiGroups: - - storage.k8s.io - resources: - - csinodes - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - nodes - verbs: - - get - - list - - watch -- apiGroups: - - storage.k8s.io - resources: - - volumeattachments - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - endpoints - verbs: - - create - - delete - - get - - list - - update - - watch -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - create - - delete - - get - - list - - update - - watch -- apiGroups: - - apiextensions.k8s.io - - directpv.min.io - resources: - - customresourcedefinitions - - customresourcedefinition - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - directpv.min.io - resources: - - directpvdrives - - directpvvolumes - - directpvnodes - - directpvinitrequests - verbs: - - create - - delete - - get - - list - - update - - watch -- apiGroups: - - "" - resources: - - pods - - pod - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - secrets - - secret - verbs: - - get - - list - - watch - - diff --git a/resources/openshift/base/ClusterRoleBinding.yaml b/resources/openshift/base/ClusterRoleBinding.yaml deleted file mode 100644 index 68c7ee30..00000000 --- a/resources/openshift/base/ClusterRoleBinding.yaml +++ /dev/null @@ -1,24 +0,0 @@ - -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - rbac.authorization.kubernetes.io/autoupdate: "true" - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: directpv-min-io -subjects: -- kind: ServiceAccount - name: directpv-min-io - namespace: directpv - - diff --git a/resources/openshift/base/DaemonSet.yaml b/resources/openshift/base/DaemonSet.yaml deleted file mode 100644 index e5dea658..00000000 --- a/resources/openshift/base/DaemonSet.yaml +++ /dev/null @@ -1,234 +0,0 @@ - -apiVersion: apps/v1 -kind: DaemonSet -metadata: - annotations: - directpv.min.io/image-tag: v4.1.4 - directpv.min.io/plugin-version: v4.1.4 - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: node-server - namespace: directpv -spec: - selector: - matchLabels: - selector.directpv.min.io: directpv-min-io-u4ixd - template: - metadata: - annotations: - created-by: kubectl-directpv - creationTimestamp: null - labels: - selector.directpv.min.io: directpv-min-io-u4ixd - selector.directpv.min.io.service: enabled - name: node-server - namespace: directpv - spec: - containers: - - args: - - --v=3 - - --csi-address=unix:///csi/csi.sock - - --kubelet-registration-path=/var/lib/kubelet/plugins/directpv-min-io/csi.sock - env: - - name: KUBE_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - image: registry.redhat.io/openshift4/ose-csi-node-driver-registrar-rhel8@sha256:ab54e6a2e8a6a1ca2da5aaf25f784c09f5bf22ea32224ec1bdb6c564f88695a9 - name: node-driver-registrar - resources: {} - terminationMessagePath: /var/log/driver-registrar-termination-log - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - - mountPath: /registration - mountPropagation: None - name: registration-dir - - args: - - node-server - - -v=3 - - --identity=directpv-min-io - - --csi-endpoint=$(CSI_ENDPOINT) - - --kube-node-name=$(KUBE_NODE_NAME) - - --readiness-port=30443 - - --metrics-port=10443 - env: - - name: KUBE_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - - name: CSI_ENDPOINT - value: unix:///csi/csi.sock - image: quay.io/minio/directpv:v4.1.4 - livenessProbe: - failureThreshold: 5 - httpGet: - path: /healthz - port: healthz - initialDelaySeconds: 60 - periodSeconds: 10 - timeoutSeconds: 10 - name: node-server - ports: - - containerPort: 30443 - name: readinessport - protocol: TCP - - containerPort: 9898 - name: healthz - protocol: TCP - - containerPort: 10443 - name: metrics - protocol: TCP - readinessProbe: - failureThreshold: 5 - httpGet: - path: /ready - port: readinessport - scheme: HTTP - initialDelaySeconds: 60 - periodSeconds: 10 - timeoutSeconds: 10 - resources: {} - securityContext: - privileged: true - terminationMessagePath: /var/log/driver-termination-log - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - - mountPath: /var/lib/kubelet/pods - mountPropagation: Bidirectional - name: mountpoint-dir - - mountPath: /var/lib/kubelet/plugins - mountPropagation: Bidirectional - name: plugins-dir - - mountPath: /var/lib/directpv/ - mountPropagation: Bidirectional - name: directpv-common-root - - mountPath: /var/lib/direct-csi/ - mountPropagation: Bidirectional - name: direct-csi-common-root - - mountPath: /sys - mountPropagation: Bidirectional - name: sysfs - - mountPath: /dev - mountPropagation: HostToContainer - name: devfs - readOnly: true - - mountPath: /run/udev/data - mountPropagation: Bidirectional - name: run-udev-data-dir - readOnly: true - - args: - - node-controller - - -v=3 - - --kube-node-name=$(KUBE_NODE_NAME) - env: - - name: KUBE_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - image: quay.io/minio/directpv:v4.1.4 - name: node-controller - resources: {} - securityContext: - privileged: true - terminationMessagePath: /var/log/driver-termination-log - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - - mountPath: /var/lib/kubelet/pods - mountPropagation: Bidirectional - name: mountpoint-dir - - mountPath: /var/lib/kubelet/plugins - mountPropagation: Bidirectional - name: plugins-dir - - mountPath: /var/lib/directpv/ - mountPropagation: Bidirectional - name: directpv-common-root - - mountPath: /var/lib/direct-csi/ - mountPropagation: Bidirectional - name: direct-csi-common-root - - mountPath: /sys - mountPropagation: Bidirectional - name: sysfs - - mountPath: /dev - mountPropagation: HostToContainer - name: devfs - readOnly: true - - mountPath: /run/udev/data - mountPropagation: Bidirectional - name: run-udev-data-dir - readOnly: true - - args: - - --csi-address=/csi/csi.sock - - --health-port=9898 - image: registry.redhat.io/openshift4/ose-csi-livenessprobe-rhel8@sha256:b28029f929fe2a28e666910d1acc57c3474fabdb2f9129688ef1ca56c7231d90 - name: liveness-probe - resources: {} - terminationMessagePath: /var/log/driver-liveness-termination-log - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - hostPID: true - serviceAccountName: directpv-min-io - volumes: - - hostPath: - path: /var/lib/kubelet/plugins/directpv-min-io - type: DirectoryOrCreate - name: socket-dir - - hostPath: - path: /var/lib/kubelet/pods - type: DirectoryOrCreate - name: mountpoint-dir - - hostPath: - path: /var/lib/kubelet/plugins_registry - type: DirectoryOrCreate - name: registration-dir - - hostPath: - path: /var/lib/kubelet/plugins - type: DirectoryOrCreate - name: plugins-dir - - hostPath: - path: /var/lib/directpv/ - type: DirectoryOrCreate - name: directpv-common-root - - hostPath: - path: /var/lib/direct-csi/ - type: DirectoryOrCreate - name: direct-csi-common-root - - hostPath: - path: /sys - type: DirectoryOrCreate - name: sysfs - - hostPath: - path: /dev - type: DirectoryOrCreate - name: devfs - - hostPath: - path: /run/udev/data - type: DirectoryOrCreate - name: run-udev-data-dir - updateStrategy: - type: RollingUpdate -status: - currentNumberScheduled: 0 - desiredNumberScheduled: 0 - numberMisscheduled: 0 - numberReady: 0 - - diff --git a/resources/openshift/base/Deployment.yaml b/resources/openshift/base/Deployment.yaml deleted file mode 100644 index e527988f..00000000 --- a/resources/openshift/base/Deployment.yaml +++ /dev/null @@ -1,122 +0,0 @@ - -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: - directpv.min.io/image-tag: v4.1.4 - directpv.min.io/plugin-version: v4.1.4 - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: controller - namespace: directpv -spec: - replicas: 3 - selector: - matchLabels: - selector.directpv.min.io: controller-tnfpz - strategy: - type: Recreate - template: - metadata: - annotations: - created-by: kubectl-directpv - creationTimestamp: null - labels: - selector.directpv.min.io: controller-tnfpz - name: controller - namespace: directpv - spec: - containers: - - args: - - --v=3 - - --timeout=300s - - --csi-address=$(CSI_ENDPOINT) - - --leader-election - - --feature-gates=Topology=true - - --strict-topology - env: - - name: CSI_ENDPOINT - value: unix:///csi/csi.sock - image: registry.redhat.io/openshift4/ose-csi-external-provisioner-rhel8@sha256:8bf8aa8975790e19ba107fd58699f98389e3fb692d192f4df3078fff7f0a4bba - name: csi-provisioner - resources: {} - securityContext: - privileged: true - terminationMessagePath: /var/log/controller-provisioner-termination-log - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - - args: - - --v=3 - - --timeout=300s - - --csi-address=$(CSI_ENDPOINT) - - --leader-election - env: - - name: CSI_ENDPOINT - value: unix:///csi/csi.sock - image: registry.redhat.io/openshift4/ose-csi-external-resizer-rhel8@sha256:bed8de36bac80108909205342b2d92e4de5adbfa33bf13f9346236fca52a0d3e - name: csi-resizer - resources: {} - securityContext: - privileged: true - terminationMessagePath: /var/log/controller-csi-resizer-termination-log - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - - args: - - controller - - --identity=directpv-min-io - - -v=3 - - --csi-endpoint=$(CSI_ENDPOINT) - - --kube-node-name=$(KUBE_NODE_NAME) - - --readiness-port=30443 - env: - - name: KUBE_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - - name: CSI_ENDPOINT - value: unix:///csi/csi.sock - image: quay.io/minio/directpv:v4.1.4 - name: controller - ports: - - containerPort: 30443 - name: readinessport - protocol: TCP - - containerPort: 9898 - name: healthz - protocol: TCP - readinessProbe: - failureThreshold: 5 - httpGet: - path: /ready - port: readinessport - scheme: HTTP - initialDelaySeconds: 60 - periodSeconds: 10 - timeoutSeconds: 10 - resources: {} - securityContext: - privileged: true - volumeMounts: - - mountPath: /csi - mountPropagation: None - name: socket-dir - serviceAccountName: directpv-min-io - volumes: - - hostPath: - path: /var/lib/kubelet/plugins/controller-controller - type: DirectoryOrCreate - name: socket-dir -status: {} - - diff --git a/resources/openshift/base/Namespace.yaml b/resources/openshift/base/Namespace.yaml deleted file mode 100644 index 720dc640..00000000 --- a/resources/openshift/base/Namespace.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - creationTimestamp: null - finalizers: - - foregroundDeletion - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - pod-security.kubernetes.io/enforce: privileged - name: directpv -spec: {} -status: {} - - diff --git a/resources/openshift/base/Role.yaml b/resources/openshift/base/Role.yaml deleted file mode 100644 index 7c6b5cb8..00000000 --- a/resources/openshift/base/Role.yaml +++ /dev/null @@ -1,29 +0,0 @@ - -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - rbac.authorization.kubernetes.io/autoupdate: "true" - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io - namespace: directpv -rules: -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - create - - delete - - get - - list - - update - - watch - - diff --git a/resources/openshift/base/RoleBinding.yaml b/resources/openshift/base/RoleBinding.yaml deleted file mode 100644 index dbf8f821..00000000 --- a/resources/openshift/base/RoleBinding.yaml +++ /dev/null @@ -1,25 +0,0 @@ - -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - rbac.authorization.kubernetes.io/autoupdate: "true" - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io - namespace: directpv -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: directpv-min-io -subjects: -- kind: ServiceAccount - name: directpv-min-io - namespace: directpv - - diff --git a/resources/openshift/base/ServiceAccount.yaml b/resources/openshift/base/ServiceAccount.yaml deleted file mode 100644 index 897548f3..00000000 --- a/resources/openshift/base/ServiceAccount.yaml +++ /dev/null @@ -1,16 +0,0 @@ - -apiVersion: v1 -kind: ServiceAccount -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - creationTimestamp: null - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io - namespace: directpv - - diff --git a/resources/openshift/base/StorageClass.yaml b/resources/openshift/base/StorageClass.yaml deleted file mode 100644 index c9baa092..00000000 --- a/resources/openshift/base/StorageClass.yaml +++ /dev/null @@ -1,28 +0,0 @@ - -allowVolumeExpansion: true -allowedTopologies: -- matchLabelExpressions: - - key: directpv.min.io/identity - values: - - directpv-min-io -apiVersion: storage.k8s.io/v1 -kind: StorageClass -metadata: - annotations: - directpv.min.io/plugin-version: v4.1.4 - creationTimestamp: null - finalizers: - - foregroundDeletion - labels: - application-name: directpv.min.io - application-type: CSIDriver - directpv.min.io/created-by: kubectl-directpv - directpv.min.io/version: v1beta1 - name: directpv-min-io -parameters: - csi.storage.k8s.io/fstype: xfs -provisioner: directpv-min-io -reclaimPolicy: Delete -volumeBindingMode: WaitForFirstConsumer - - diff --git a/resources/openshift/base/directpvdrives.directpv.min.io.yaml b/resources/openshift/base/directpvdrives.directpv.min.io.yaml deleted file mode 100644 index b1b34c81..00000000 --- a/resources/openshift/base/directpvdrives.directpv.min.io.yaml +++ /dev/null @@ -1,168 +0,0 @@ - -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.15.0 - creationTimestamp: null - labels: - directpv.min.io/version: v1beta1 - name: directpvdrives.directpv.min.io -spec: - conversion: - strategy: None - group: directpv.min.io - names: - kind: DirectPVDrive - listKind: DirectPVDriveList - plural: directpvdrives - singular: directpvdrive - scope: Cluster - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - description: DirectPVDrive denotes drive CRD object. - 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: DriveSpec represents DirectPV drive specification values. - properties: - relabel: - type: boolean - unschedulable: - type: boolean - type: object - status: - description: DriveStatus denotes drive information. - properties: - allocatedCapacity: - format: int64 - type: integer - conditions: - items: - description: "Condition contains details for one aspect of the current - state of this API Resource.\n---\nThis struct is intended for - direct use as an array at the field path .status.conditions. For - example,\n\n\n\ttype FooStatus struct{\n\t // Represents the - observations of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t - \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - freeCapacity: - format: int64 - type: integer - fsuuid: - type: string - make: - type: string - status: - description: DriveStatus denotes drive status - type: string - topology: - additionalProperties: - type: string - type: object - totalCapacity: - format: int64 - type: integer - required: - - allocatedCapacity - - freeCapacity - - fsuuid - - status - - topology - - totalCapacity - type: object - required: - - metadata - - status - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null - - diff --git a/resources/openshift/base/directpvinitrequests.directpv.min.io.yaml b/resources/openshift/base/directpvinitrequests.directpv.min.io.yaml deleted file mode 100644 index 48eef357..00000000 --- a/resources/openshift/base/directpvinitrequests.directpv.min.io.yaml +++ /dev/null @@ -1,104 +0,0 @@ - -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.15.0 - creationTimestamp: null - labels: - directpv.min.io/version: v1beta1 - name: directpvinitrequests.directpv.min.io -spec: - conversion: - strategy: None - group: directpv.min.io - names: - kind: DirectPVInitRequest - listKind: DirectPVInitRequestList - plural: directpvinitrequests - singular: directpvinitrequest - scope: Cluster - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - description: DirectPVInitRequest denotes DirectPVInitRequest CRD object. - 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: InitRequestSpec represents the spec for InitRequest. - properties: - devices: - items: - description: InitDevice represents the device requested for initialization. - properties: - force: - type: boolean - id: - type: string - name: - type: string - required: - - force - - id - - name - type: object - type: array - x-kubernetes-list-type: atomic - required: - - devices - type: object - status: - description: InitRequestStatus represents the status of the InitRequest. - properties: - results: - items: - description: InitDeviceResult represents the result of the InitDeviceRequest. - properties: - error: - type: string - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-type: atomic - status: - description: InitStatus denotes initialization status - type: string - required: - - results - - status - type: object - required: - - metadata - - spec - - status - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null - - diff --git a/resources/openshift/base/directpvnodes.directpv.min.io.yaml b/resources/openshift/base/directpvnodes.directpv.min.io.yaml deleted file mode 100644 index 5de53e42..00000000 --- a/resources/openshift/base/directpvnodes.directpv.min.io.yaml +++ /dev/null @@ -1,170 +0,0 @@ - -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.15.0 - creationTimestamp: null - labels: - directpv.min.io/version: v1beta1 - name: directpvnodes.directpv.min.io -spec: - conversion: - strategy: None - group: directpv.min.io - names: - kind: DirectPVNode - listKind: DirectPVNodeList - plural: directpvnodes - singular: directpvnode - scope: Cluster - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - description: DirectPVNode denotes Node CRD object. - 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: NodeSpec represents DirectPV node specification values. - properties: - refresh: - type: boolean - type: object - status: - description: NodeStatus denotes node information. - properties: - conditions: - items: - description: "Condition contains details for one aspect of the current - state of this API Resource.\n---\nThis struct is intended for - direct use as an array at the field path .status.conditions. For - example,\n\n\n\ttype FooStatus struct{\n\t // Represents the - observations of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t - \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - devices: - items: - description: Device denotes the device information in a drive - properties: - deniedReason: - type: string - fsType: - type: string - fsuuid: - type: string - id: - type: string - majorMinor: - type: string - make: - type: string - name: - type: string - size: - format: int64 - type: integer - required: - - id - - majorMinor - - name - - size - type: object - type: array - x-kubernetes-list-type: atomic - required: - - devices - type: object - required: - - metadata - - status - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null - - diff --git a/resources/openshift/base/directpvvolumes.directpv.min.io.yaml b/resources/openshift/base/directpvvolumes.directpv.min.io.yaml deleted file mode 100644 index 7ad2ca89..00000000 --- a/resources/openshift/base/directpvvolumes.directpv.min.io.yaml +++ /dev/null @@ -1,162 +0,0 @@ - -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.15.0 - creationTimestamp: null - labels: - directpv.min.io/version: v1beta1 - name: directpvvolumes.directpv.min.io -spec: - conversion: - strategy: None - group: directpv.min.io - names: - kind: DirectPVVolume - listKind: DirectPVVolumeList - plural: directpvvolumes - singular: directpvvolume - scope: Cluster - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - description: DirectPVVolume denotes volume CRD object. - 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 - status: - description: VolumeStatus denotes volume information. - properties: - availableCapacity: - format: int64 - type: integer - conditions: - items: - description: "Condition contains details for one aspect of the current - state of this API Resource.\n---\nThis struct is intended for - direct use as an array at the field path .status.conditions. For - example,\n\n\n\ttype FooStatus struct{\n\t // Represents the - observations of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t - \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - dataPath: - type: string - fsuuid: - type: string - stagingTargetPath: - type: string - status: - description: VolumeStatus represents status of a volume. - type: string - targetPath: - type: string - totalCapacity: - format: int64 - type: integer - usedCapacity: - format: int64 - type: integer - required: - - availableCapacity - - dataPath - - fsuuid - - stagingTargetPath - - status - - targetPath - - totalCapacity - - usedCapacity - type: object - required: - - metadata - - status - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null - - diff --git a/resources/openshift/kustomization.yaml b/resources/openshift/kustomization.yaml index 88034414..c4d83fad 100644 --- a/resources/openshift/kustomization.yaml +++ b/resources/openshift/kustomization.yaml @@ -2,20 +2,11 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: directpv commonAnnotations: - directpv.aistor.min.io/authors: MinIO, Inc. + directpv.min.io/authors: MinIO, Inc. directpv.min.io/support: https://subnet.min.io resources: - - base/Namespace.yaml - - base/directpvdrives.directpv.min.io.yaml - - base/directpvinitrequests.directpv.min.io.yaml - - base/directpvnodes.directpv.min.io.yaml - - base/directpvvolumes.directpv.min.io.yaml - - base/CSIDriver.yaml - - base/StorageClass.yaml - - base/ServiceAccount.yaml - - base/ClusterRole.yaml - - base/ClusterRoleBinding.yaml - - base/Role.yaml - - base/RoleBinding.yaml - - base/DaemonSet.yaml - - base/Deployment.yaml + - ../base +patchesStrategicMerge: + - patch-daemonset-image.yaml + - patch-deployment-image.yaml + diff --git a/resources/openshift/patch-daemonset-image.yaml b/resources/openshift/patch-daemonset-image.yaml new file mode 100644 index 00000000..511aeb29 --- /dev/null +++ b/resources/openshift/patch-daemonset-image.yaml @@ -0,0 +1,14 @@ + +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: node-server + namespace: directpv +spec: + template: + spec: + containers: + - name: node-driver-registrar + image: registry.redhat.io/openshift4/ose-csi-node-driver-registrar-rhel8@sha256:ab54e6a2e8a6a1ca2da5aaf25f784c09f5bf22ea32224ec1bdb6c564f88695a9 + - name: liveness-probe + image: registry.redhat.io/openshift4/ose-csi-livenessprobe-rhel8@sha256:b28029f929fe2a28e666910d1acc57c3474fabdb2f9129688ef1ca56c7231d90 diff --git a/resources/openshift/patch-deployment-image.yaml b/resources/openshift/patch-deployment-image.yaml new file mode 100644 index 00000000..18313089 --- /dev/null +++ b/resources/openshift/patch-deployment-image.yaml @@ -0,0 +1,14 @@ + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: controller + namespace: directpv +spec: + template: + spec: + containers: + - name: csi-provisioner + image: registry.redhat.io/openshift4/ose-csi-external-provisioner-rhel8@sha256:8bf8aa8975790e19ba107fd58699f98389e3fb692d192f4df3078fff7f0a4bba + - name: csi-resizer + image: registry.redhat.io/openshift4/ose-csi-external-resizer-rhel8@sha256:bed8de36bac80108909205342b2d92e4de5adbfa33bf13f9346236fca52a0d3e