diff --git a/build/crd/crunchy/generated/postgres-operator.crunchydata.com_pgupgrades.yaml b/build/crd/crunchy/generated/postgres-operator.crunchydata.com_pgupgrades.yaml index df891f7c4..de8bcd0a5 100644 --- a/build/crd/crunchy/generated/postgres-operator.crunchydata.com_pgupgrades.yaml +++ b/build/crd/crunchy/generated/postgres-operator.crunchydata.com_pgupgrades.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: pgupgrades.postgres-operator.crunchydata.com spec: group: postgres-operator.crunchydata.com @@ -964,7 +964,7 @@ spec: fromPostgresVersion: description: The major version of PostgreSQL before the upgrade. maximum: 16 - minimum: 10 + minimum: 12 type: integer image: description: The image name to use for major PostgreSQL upgrades. @@ -2508,8 +2508,8 @@ spec: type: string toPostgresVersion: description: The major version of PostgreSQL to be upgraded to. - maximum: 16 - minimum: 10 + maximum: 17 + minimum: 13 type: integer tolerations: description: |- diff --git a/build/crd/crunchy/generated/postgres-operator.crunchydata.com_postgresclusters.yaml b/build/crd/crunchy/generated/postgres-operator.crunchydata.com_postgresclusters.yaml index 8b88d8c42..1db1cd8a3 100644 --- a/build/crd/crunchy/generated/postgres-operator.crunchydata.com_postgresclusters.yaml +++ b/build/crd/crunchy/generated/postgres-operator.crunchydata.com_postgresclusters.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: postgresclusters.postgres-operator.crunchydata.com spec: group: postgres-operator.crunchydata.com diff --git a/build/crd/percona/generated/pgv2.percona.com_perconapgbackups.yaml b/build/crd/percona/generated/pgv2.percona.com_perconapgbackups.yaml index d0f40f6fc..606f40975 100644 --- a/build/crd/percona/generated/pgv2.percona.com_perconapgbackups.yaml +++ b/build/crd/percona/generated/pgv2.percona.com_perconapgbackups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgbackups.pgv2.percona.com spec: group: pgv2.percona.com diff --git a/build/crd/percona/generated/pgv2.percona.com_perconapgclusters.yaml b/build/crd/percona/generated/pgv2.percona.com_perconapgclusters.yaml index dd5ac0fae..b16d4091c 100644 --- a/build/crd/percona/generated/pgv2.percona.com_perconapgclusters.yaml +++ b/build/crd/percona/generated/pgv2.percona.com_perconapgclusters.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgclusters.pgv2.percona.com spec: group: pgv2.percona.com @@ -13622,7 +13622,7 @@ spec: postgresVersion: description: The major version of PostgreSQL installed in the PostgreSQL image - maximum: 16 + maximum: 17 minimum: 12 type: integer proxy: diff --git a/build/crd/percona/generated/pgv2.percona.com_perconapgrestores.yaml b/build/crd/percona/generated/pgv2.percona.com_perconapgrestores.yaml index 68edf6d27..d85b1b8ca 100644 --- a/build/crd/percona/generated/pgv2.percona.com_perconapgrestores.yaml +++ b/build/crd/percona/generated/pgv2.percona.com_perconapgrestores.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgrestores.pgv2.percona.com spec: group: pgv2.percona.com diff --git a/build/crd/percona/generated/pgv2.percona.com_perconapgupgrades.yaml b/build/crd/percona/generated/pgv2.percona.com_perconapgupgrades.yaml index 99d5b4650..c93b61fa0 100644 --- a/build/crd/percona/generated/pgv2.percona.com_perconapgupgrades.yaml +++ b/build/crd/percona/generated/pgv2.percona.com_perconapgupgrades.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgupgrades.pgv2.percona.com spec: group: pgv2.percona.com @@ -2511,7 +2511,7 @@ spec: type: string toPostgresVersion: description: The major version of PostgreSQL to be upgraded to. - maximum: 16 + maximum: 17 minimum: 13 type: integer tolerations: diff --git a/config/crd/bases/pgv2.percona.com_perconapgclusters.yaml b/config/crd/bases/pgv2.percona.com_perconapgclusters.yaml index e0c487505..84f213a97 100644 --- a/config/crd/bases/pgv2.percona.com_perconapgclusters.yaml +++ b/config/crd/bases/pgv2.percona.com_perconapgclusters.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgbackups.pgv2.percona.com spec: group: pgv2.percona.com @@ -408,7 +408,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgclusters.pgv2.percona.com spec: group: pgv2.percona.com @@ -14027,7 +14027,7 @@ spec: postgresVersion: description: The major version of PostgreSQL installed in the PostgreSQL image - maximum: 16 + maximum: 17 minimum: 12 type: integer proxy: @@ -17846,7 +17846,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgrestores.pgv2.percona.com spec: group: pgv2.percona.com @@ -17944,7 +17944,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgupgrades.pgv2.percona.com spec: group: pgv2.percona.com @@ -20452,7 +20452,7 @@ spec: type: string toPostgresVersion: description: The major version of PostgreSQL to be upgraded to. - maximum: 16 + maximum: 17 minimum: 13 type: integer tolerations: diff --git a/config/crd/bases/postgres-operator.crunchydata.com_crunchybridgeclusters.yaml b/config/crd/bases/postgres-operator.crunchydata.com_crunchybridgeclusters.yaml index 75564f248..1219a3642 100644 --- a/config/crd/bases/postgres-operator.crunchydata.com_crunchybridgeclusters.yaml +++ b/config/crd/bases/postgres-operator.crunchydata.com_crunchybridgeclusters.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: latest diff --git a/config/crd/bases/postgres-operator.crunchydata.com_pgadmins.yaml b/config/crd/bases/postgres-operator.crunchydata.com_pgadmins.yaml index b368a86d4..8a571d997 100644 --- a/config/crd/bases/postgres-operator.crunchydata.com_pgadmins.yaml +++ b/config/crd/bases/postgres-operator.crunchydata.com_pgadmins.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: latest diff --git a/config/crd/bases/postgres-operator.crunchydata.com_pgupgrades.yaml b/config/crd/bases/postgres-operator.crunchydata.com_pgupgrades.yaml index bacf8fa72..80c3d09c3 100644 --- a/config/crd/bases/postgres-operator.crunchydata.com_pgupgrades.yaml +++ b/config/crd/bases/postgres-operator.crunchydata.com_pgupgrades.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: latest @@ -966,7 +966,7 @@ spec: fromPostgresVersion: description: The major version of PostgreSQL before the upgrade. maximum: 16 - minimum: 10 + minimum: 12 type: integer image: description: The image name to use for major PostgreSQL upgrades. @@ -2505,8 +2505,8 @@ spec: type: string toPostgresVersion: description: The major version of PostgreSQL to be upgraded to. - maximum: 16 - minimum: 10 + maximum: 17 + minimum: 13 type: integer tolerations: description: |- diff --git a/config/crd/bases/postgres-operator.crunchydata.com_postgresclusters.yaml b/config/crd/bases/postgres-operator.crunchydata.com_postgresclusters.yaml index 21978ad2f..5f1adb32a 100644 --- a/config/crd/bases/postgres-operator.crunchydata.com_postgresclusters.yaml +++ b/config/crd/bases/postgres-operator.crunchydata.com_postgresclusters.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: 5.4.2 diff --git a/deploy/bundle.yaml b/deploy/bundle.yaml index 3e95ad9f6..b0d64d112 100644 --- a/deploy/bundle.yaml +++ b/deploy/bundle.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: latest @@ -295,7 +295,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgbackups.pgv2.percona.com spec: group: pgv2.percona.com @@ -701,7 +701,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgclusters.pgv2.percona.com spec: group: pgv2.percona.com @@ -14320,7 +14320,7 @@ spec: postgresVersion: description: The major version of PostgreSQL installed in the PostgreSQL image - maximum: 16 + maximum: 17 minimum: 12 type: integer proxy: @@ -18139,7 +18139,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgrestores.pgv2.percona.com spec: group: pgv2.percona.com @@ -18237,7 +18237,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgupgrades.pgv2.percona.com spec: group: pgv2.percona.com @@ -20745,7 +20745,7 @@ spec: type: string toPostgresVersion: description: The major version of PostgreSQL to be upgraded to. - maximum: 16 + maximum: 17 minimum: 13 type: integer tolerations: @@ -20945,7 +20945,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: latest @@ -22849,7 +22849,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: latest @@ -23813,7 +23813,7 @@ spec: fromPostgresVersion: description: The major version of PostgreSQL before the upgrade. maximum: 16 - minimum: 10 + minimum: 12 type: integer image: description: The image name to use for major PostgreSQL upgrades. @@ -25352,8 +25352,8 @@ spec: type: string toPostgresVersion: description: The major version of PostgreSQL to be upgraded to. - maximum: 16 - minimum: 10 + maximum: 17 + minimum: 13 type: integer tolerations: description: |- @@ -25546,7 +25546,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: 5.4.2 diff --git a/deploy/crd.yaml b/deploy/crd.yaml index af6c4b01c..8e10bf277 100644 --- a/deploy/crd.yaml +++ b/deploy/crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: latest @@ -295,7 +295,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgbackups.pgv2.percona.com spec: group: pgv2.percona.com @@ -701,7 +701,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgclusters.pgv2.percona.com spec: group: pgv2.percona.com @@ -14320,7 +14320,7 @@ spec: postgresVersion: description: The major version of PostgreSQL installed in the PostgreSQL image - maximum: 16 + maximum: 17 minimum: 12 type: integer proxy: @@ -18139,7 +18139,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgrestores.pgv2.percona.com spec: group: pgv2.percona.com @@ -18237,7 +18237,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgupgrades.pgv2.percona.com spec: group: pgv2.percona.com @@ -20745,7 +20745,7 @@ spec: type: string toPostgresVersion: description: The major version of PostgreSQL to be upgraded to. - maximum: 16 + maximum: 17 minimum: 13 type: integer tolerations: @@ -20945,7 +20945,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: latest @@ -22849,7 +22849,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: latest @@ -23813,7 +23813,7 @@ spec: fromPostgresVersion: description: The major version of PostgreSQL before the upgrade. maximum: 16 - minimum: 10 + minimum: 12 type: integer image: description: The image name to use for major PostgreSQL upgrades. @@ -25352,8 +25352,8 @@ spec: type: string toPostgresVersion: description: The major version of PostgreSQL to be upgraded to. - maximum: 16 - minimum: 10 + maximum: 17 + minimum: 13 type: integer tolerations: description: |- @@ -25546,7 +25546,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: 5.4.2 diff --git a/deploy/cw-bundle.yaml b/deploy/cw-bundle.yaml index 1ae1b43a8..3844b9e74 100644 --- a/deploy/cw-bundle.yaml +++ b/deploy/cw-bundle.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: latest @@ -295,7 +295,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgbackups.pgv2.percona.com spec: group: pgv2.percona.com @@ -701,7 +701,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgclusters.pgv2.percona.com spec: group: pgv2.percona.com @@ -14320,7 +14320,7 @@ spec: postgresVersion: description: The major version of PostgreSQL installed in the PostgreSQL image - maximum: 16 + maximum: 17 minimum: 12 type: integer proxy: @@ -18139,7 +18139,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgrestores.pgv2.percona.com spec: group: pgv2.percona.com @@ -18237,7 +18237,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 name: perconapgupgrades.pgv2.percona.com spec: group: pgv2.percona.com @@ -20745,7 +20745,7 @@ spec: type: string toPostgresVersion: description: The major version of PostgreSQL to be upgraded to. - maximum: 16 + maximum: 17 minimum: 13 type: integer tolerations: @@ -20945,7 +20945,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: latest @@ -22849,7 +22849,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: latest @@ -23813,7 +23813,7 @@ spec: fromPostgresVersion: description: The major version of PostgreSQL before the upgrade. maximum: 16 - minimum: 10 + minimum: 12 type: integer image: description: The image name to use for major PostgreSQL upgrades. @@ -25352,8 +25352,8 @@ spec: type: string toPostgresVersion: description: The major version of PostgreSQL to be upgraded to. - maximum: 16 - minimum: 10 + maximum: 17 + minimum: 13 type: integer tolerations: description: |- @@ -25546,7 +25546,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.1 + controller-gen.kubebuilder.io/version: v0.16.3 labels: app.kubernetes.io/name: pgo app.kubernetes.io/version: 5.4.2 diff --git a/e2e-tests/tests/major-upgrade/45-16-to-17.yaml b/e2e-tests/tests/major-upgrade/45-16-to-17.yaml new file mode 100644 index 000000000..5f7bfc6e6 --- /dev/null +++ b/e2e-tests/tests/major-upgrade/45-16-to-17.yaml @@ -0,0 +1,24 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: |- + set -o errexit + set -o xtrace + + source ../../functions + + kubectl apply -n ${NAMESPACE} -f - <<-EOF + apiVersion: pgv2.percona.com/v2 + kind: PerconaPGUpgrade + metadata: + name: 16-to-17 + spec: + postgresClusterName: major-upgrade + image: ${IMAGE_UPGRADE} + fromPostgresVersion: 16 + toPostgresVersion: 17 + toPostgresImage: $(get_container_image "postgres" 17) + toPgBouncerImage: $(get_container_image "pgbouncer" 17) + toPgBackRestImage: $(get_container_image "pgbackrest" 17) + EOF + diff --git a/e2e-tests/tests/major-upgrade/45-assert.yaml b/e2e-tests/tests/major-upgrade/45-assert.yaml new file mode 100644 index 000000000..e52b25e2c --- /dev/null +++ b/e2e-tests/tests/major-upgrade/45-assert.yaml @@ -0,0 +1,42 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestAssert +timeout: 360 +commands: +- script: |- + kubectl -n ${NAMESPACE} get pg,pod,job + sleep 5 +--- +apiVersion: pgv2.percona.com/v2 +kind: PerconaPGCluster +metadata: + name: major-upgrade +spec: + postgresVersion: 17 +status: + pgbouncer: + ready: 3 + size: 3 + postgres: + instances: + - name: instance1 + ready: 3 + size: 3 + ready: 3 + size: 3 + state: ready +--- +kind: Job +apiVersion: batch/v1 +metadata: + labels: + postgres-operator.crunchydata.com/cluster: major-upgrade + postgres-operator.crunchydata.com/pgbackrest: '' + postgres-operator.crunchydata.com/pgbackrest-backup: replica-create + postgres-operator.crunchydata.com/pgbackrest-repo: repo4 + ownerReferences: + - apiVersion: pgv2.percona.com/v2 + kind: PerconaPGBackup + controller: true + blockOwnerDeletion: true +status: + succeeded: 1 diff --git a/e2e-tests/tests/major-upgrade/46-assert.yaml b/e2e-tests/tests/major-upgrade/46-assert.yaml new file mode 100644 index 000000000..1b95780c8 --- /dev/null +++ b/e2e-tests/tests/major-upgrade/46-assert.yaml @@ -0,0 +1,21 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestAssert +timeout: 660 +commands: +- script: |- + kubectl get postgrescluster major-upgrade \ + -n ${NAMESPACE} \ + -o yaml \ + | yq eval '.status.pgbackrest.repos' - +--- +apiVersion: postgres-operator.crunchydata.com/v1beta1 +kind: PostgresCluster +metadata: + name: major-upgrade +status: + pgbackrest: + repos: + - bound: true + name: repo1 + replicaCreateBackupComplete: true + stanzaCreated: true diff --git a/e2e-tests/tests/major-upgrade/47-assert.yaml b/e2e-tests/tests/major-upgrade/47-assert.yaml new file mode 100644 index 000000000..0b0618774 --- /dev/null +++ b/e2e-tests/tests/major-upgrade/47-assert.yaml @@ -0,0 +1,31 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestAssert +timeout: 660 +--- +kind: Job +apiVersion: batch/v1 +metadata: + annotations: + postgres-operator.crunchydata.com/pgbackrest-backup: backup-after-16-to-17 + labels: + postgres-operator.crunchydata.com/pgbackrest-backup: manual + postgres-operator.crunchydata.com/pgbackrest-repo: repo1 + ownerReferences: + - apiVersion: pgv2.percona.com/v2 + kind: PerconaPGBackup + controller: true + blockOwnerDeletion: true +status: + succeeded: 1 +--- +apiVersion: pgv2.percona.com/v2 +kind: PerconaPGBackup +metadata: + name: backup-after-16-to-17 +spec: + pgCluster: major-upgrade + repoName: repo1 + options: + - --type=full +status: + state: Succeeded diff --git a/e2e-tests/tests/major-upgrade/47-run-backup.yaml b/e2e-tests/tests/major-upgrade/47-run-backup.yaml new file mode 100644 index 000000000..392bc719e --- /dev/null +++ b/e2e-tests/tests/major-upgrade/47-run-backup.yaml @@ -0,0 +1,9 @@ +apiVersion: pgv2.percona.com/v2 +kind: PerconaPGBackup +metadata: + name: backup-after-16-to-17 +spec: + pgCluster: major-upgrade + repoName: repo1 + options: + - --type=full diff --git a/e2e-tests/tests/major-upgrade/48-assert.yaml b/e2e-tests/tests/major-upgrade/48-assert.yaml new file mode 100644 index 000000000..95d57c293 --- /dev/null +++ b/e2e-tests/tests/major-upgrade/48-assert.yaml @@ -0,0 +1,10 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestAssert +timeout: 30 +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 11-read-from-primary +data: + data: ' 100500' diff --git a/e2e-tests/tests/major-upgrade/48-run-restore.yaml b/e2e-tests/tests/major-upgrade/48-run-restore.yaml new file mode 100644 index 000000000..d496fe312 --- /dev/null +++ b/e2e-tests/tests/major-upgrade/48-run-restore.yaml @@ -0,0 +1,8 @@ +apiVersion: pgv2.percona.com/v2 +kind: PerconaPGRestore +metadata: + name: restore-after-16-to-17 +spec: + pgCluster: major-upgrade + repoName: repo1 + diff --git a/e2e-tests/tests/major-upgrade/49-read-from-primary.yaml b/e2e-tests/tests/major-upgrade/49-read-from-primary.yaml new file mode 100644 index 000000000..03c7aa852 --- /dev/null +++ b/e2e-tests/tests/major-upgrade/49-read-from-primary.yaml @@ -0,0 +1,12 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +timeout: 30 +commands: + - script: |- + set -o errexit + set -o xtrace + + source ../../functions + data=$(run_psql_local '\c myapp \\\ SELECT * from myApp;' "postgres:$(get_psql_user_pass major-upgrade-pguser-postgres)@$(get_psql_user_host major-upgrade-pguser-postgres)") + + kubectl create configmap -n "${NAMESPACE}" 11-read-from-primary --from-literal=data="${data}" diff --git a/pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go b/pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go index 66151d121..1425050ea 100644 --- a/pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go +++ b/pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go @@ -92,7 +92,7 @@ type PerconaPGClusterSpec struct { // The major version of PostgreSQL installed in the PostgreSQL image // +kubebuilder:validation:Required // +kubebuilder:validation:Minimum=12 - // +kubebuilder:validation:Maximum=16 + // +kubebuilder:validation:Maximum=17 // +operator-sdk:csv:customresourcedefinitions:type=spec PostgresVersion int `json:"postgresVersion"` diff --git a/pkg/apis/pgv2.percona.com/v2/perconapgupgrade_types.go b/pkg/apis/pgv2.percona.com/v2/perconapgupgrade_types.go index 2c3369013..9dc99076f 100644 --- a/pkg/apis/pgv2.percona.com/v2/perconapgupgrade_types.go +++ b/pkg/apis/pgv2.percona.com/v2/perconapgupgrade_types.go @@ -65,7 +65,7 @@ type PerconaPGUpgradeSpec struct { // The major version of PostgreSQL to be upgraded to. // +kubebuilder:validation:Required // +kubebuilder:validation:Minimum=13 - // +kubebuilder:validation:Maximum=16 + // +kubebuilder:validation:Maximum=17 ToPostgresVersion int `json:"toPostgresVersion"` // The image to use for PostgreSQL containers after upgrade. diff --git a/pkg/apis/postgres-operator.crunchydata.com/v1beta1/pgupgrade_types.go b/pkg/apis/postgres-operator.crunchydata.com/v1beta1/pgupgrade_types.go index 3a6494c5f..f7214edc1 100644 --- a/pkg/apis/postgres-operator.crunchydata.com/v1beta1/pgupgrade_types.go +++ b/pkg/apis/postgres-operator.crunchydata.com/v1beta1/pgupgrade_types.go @@ -58,7 +58,7 @@ type PGUpgradeSpec struct { // The major version of PostgreSQL before the upgrade. // +kubebuilder:validation:Required - // +kubebuilder:validation:Minimum=10 + // +kubebuilder:validation:Minimum=12 // +kubebuilder:validation:Maximum=16 FromPostgresVersion int `json:"fromPostgresVersion"` @@ -69,8 +69,8 @@ type PGUpgradeSpec struct { // The major version of PostgreSQL to be upgraded to. // +kubebuilder:validation:Required - // +kubebuilder:validation:Minimum=10 - // +kubebuilder:validation:Maximum=16 + // +kubebuilder:validation:Minimum=13 + // +kubebuilder:validation:Maximum=17 ToPostgresVersion int `json:"toPostgresVersion"` // The image name to use for PostgreSQL containers after upgrade.