From 6832e4d20ff000de1552e69d628441ef410bcd0f Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Fri, 2 Jul 2021 09:28:20 +0200 Subject: [PATCH] K8SPSMDB-488 - Preparation after 1.9.0 release (#722) * K8SPSMDB-488 - Preparation after 1.9.0 release * Update for reviewdog/shfmt * K8SPSMDB-488 - Update bundle.yaml --- deploy/bundle.yaml | 25 ++ deploy/crd.yaml | 25 ++ e2e-tests/functions | 2 +- .../compare/service_some-name-rs0-1100.yml | 23 + .../statefulset_some-name-rs0-1100-oc.yml | 207 +++++++++ .../statefulset_some-name-rs0-1100.yml | 209 +++++++++ e2e-tests/upgrade-consistency/run | 141 +++--- e2e-tests/version-service/conf/crd.yaml | 410 +++++++++++++++--- version/version.go | 2 +- 9 files changed, 922 insertions(+), 122 deletions(-) create mode 100644 e2e-tests/upgrade-consistency/compare/service_some-name-rs0-1100.yml create mode 100644 e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1100-oc.yml create mode 100644 e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1100.yml diff --git a/deploy/bundle.yaml b/deploy/bundle.yaml index 0564c64fb2..0f61063f82 100644 --- a/deploy/bundle.yaml +++ b/deploy/bundle.yaml @@ -264,6 +264,31 @@ spec: subresources: status: {} - name: v1-9-0 + storage: false + served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} + - name: v1-10-0 storage: true served: true schema: diff --git a/deploy/crd.yaml b/deploy/crd.yaml index 4d2a6ecd69..e3733defc1 100644 --- a/deploy/crd.yaml +++ b/deploy/crd.yaml @@ -264,6 +264,31 @@ spec: subresources: status: {} - name: v1-9-0 + storage: false + served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} + - name: v1-10-0 storage: true served: true schema: diff --git a/e2e-tests/functions b/e2e-tests/functions index da3a05c275..4e2182005c 100755 --- a/e2e-tests/functions +++ b/e2e-tests/functions @@ -5,7 +5,7 @@ BASH_XTRACEFD="5" GIT_COMMIT=$(git rev-parse HEAD) GIT_BRANCH=${VERSION:-$(git rev-parse --abbrev-ref HEAD | sed -e 's^/^-^g; s^[.]^-^g;' | sed -e 's/_/-/g' | tr '[:upper:]' '[:lower:]')} -API="psmdb.percona.com/v1-9-0" +API="psmdb.percona.com/v1-10-0" IMAGE=${IMAGE:-"perconalab/percona-server-mongodb-operator:${GIT_BRANCH}"} IMAGE_PMM=${IMAGE_PMM:-"perconalab/pmm-client:dev-latest"} IMAGE_MONGOD=${IMAGE_MONGOD:-"perconalab/percona-server-mongodb-operator:main-mongod4.4"} diff --git a/e2e-tests/upgrade-consistency/compare/service_some-name-rs0-1100.yml b/e2e-tests/upgrade-consistency/compare/service_some-name-rs0-1100.yml new file mode 100644 index 0000000000..99b8362f24 --- /dev/null +++ b/e2e-tests/upgrade-consistency/compare/service_some-name-rs0-1100.yml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: {} + name: some-name-rs0 + ownerReferences: + - controller: true + kind: PerconaServerMongoDB + name: some-name +spec: + ports: + - name: mongodb + port: 27017 + protocol: TCP + targetPort: 27017 + selector: + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + sessionAffinity: None + type: ClusterIP diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1100-oc.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1100-oc.yml new file mode 100644 index 0000000000..d8076b70ae --- /dev/null +++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1100-oc.yml @@ -0,0 +1,207 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + annotations: {} + generation: 10 + labels: + app.kubernetes.io/component: mongod + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + name: some-name-rs0 + ownerReferences: + - controller: true + kind: PerconaServerMongoDB + name: some-name +spec: + podManagementPolicy: OrderedReady + replicas: 3 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/component: mongod + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + serviceName: some-name-rs0 + template: + metadata: + annotations: {} + labels: + app.kubernetes.io/component: mongod + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + spec: + containers: + - args: + - --bind_ip_all + - --auth + - --dbpath=/data/db + - --port=27017 + - --replSet=rs0 + - --storageEngine=wiredTiger + - --relaxPermChecks + - --sslAllowInvalidCertificates + - --sslMode=preferSSL + - --clusterAuthMode=x509 + - --slowms=100 + - --profile=1 + - --rateLimit=1 + - --enableEncryption + - --encryptionKeyFile=/etc/mongodb-encryption/encryption-key + - --wiredTigerCacheSizeGB=0.25 + - --wiredTigerCollectionBlockCompressor=snappy + - --wiredTigerJournalCompressor=snappy + - --wiredTigerIndexPrefixCompression=true + - --setParameter + - ttlMonitorSleepSecs=60 + - --setParameter + - wiredTigerConcurrentReadTransactions=128 + - --setParameter + - wiredTigerConcurrentWriteTransactions=128 + command: + - /data/db/ps-entry.sh + env: + - name: SERVICE_NAME + value: some-name + - name: MONGODB_PORT + value: "27017" + - name: MONGODB_REPLSET + value: rs0 + envFrom: + - secretRef: + name: internal-some-name-users + optional: false + imagePullPolicy: Always + livenessProbe: + exec: + command: + - /data/db/mongodb-healthcheck + - k8s + - liveness + - --ssl + - --sslInsecure + - --sslCAFile + - /etc/mongodb-ssl/ca.crt + - --sslPEMKeyFile + - /tmp/tls.pem + - --startupDelaySeconds + - "7200" + failureThreshold: 4 + initialDelaySeconds: 60 + periodSeconds: 30 + successThreshold: 1 + timeoutSeconds: 5 + name: mongod + ports: + - containerPort: 27017 + name: mongodb + protocol: TCP + readinessProbe: + failureThreshold: 8 + initialDelaySeconds: 10 + periodSeconds: 3 + successThreshold: 1 + tcpSocket: + port: 27017 + timeoutSeconds: 2 + resources: + limits: + cpu: 500m + memory: 500M + requests: + cpu: 100m + memory: 100M + securityContext: + runAsNonRoot: true + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data/db + name: mongod-data + - mountPath: /etc/mongodb-secrets + name: some-name-mongodb-keyfile + readOnly: true + - mountPath: /etc/mongodb-ssl + name: ssl + readOnly: true + - mountPath: /etc/mongodb-ssl-internal + name: ssl-internal + readOnly: true + - mountPath: /etc/mongodb-encryption + name: some-name-mongodb-encryption-key + readOnly: true + - mountPath: /etc/users-secret + name: users-secret-file + workingDir: /data/db + dnsPolicy: ClusterFirst + initContainers: + - command: + - /init-entrypoint.sh + imagePullPolicy: Always + name: mongo-init + resources: + limits: + cpu: 500m + memory: 500M + requests: + cpu: 100m + memory: 100M + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data/db + name: mongod-data + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + serviceAccount: default + serviceAccountName: default + terminationGracePeriodSeconds: 30 + volumes: + - name: some-name-mongodb-keyfile + secret: + defaultMode: 288 + optional: false + secretName: some-name-mongodb-keyfile + - name: some-name-mongodb-encryption-key + secret: + defaultMode: 288 + optional: false + secretName: some-name-mongodb-encryption-key + - name: ssl + secret: + defaultMode: 288 + optional: false + secretName: some-name-ssl + - name: ssl-internal + secret: + defaultMode: 288 + optional: true + secretName: some-name-ssl-internal + - name: users-secret-file + secret: + defaultMode: 420 + secretName: internal-some-name-users + updateStrategy: + rollingUpdate: + partition: 0 + type: RollingUpdate + volumeClaimTemplates: + - metadata: + name: mongod-data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + status: + phase: Pending diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1100.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1100.yml new file mode 100644 index 0000000000..e4c0ddc030 --- /dev/null +++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-rs0-1100.yml @@ -0,0 +1,209 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + annotations: {} + generation: 10 + labels: + app.kubernetes.io/component: mongod + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + name: some-name-rs0 + ownerReferences: + - controller: true + kind: PerconaServerMongoDB + name: some-name +spec: + podManagementPolicy: OrderedReady + replicas: 3 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/component: mongod + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + serviceName: some-name-rs0 + template: + metadata: + annotations: {} + labels: + app.kubernetes.io/component: mongod + app.kubernetes.io/instance: some-name + app.kubernetes.io/managed-by: percona-server-mongodb-operator + app.kubernetes.io/name: percona-server-mongodb + app.kubernetes.io/part-of: percona-server-mongodb + app.kubernetes.io/replset: rs0 + spec: + containers: + - args: + - --bind_ip_all + - --auth + - --dbpath=/data/db + - --port=27017 + - --replSet=rs0 + - --storageEngine=wiredTiger + - --relaxPermChecks + - --sslAllowInvalidCertificates + - --sslMode=preferSSL + - --clusterAuthMode=x509 + - --slowms=100 + - --profile=1 + - --rateLimit=1 + - --enableEncryption + - --encryptionKeyFile=/etc/mongodb-encryption/encryption-key + - --wiredTigerCacheSizeGB=0.25 + - --wiredTigerCollectionBlockCompressor=snappy + - --wiredTigerJournalCompressor=snappy + - --wiredTigerIndexPrefixCompression=true + - --setParameter + - ttlMonitorSleepSecs=60 + - --setParameter + - wiredTigerConcurrentReadTransactions=128 + - --setParameter + - wiredTigerConcurrentWriteTransactions=128 + command: + - /data/db/ps-entry.sh + env: + - name: SERVICE_NAME + value: some-name + - name: MONGODB_PORT + value: "27017" + - name: MONGODB_REPLSET + value: rs0 + envFrom: + - secretRef: + name: internal-some-name-users + optional: false + imagePullPolicy: Always + livenessProbe: + exec: + command: + - /data/db/mongodb-healthcheck + - k8s + - liveness + - --ssl + - --sslInsecure + - --sslCAFile + - /etc/mongodb-ssl/ca.crt + - --sslPEMKeyFile + - /tmp/tls.pem + - --startupDelaySeconds + - "7200" + failureThreshold: 4 + initialDelaySeconds: 60 + periodSeconds: 30 + successThreshold: 1 + timeoutSeconds: 5 + name: mongod + ports: + - containerPort: 27017 + name: mongodb + protocol: TCP + readinessProbe: + failureThreshold: 8 + initialDelaySeconds: 10 + periodSeconds: 3 + successThreshold: 1 + tcpSocket: + port: 27017 + timeoutSeconds: 2 + resources: + limits: + cpu: 500m + memory: 500M + requests: + cpu: 100m + memory: 100M + securityContext: + runAsNonRoot: true + runAsUser: 1001 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data/db + name: mongod-data + - mountPath: /etc/mongodb-secrets + name: some-name-mongodb-keyfile + readOnly: true + - mountPath: /etc/mongodb-ssl + name: ssl + readOnly: true + - mountPath: /etc/mongodb-ssl-internal + name: ssl-internal + readOnly: true + - mountPath: /etc/mongodb-encryption + name: some-name-mongodb-encryption-key + readOnly: true + - mountPath: /etc/users-secret + name: users-secret-file + workingDir: /data/db + dnsPolicy: ClusterFirst + initContainers: + - command: + - /init-entrypoint.sh + imagePullPolicy: Always + name: mongo-init + resources: + limits: + cpu: 500m + memory: 500M + requests: + cpu: 100m + memory: 100M + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data/db + name: mongod-data + restartPolicy: Always + schedulerName: default-scheduler + securityContext: + fsGroup: 1001 + serviceAccount: default + serviceAccountName: default + terminationGracePeriodSeconds: 30 + volumes: + - name: some-name-mongodb-keyfile + secret: + defaultMode: 288 + optional: false + secretName: some-name-mongodb-keyfile + - name: some-name-mongodb-encryption-key + secret: + defaultMode: 288 + optional: false + secretName: some-name-mongodb-encryption-key + - name: ssl + secret: + defaultMode: 288 + optional: false + secretName: some-name-ssl + - name: ssl-internal + secret: + defaultMode: 288 + optional: true + secretName: some-name-ssl-internal + - name: users-secret-file + secret: + defaultMode: 420 + secretName: internal-some-name-users + updateStrategy: + rollingUpdate: + partition: 0 + type: RollingUpdate + volumeClaimTemplates: + - metadata: + name: mongod-data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + status: + phase: Pending diff --git a/e2e-tests/upgrade-consistency/run b/e2e-tests/upgrade-consistency/run index 161326344e..cdf44acfe6 100755 --- a/e2e-tests/upgrade-consistency/run +++ b/e2e-tests/upgrade-consistency/run @@ -9,110 +9,121 @@ test_dir=$(realpath $(dirname $0)) CLUSTER='some-name' main() { - create_namespace $namespace - deploy_operator + create_namespace $namespace + deploy_operator - kubectl_bin apply -f "${conf_dir}/client.yml" \ - -f "${conf_dir}/secrets.yml" + kubectl_bin apply -f "${conf_dir}/client.yml" \ + -f "${conf_dir}/secrets.yml" - # test 1.0.0 - API="psmdb.percona.com/v1" - apply_cluster "$test_dir/conf/${CLUSTER}-rs0.yml" - wait_for_running "${CLUSTER}-rs0" "1" "false" + # test 1.0.0 + API="psmdb.percona.com/v1" + apply_cluster "$test_dir/conf/${CLUSTER}-rs0.yml" + wait_for_running "${CLUSTER}-rs0" "1" "false" - compare_kubectl service/${CLUSTER}-rs0 "-100" - compare_kubectl statefulset/${CLUSTER}-rs0 "-100" + compare_kubectl service/${CLUSTER}-rs0 "-100" + compare_kubectl statefulset/${CLUSTER}-rs0 "-100" - # test 1.1.0 - API="psmdb.percona.com/v1-1-0" - kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ + # test 1.1.0 + API="psmdb.percona.com/v1-1-0" + kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ "spec": {"crVersion":"1.1.0"} }' - wait_for_running "${CLUSTER}-rs0" "1" "false" + wait_for_running "${CLUSTER}-rs0" "1" "false" - compare_kubectl service/${CLUSTER}-rs0 "-110" - compare_kubectl statefulset/${CLUSTER}-rs0 "-110" + compare_kubectl service/${CLUSTER}-rs0 "-110" + compare_kubectl statefulset/${CLUSTER}-rs0 "-110" - # test 1.2.0 - API="psmdb.percona.com/v1-2-0" - kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ + # test 1.2.0 + API="psmdb.percona.com/v1-2-0" + kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ "spec": {"crVersion":"1.2.0"} }' - wait_for_running "${CLUSTER}-rs0" "1" "false" + wait_for_running "${CLUSTER}-rs0" "1" "false" - compare_kubectl service/${CLUSTER}-rs0 "-120" - compare_kubectl statefulset/${CLUSTER}-rs0 "-120" + compare_kubectl service/${CLUSTER}-rs0 "-120" + compare_kubectl statefulset/${CLUSTER}-rs0 "-120" - # test 1.3.0 - API="psmdb.percona.com/v1-3-0" - kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ + # test 1.3.0 + API="psmdb.percona.com/v1-3-0" + kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ "spec": {"crVersion":"1.3.0"} }' - wait_for_running "${CLUSTER}-rs0" "1" "false" + wait_for_running "${CLUSTER}-rs0" "1" "false" - compare_kubectl service/${CLUSTER}-rs0 "-130" - compare_kubectl statefulset/${CLUSTER}-rs0 "-130" + compare_kubectl service/${CLUSTER}-rs0 "-130" + compare_kubectl statefulset/${CLUSTER}-rs0 "-130" - # test 1.4.0 - API="psmdb.percona.com/v1-4-0" - kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ + # test 1.4.0 + API="psmdb.percona.com/v1-4-0" + kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ "spec": {"crVersion":"1.4.0"} }' - wait_for_running "${CLUSTER}-rs0" "1" "false" + wait_for_running "${CLUSTER}-rs0" "1" "false" - compare_kubectl service/${CLUSTER}-rs0 "-140" - compare_kubectl statefulset/${CLUSTER}-rs0 "-140" + compare_kubectl service/${CLUSTER}-rs0 "-140" + compare_kubectl statefulset/${CLUSTER}-rs0 "-140" - # test 1.5.0 - API="psmdb.percona.com/v1-5-0" - kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ + # test 1.5.0 + API="psmdb.percona.com/v1-5-0" + kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ "spec": {"crVersion":"1.5.0"} }' - wait_for_running "${CLUSTER}-rs0" "1" "false" + wait_for_running "${CLUSTER}-rs0" "1" "false" - compare_kubectl service/${CLUSTER}-rs0 "-150" - compare_kubectl statefulset/${CLUSTER}-rs0 "-150" + compare_kubectl service/${CLUSTER}-rs0 "-150" + compare_kubectl statefulset/${CLUSTER}-rs0 "-150" - # test 1.6.0 - API="psmdb.percona.com/v1-6-0" - kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ + # test 1.6.0 + API="psmdb.percona.com/v1-6-0" + kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ "spec": {"crVersion":"1.6.0"} }' - wait_for_running "${CLUSTER}-rs0" "1" "false" + wait_for_running "${CLUSTER}-rs0" "1" "false" - compare_kubectl service/${CLUSTER}-rs0 "-160" - compare_kubectl statefulset/${CLUSTER}-rs0 "-160" + compare_kubectl service/${CLUSTER}-rs0 "-160" + compare_kubectl statefulset/${CLUSTER}-rs0 "-160" - # test 1.7.0 - API="psmdb.percona.com/v1-7-0" - kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ + # test 1.7.0 + API="psmdb.percona.com/v1-7-0" + kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ "spec": {"crVersion":"1.7.0"} }' - wait_for_running "${CLUSTER}-rs0" "1" "false" + wait_for_running "${CLUSTER}-rs0" "1" "false" - compare_kubectl service/${CLUSTER}-rs0 "-170" - compare_kubectl statefulset/${CLUSTER}-rs0 "-170" + compare_kubectl service/${CLUSTER}-rs0 "-170" + compare_kubectl statefulset/${CLUSTER}-rs0 "-170" - # test 1.8.0 - API="psmdb.percona.com/v1-8-0" - kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ + # test 1.8.0 + API="psmdb.percona.com/v1-8-0" + kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ "spec": {"crVersion":"1.8.0"} }' - wait_for_running "${CLUSTER}-rs0" "1" "false" + wait_for_running "${CLUSTER}-rs0" "1" "false" - compare_kubectl service/${CLUSTER}-rs0 "-180" - compare_kubectl statefulset/${CLUSTER}-rs0 "-180" + compare_kubectl service/${CLUSTER}-rs0 "-180" + compare_kubectl statefulset/${CLUSTER}-rs0 "-180" - # test 1.9.0 - API="psmdb.percona.com/v1-9-0" - kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ + # test 1.9.0 + API="psmdb.percona.com/v1-9-0" + kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ "spec": {"crVersion":"1.9.0"} }' - wait_for_running "${CLUSTER}-rs0" "1" "false" + wait_for_running "${CLUSTER}-rs0" "1" "false" - compare_kubectl service/${CLUSTER}-rs0 "-190" - compare_kubectl statefulset/${CLUSTER}-rs0 "-190" - destroy $namespace + compare_kubectl service/${CLUSTER}-rs0 "-190" + compare_kubectl statefulset/${CLUSTER}-rs0 "-190" + + # test 1.10.0 + API="psmdb.percona.com/v1-10-0" + kubectl_bin patch psmdb "${CLUSTER}" --type=merge --patch '{ + "spec": {"crVersion":"1.10.0"} + }' + wait_for_running "${CLUSTER}-rs0" "1" "false" + + compare_kubectl service/${CLUSTER}-rs0 "-1100" + compare_kubectl statefulset/${CLUSTER}-rs0 "-1100" + + destroy $namespace } main diff --git a/e2e-tests/version-service/conf/crd.yaml b/e2e-tests/version-service/conf/crd.yaml index 95361c726f..4d96b8b377 100644 --- a/e2e-tests/version-service/conf/crd.yaml +++ b/e2e-tests/version-service/conf/crd.yaml @@ -1,4 +1,4 @@ -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: perconaservermongodbs.psmdb.percona.com @@ -13,53 +13,333 @@ spec: - psmdb scope: Namespaced versions: + - name: v1alpha1 + storage: false + served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} - name: v1 storage: false served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} - name: v1-1-0 storage: false served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} - name: v1-2-0 storage: false served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} - name: v1-3-0 storage: false served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} - name: v1-4-0 storage: false served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} - name: v1-5-0 storage: false served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} - name: v1-6-0 storage: false served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} - name: v1-7-0 storage: false served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} - name: v1-8-0 storage: false served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} - name: v1-9-0 + storage: false + served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} + - name: v1-10-0 storage: true served: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} - name: v9-9-9 storage: false served: true - - name: v1alpha1 - storage: false - served: true - additionalPrinterColumns: - - name: Status - type: string - JSONPath: .status.state - - name: Age - type: date - JSONPath: .metadata.creationTimestamp - subresources: - status: {} + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: ENDPOINT + type: string + jsonPath: .status.host + - name: Status + type: string + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: perconaservermongodbbackups.psmdb.percona.com @@ -77,34 +357,44 @@ spec: - name: v1 storage: true served: true - additionalPrinterColumns: - - name: Cluster - type: string - description: Cluster name - JSONPath: .spec.psmdbCluster - - name: Storage - type: string - description: Storage name from pxc spec - JSONPath: .spec.storageName - - name: Destination - type: string - description: Backup destination - JSONPath: .status.destination - - name: Status - type: string - description: Job status - JSONPath: .status.state - - name: Completed - description: Completed time - type: date - JSONPath: .status.completed - - name: Age - type: date - JSONPath: .metadata.creationTimestamp - subresources: - status: {} + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: Cluster + type: string + description: Cluster name + jsonPath: .spec.psmdbCluster + - name: Storage + type: string + description: Storage name from pxc spec + jsonPath: .spec.storageName + - name: Destination + type: string + description: Backup destination + jsonPath: .status.destination + - name: Status + type: string + description: Job status + jsonPath: .status.state + - name: Completed + description: Completed time + type: date + jsonPath: .status.completed + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: perconaservermongodbrestores.psmdb.percona.com @@ -122,17 +412,27 @@ spec: - name: v1 storage: true served: true - additionalPrinterColumns: - - name: Cluster - type: string - description: Cluster name - JSONPath: .spec.clusterName - - name: Status - type: string - description: Job status - JSONPath: .status.state - - name: Age - type: date - JSONPath: .metadata.creationTimestamp - subresources: - status: {} + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + additionalPrinterColumns: + - name: Cluster + type: string + description: Cluster name + jsonPath: .spec.clusterName + - name: Status + type: string + description: Job status + jsonPath: .status.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + subresources: + status: {} diff --git a/version/version.go b/version/version.go index f7920331da..eb60b36111 100644 --- a/version/version.go +++ b/version/version.go @@ -1,5 +1,5 @@ package version var ( - Version = "1.9.0" + Version = "1.10.0" )