Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -954,7 +954,7 @@ spec:
type: object
fromPostgresVersion:
description: The major version of PostgreSQL before the upgrade.
maximum: 16
maximum: 17
minimum: 12
type: integer
image:
Expand Down
2 changes: 1 addition & 1 deletion config/crd/bases/pgv2.percona.com_perconapgclusters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22859,7 +22859,7 @@ spec:
type: object
fromPostgresVersion:
description: The major version of PostgreSQL before the upgrade.
maximum: 16
maximum: 17
minimum: 12
type: integer
image:
Expand Down
2 changes: 1 addition & 1 deletion deploy/bundle.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23160,7 +23160,7 @@ spec:
type: object
fromPostgresVersion:
description: The major version of PostgreSQL before the upgrade.
maximum: 16
maximum: 17
minimum: 12
type: integer
image:
Expand Down
2 changes: 1 addition & 1 deletion deploy/crd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23160,7 +23160,7 @@ spec:
type: object
fromPostgresVersion:
description: The major version of PostgreSQL before the upgrade.
maximum: 16
maximum: 17
minimum: 12
type: integer
image:
Expand Down
2 changes: 1 addition & 1 deletion deploy/cw-bundle.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23160,7 +23160,7 @@ spec:
type: object
fromPostgresVersion:
description: The major version of PostgreSQL before the upgrade.
maximum: 16
maximum: 17
minimum: 12
type: integer
image:
Expand Down
53 changes: 29 additions & 24 deletions e2e-tests/release_versions
Original file line number Diff line number Diff line change
@@ -1,37 +1,42 @@
# Images versions
IMAGE_OPERATOR=percona/percona-postgresql-operator:2.8.0
IMAGE_OPERATOR=percona/percona-postgresql-operator:2.8.1

IMAGE_POSTGRESQL17=percona/percona-distribution-postgresql:17.6-1
IMAGE_PGBOUNCER17=percona/percona-pgbouncer:1.24.1-1
IMAGE_POSTGIS17=percona/percona-postgresql-operator:2.8.0-ppg17.6-postgres-gis3.3.8
IMAGE_BACKREST17=percona/percona-pgbackrest:2.56.0-1
IMAGE_POSTGRESQL18=percona/percona-distribution-postgresql:18.1-1
IMAGE_PGBOUNCER18=percona/percona-pgbouncer:1.25.0-1
IMAGE_POSTGIS18=percona/percona-postgresql-operator:2.8.1-ppg18.1-postgres-gis3.5.4
IMAGE_BACKREST18=percona/percona-pgbackrest:2.57.0-1

IMAGE_POSTGRESQL16=percona/percona-distribution-postgresql:16.10-1
IMAGE_PGBOUNCER16=percona/percona-pgbouncer:1.24.1-1
IMAGE_POSTGIS16=percona/percona-postgresql-operator:2.8.0-ppg16.10-postgres-gis3.3.8
IMAGE_BACKREST16=percona/percona-pgbackrest:2.56.0-1
IMAGE_POSTGRESQL17=percona/percona-distribution-postgresql:17.7-1
IMAGE_PGBOUNCER17=percona/percona-pgbouncer:1.25.0-1
IMAGE_POSTGIS17=percona/percona-postgresql-operator:2.8.1-ppg17.7-postgres-gis3.3.8
IMAGE_BACKREST17=percona/percona-pgbackrest:2.57.0-1

IMAGE_POSTGRESQL15=percona/percona-distribution-postgresql:15.14-1
IMAGE_PGBOUNCER15=percona/percona-pgbouncer:1.24.1-1
IMAGE_POSTGIS15=percona/percona-postgresql-operator:2.8.0-ppg15.14-postgres-gis3.3.8
IMAGE_BACKREST15=percona/percona-pgbackrest:2.56.0-1
IMAGE_POSTGRESQL16=percona/percona-distribution-postgresql:16.11-1
IMAGE_PGBOUNCER16=percona/percona-pgbouncer:1.25.0-1
IMAGE_POSTGIS16=percona/percona-postgresql-operator:2.8.1-ppg16.11-postgres-gis3.3.8
IMAGE_BACKREST16=percona/percona-pgbackrest:2.57.0-1

IMAGE_POSTGRESQL14=percona/percona-distribution-postgresql:14.19-1
IMAGE_PGBOUNCER14=percona/percona-pgbouncer:1.24.1-1
IMAGE_POSTGIS14=percona/percona-postgresql-operator:2.8.0-ppg14.19-postgres-gis3.3.8
IMAGE_BACKREST14=percona/percona-pgbackrest:2.56.0-1
IMAGE_POSTGRESQL15=percona/percona-distribution-postgresql:15.15-1
IMAGE_PGBOUNCER15=percona/percona-pgbouncer:1.25.0-1
IMAGE_POSTGIS15=percona/percona-postgresql-operator:2.8.1-ppg15.15-postgres-gis3.3.8
IMAGE_BACKREST15=percona/percona-pgbackrest:2.57.0-1

IMAGE_POSTGRESQL13=percona/percona-distribution-postgresql:13.22-1
IMAGE_PGBOUNCER13=percona/percona-pgbouncer:1.24.1-1
IMAGE_POSTGIS13=percona/percona-postgresql-operator:2.8.0-ppg13.22-postgres-gis3.3.8
IMAGE_BACKREST13=percona/percona-pgbackrest:2.56.0-1
IMAGE_POSTGRESQL14=percona/percona-distribution-postgresql:14.20-1
IMAGE_PGBOUNCER14=percona/percona-pgbouncer:1.25.0-1
IMAGE_POSTGIS14=percona/percona-postgresql-operator:2.8.1-ppg14.20-postgres-gis3.3.8
IMAGE_BACKREST14=percona/percona-pgbackrest:2.57.0-1

IMAGE_UPGRADE=percona/percona-postgresql-operator:2.8.0-upgrade
IMAGE_POSTGRESQL13=percona/percona-distribution-postgresql:13.23-1
IMAGE_PGBOUNCER13=percona/percona-pgbouncer:1.25.0-1
IMAGE_POSTGIS13=percona/percona-postgresql-operator:2.8.1-ppg13.23-postgres-gis3.3.8
IMAGE_BACKREST13=percona/percona-pgbackrest:2.57.0-1

IMAGE_UPGRADE=percona/percona-postgresql-operator:2.8.1-upgrade

IMAGE_PMM_CLIENT=percona/pmm-client:2.44.1-1
IMAGE_PMM_SERVER=percona/pmm-server:2.44.1
IMAGE_PMM3_CLIENT=percona/pmm-client:3.4.1
IMAGE_PMM3_SERVER=percona/pmm-server:3.4.1
IMAGE_PMM3_CLIENT=percona/pmm-client:3.5.0
IMAGE_PMM3_SERVER=percona/pmm-server:3.5.0

# Supported k8s versions
GKE_MIN=1.31
Expand Down
2 changes: 1 addition & 1 deletion e2e-tests/tests/custom-tls/09-assert.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
apiVersion: kuttl.dev/v1beta1
kind: TestAssert
timeout: 100
timeout: 160
---
kind: StatefulSet
apiVersion: apps/v1
Expand Down
2 changes: 1 addition & 1 deletion e2e-tests/tests/major-upgrade/01-create-cluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ commands:
.spec.proxy.pgBouncer.image = "perconalab/percona-postgresql-operator:main-pgbouncer13" |
.spec.backups.pgbackrest.image = "perconalab/percona-postgresql-operator:main-pgbackrest13" |
.spec.patroni.dynamicConfiguration.postgresql.parameters.shared_preload_libraries = "pg_cron" |
.spec.extensions.custom += [{"name": "pg_cron", "version": "1.6.1"}]' \
.spec.extensions.custom += [{"name": "pg_cron", "version": "1.6.6"}]' \
| kubectl -n "${NAMESPACE}" apply -f -
24 changes: 24 additions & 0 deletions e2e-tests/tests/major-upgrade/20-17-to-18.yaml
Original file line number Diff line number Diff line change
@@ -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: 17-to-18
spec:
postgresClusterName: major-upgrade
image: ${IMAGE_UPGRADE}
fromPostgresVersion: 17
toPostgresVersion: 18
toPostgresImage: $(get_container_image "postgres" 18)
toPgBouncerImage: $(get_container_image "pgbouncer" 18)
toPgBackRestImage: $(get_container_image "pgbackrest" 18)
EOF

42 changes: 42 additions & 0 deletions e2e-tests/tests/major-upgrade/20-assert.yaml
Original file line number Diff line number Diff line change
@@ -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: 18
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
21 changes: 21 additions & 0 deletions e2e-tests/tests/major-upgrade/21-assert.yaml
Original file line number Diff line number Diff line change
@@ -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: repo4
replicaCreateBackupComplete: true
stanzaCreated: true
31 changes: 31 additions & 0 deletions e2e-tests/tests/major-upgrade/22-assert.yaml
Original file line number Diff line number Diff line change
@@ -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-17-to-18
labels:
postgres-operator.crunchydata.com/pgbackrest-backup: manual
postgres-operator.crunchydata.com/pgbackrest-repo: repo4
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-17-to-18
spec:
pgCluster: major-upgrade
repoName: repo4
options:
- --type=full
status:
state: Succeeded
9 changes: 9 additions & 0 deletions e2e-tests/tests/major-upgrade/22-run-backup.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
apiVersion: pgv2.percona.com/v2
kind: PerconaPGBackup
metadata:
name: backup-after-17-to-18
spec:
pgCluster: major-upgrade
repoName: repo4
options:
- --type=full
10 changes: 10 additions & 0 deletions e2e-tests/tests/major-upgrade/23-assert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
apiVersion: kuttl.dev/v1beta1
kind: TestAssert
timeout: 30
---
kind: ConfigMap
apiVersion: v1
metadata:
name: 23-read-from-primary
data:
data: ' 100500'
12 changes: 12 additions & 0 deletions e2e-tests/tests/major-upgrade/23-read-from-primary.yaml
Original file line number Diff line number Diff line change
@@ -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}" 23-read-from-primary --from-literal=data="${data}"
14 changes: 3 additions & 11 deletions e2e-tests/tests/upgrade-consistency/01-create-cluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,7 @@ commands:

source ../../functions

cr_version="2.7.0"

backrest_image=$(get_version_images $cr_version BACKREST${PG_VER})
pgbouncer_image=$(get_version_images $cr_version PGBOUNCER${PG_VER})
postgres_image=$(get_version_images $cr_version POSTGRESQL${PG_VER})

get_cr \
| yq eval ".spec.crVersion=\"$cr_version\"" - \
| yq eval ".spec.image=\"${REGISTRY_NAME_FULL}${postgres_image}\"" - \
| yq eval ".spec.backups.pgbackrest.image=\"${REGISTRY_NAME_FULL}${backrest_image}\"" - \
| yq eval ".spec.proxy.pgBouncer.image=\"${REGISTRY_NAME_FULL}${pgbouncer_image}\"" - \
| kubectl -n "${NAMESPACE}" apply -f -
| yq eval '
.spec.crVersion="2.7.0"' - \
| kubectl -n "${NAMESPACE}" apply -f -
2 changes: 1 addition & 1 deletion e2e-tests/tests/upgrade-consistency/02-assert.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ kind: PerconaPGCluster
metadata:
name: upgrade-consistency
spec:
crVersion: 2.8.0
crVersion: 2.8.1
status:
pgbouncer:
ready: 3
Expand Down
12 changes: 2 additions & 10 deletions e2e-tests/tests/upgrade-consistency/02-patch-cluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,9 @@ commands:

source ../../functions

cr_version="2.8.0"

backrest_image=$(get_version_images $cr_version BACKREST${PG_VER} )
pgbouncer_image=$(get_version_images $cr_version PGBOUNCER${PG_VER})
postgres_image=$(get_version_images $cr_version POSTGRESQL${PG_VER})

get_cr \
| yq eval ".spec.crVersion=\"$cr_version\"" - \
| yq eval ".spec.image=\"${REGISTRY_NAME_FULL}${postgres_image}\"" - \
| yq eval ".spec.backups.pgbackrest.image=\"${REGISTRY_NAME_FULL}${backrest_image}\"" - \
| yq eval ".spec.proxy.pgBouncer.image=\"${REGISTRY_NAME_FULL}${pgbouncer_image}\"" - \
| yq eval '
.spec.crVersion="2.8.1"' - \
| kubectl -n "${NAMESPACE}" apply -f -

sleep 10
8 changes: 2 additions & 6 deletions e2e-tests/tests/upgrade-consistency/03-patch-cluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,9 @@ commands:

source ../../functions

cr_version="2.9.0"

get_cr \
| yq eval ".spec.crVersion=\"$cr_version\"" - \
| yq eval ".spec.image=\"${IMAGE_BASE}:main-ppg$PG_VER-postgres\"" - \
| yq eval ".spec.backups.pgbackrest.image=\"${IMAGE_BASE}:main-pgbackrest$PG_VER\"" - \
| yq eval ".spec.proxy.pgBouncer.image=\"${IMAGE_BASE}:main-pgbouncer$PG_VER\"" - \
| yq eval '
.spec.crVersion="2.9.0"' - \
| kubectl -n "${NAMESPACE}" apply -f -

sleep 10
2 changes: 1 addition & 1 deletion pkg/apis/pgv2.percona.com/v2/perconapgupgrade_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ type PerconaPGUpgradeSpec struct {
// The major version of PostgreSQL before the upgrade.
// +kubebuilder:validation:Required
// +kubebuilder:validation:Minimum=12
// +kubebuilder:validation:Maximum=16
// +kubebuilder:validation:Maximum=17
FromPostgresVersion int `json:"fromPostgresVersion"`

// The major version of PostgreSQL to be upgraded to.
Expand Down
Loading