Skip to content
Open
Show file tree
Hide file tree
Changes from 10 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
2 changes: 1 addition & 1 deletion e2e-tests/conf/client.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ spec:
spec:
containers:
- name: pg-client
image: perconalab/percona-distribution-postgresql:16
image: docker.io/perconalab/percona-distribution-postgresql:16
imagePullPolicy: Always
command:
- sleep
Expand Down
5 changes: 3 additions & 2 deletions e2e-tests/conf/cmctl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,14 @@ spec:
serviceAccountName: cmctl
containers:
- name: cmctl
image: curlimages/curl
image: docker.io/alpine/curl:latest
imagePullPolicy: Always
command:
- /bin/sh
- -c
- |
curl -fsSL -o /tmp/cmctl https://github.com/cert-manager/cmctl/releases/download/v2.4.1/cmctl_linux_amd64 \
arch="$(uname -m)"; case "$arch" in aarch64|arm64) arch=arm64 ;; *) arch=amd64 ;; esac
curl -fsSL -o /tmp/cmctl "https://github.com/cert-manager/cmctl/releases/download/v2.4.1/cmctl_linux_${arch}" \
&& chmod +x /tmp/cmctl \
&& sleep 100500
restartPolicy: Always
277 changes: 234 additions & 43 deletions e2e-tests/functions

Large diffs are not rendered by default.

122 changes: 71 additions & 51 deletions e2e-tests/release_versions

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a reminder: we need to revert this before merging to main after tests on release branch pass

Original file line number Diff line number Diff line change
@@ -1,66 +1,86 @@
IMAGE_OPERATOR=perconalab/percona-postgresql-operator:main
IMAGE_OPERATOR=percona/percona-postgresql-operator:3.1.0

IMAGE_POSTGRESQL14=perconalab/percona-postgresql-operator:main-ppg14-postgres
IMAGE_POSTGRESQL14_UBI8_COMMUNITY=perconalab/percona-postgresql-operator:main-ubi8-postgres14-community
IMAGE_POSTGRESQL14_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:main-postgres14-community
IMAGE_PGBOUNCER14=perconalab/percona-postgresql-operator:main-pgbouncer14
IMAGE_POSTGIS14=perconalab/percona-postgresql-operator:main-ppg14-postgres-gis
IMAGE_BACKREST14=perconalab/percona-postgresql-operator:main-pgbackrest14
IMAGE_POSTGRESQL14=percona/percona-distribution-postgresql:14.24-1
IMAGE_POSTGRESQL14_UBI8=percona/percona-distribution-postgresql:14.24-1-ubi8
IMAGE_POSTGRESQL14_UBI10=percona/percona-distribution-postgresql:14.24-1-ubi10
IMAGE_POSTGRESQL14_UBI8_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-ubi8-postgres14-community
IMAGE_POSTGRESQL14_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-postgres14-community
IMAGE_PGBOUNCER14=percona/percona-pgbouncer:1.25.2-6
IMAGE_POSTGIS14=percona/percona-distribution-postgresql-with-postgis:14.24-1
IMAGE_POSTGIS14_UBI8=percona/percona-distribution-postgresql-with-postgis:14.24-1-ubi8
IMAGE_POSTGIS14_UBI10=percona/percona-distribution-postgresql-with-postgis:14.24-1-ubi10
IMAGE_BACKREST14=percona/percona-pgbackrest:2.59.0-1

IMAGE_POSTGRESQL15=perconalab/percona-postgresql-operator:main-ppg15-postgres
IMAGE_POSTGRESQL15_UBI8_COMMUNITY=perconalab/percona-postgresql-operator:main-ubi8-postgres15-community
IMAGE_POSTGRESQL15_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:main-postgres15-community
IMAGE_PGBOUNCER15=perconalab/percona-postgresql-operator:main-pgbouncer15
IMAGE_POSTGIS15=perconalab/percona-postgresql-operator:main-ppg15-postgres-gis
IMAGE_BACKREST15=perconalab/percona-postgresql-operator:main-pgbackrest15
IMAGE_POSTGRESQL15=percona/percona-distribution-postgresql:15.19-1
IMAGE_POSTGRESQL15_UBI8=percona/percona-distribution-postgresql:15.19-1-ubi8
IMAGE_POSTGRESQL15_UBI10=percona/percona-distribution-postgresql:15.19-1-ubi10
IMAGE_POSTGRESQL15_UBI8_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-ubi8-postgres15-community
IMAGE_POSTGRESQL15_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-postgres15-community
IMAGE_PGBOUNCER15=percona/percona-pgbouncer:1.25.2-6
IMAGE_POSTGIS15=percona/percona-distribution-postgresql-with-postgis:15.19-1
IMAGE_POSTGIS15_UBI8=percona/percona-distribution-postgresql-with-postgis:15.19-1-ubi8
IMAGE_POSTGIS15_UBI10=percona/percona-distribution-postgresql-with-postgis:15.19-1-ubi10
IMAGE_BACKREST15=percona/percona-pgbackrest:2.59.0-1

IMAGE_POSTGRESQL16=perconalab/percona-postgresql-operator:main-ppg16-postgres
IMAGE_POSTGRESQL16_UBI8_COMMUNITY=perconalab/percona-postgresql-operator:main-ubi8-postgres16-community
IMAGE_POSTGRESQL16_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:main-postgres16-community
IMAGE_PGBOUNCER16=perconalab/percona-postgresql-operator:main-pgbouncer16
IMAGE_POSTGIS16=perconalab/percona-postgresql-operator:main-ppg16-postgres-gis
IMAGE_BACKREST16=perconalab/percona-postgresql-operator:main-pgbackrest16
IMAGE_POSTGRESQL16=percona/percona-distribution-postgresql:16.15-1
IMAGE_POSTGRESQL16_UBI8=percona/percona-distribution-postgresql:16.15-1-ubi8
IMAGE_POSTGRESQL16_UBI10=percona/percona-distribution-postgresql:16.15-1-ubi10
IMAGE_POSTGRESQL16_UBI8_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-ubi8-postgres16-community
IMAGE_POSTGRESQL16_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-postgres16-community
IMAGE_PGBOUNCER16=percona/percona-pgbouncer:1.25.2-6
IMAGE_POSTGIS16=percona/percona-distribution-postgresql-with-postgis:16.15-1
IMAGE_POSTGIS16_UBI8=percona/percona-distribution-postgresql-with-postgis:16.15-1-ubi8
IMAGE_POSTGIS16_UBI10=percona/percona-distribution-postgresql-with-postgis:16.15-1-ubi10
IMAGE_BACKREST16=percona/percona-pgbackrest:2.59.0-1

IMAGE_POSTGRESQL17=perconalab/percona-postgresql-operator:main-ppg17-postgres
IMAGE_POSTGRESQL17_UBI8_COMMUNITY=perconalab/percona-postgresql-operator:main-ubi8-postgres17-community
IMAGE_POSTGRESQL17_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:main-postgres17-community
IMAGE_PGBOUNCER17=perconalab/percona-postgresql-operator:main-pgbouncer17
IMAGE_POSTGIS17=perconalab/percona-postgresql-operator:main-ppg17-postgres-gis
IMAGE_BACKREST17=perconalab/percona-postgresql-operator:main-pgbackrest17
IMAGE_POSTGRESQL17=percona/percona-distribution-postgresql:17.11.1-1
IMAGE_POSTGRESQL17_UBI8=percona/percona-distribution-postgresql:17.11.1-1-ubi8
IMAGE_POSTGRESQL17_UBI10=percona/percona-distribution-postgresql:17.11.1-1-ubi10
IMAGE_POSTGRESQL17_UBI8_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-ubi8-postgres17-community
IMAGE_POSTGRESQL17_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-postgres17-community
IMAGE_PGBOUNCER17=percona/percona-pgbouncer:1.25.2-6
IMAGE_POSTGIS17=percona/percona-distribution-postgresql-with-postgis:17.11.1-1
IMAGE_POSTGIS17_UBI8=percona/percona-distribution-postgresql-with-postgis:17.11.1-1-ubi8
IMAGE_POSTGIS17_UBI10=percona/percona-distribution-postgresql-with-postgis:17.11.1-1-ubi10
IMAGE_BACKREST17=percona/percona-pgbackrest:2.59.0-1

IMAGE_POSTGRESQL18=perconalab/percona-postgresql-operator:main-ppg18-postgres
IMAGE_POSTGRESQL18_UBI8_COMMUNITY=perconalab/percona-postgresql-operator:main-ubi8-postgres18-community
IMAGE_POSTGRESQL18_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:main-postgres18-community
IMAGE_PGBOUNCER18=perconalab/percona-postgresql-operator:main-pgbouncer18
IMAGE_POSTGIS18=perconalab/percona-postgresql-operator:main-ppg18-postgres-gis
IMAGE_BACKREST18=perconalab/percona-postgresql-operator:main-pgbackrest18
IMAGE_POSTGRESQL18=percona/percona-distribution-postgresql:18.6.1-1
IMAGE_POSTGRESQL18_UBI8=percona/percona-distribution-postgresql:18.6.1-1-ubi8
IMAGE_POSTGRESQL18_UBI10=percona/percona-distribution-postgresql:18.6.1-1-ubi10
IMAGE_POSTGRESQL18_UBI8_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-ubi8-postgres18-community
IMAGE_POSTGRESQL18_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-postgres18-community
IMAGE_PGBOUNCER18=percona/percona-pgbouncer:1.25.2-6
IMAGE_POSTGIS18=percona/percona-distribution-postgresql-with-postgis:18.6.1-1
IMAGE_POSTGIS18_UBI8=percona/percona-distribution-postgresql-with-postgis:18.6.1-1-ubi8
IMAGE_POSTGIS18_UBI10=percona/percona-distribution-postgresql-with-postgis:18.6.1-1-ubi10
IMAGE_BACKREST18=percona/percona-pgbackrest:2.59.0-1

IMAGE_POSTGRESQL19=perconalab/percona-postgresql-operator:main-ppg19-postgres
IMAGE_PGBOUNCER19=perconalab/percona-postgresql-operator:main-pgbouncer19
IMAGE_BACKREST19=perconalab/percona-postgresql-operator:main-pgbackrest19
IMAGE_UPGRADE19=perconalab/percona-postgresql-operator:main-upgrade19
IMAGE_POSTGRESQL19_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-postgres19-community

IMAGE_PGBOUNCER_COMMUNITY=perconalab/percona-postgresql-operator:main-pgbouncer-community
IMAGE_PGBACKREST_COMMUNITY=perconalab/percona-postgresql-operator:main-pgbackrest-community
IMAGE_PGBOUNCER_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-pgbouncer-community
IMAGE_PGBACKREST_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-pgbackrest-community

IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade
IMAGE_UPGRADE_UBI8_COMMUNITY=perconalab/percona-postgresql-operator:main-ubi8-upgrade-community
IMAGE_UPGRADE_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:main-upgrade-community
IMAGE_UPGRADE=percona/percona-distribution-postgresql-upgrade:18.6-17.11-16.15-15.19-14.24-1
IMAGE_UPGRADE_UBI8=percona/percona-distribution-postgresql-upgrade:18.6-17.11-16.15-15.19-14.24-1-ubi8
IMAGE_UPGRADE_UBI10=percona/percona-distribution-postgresql-upgrade:18.6-17.11-16.15-15.19-14.24-1-ubi10
IMAGE_UPGRADE_UBI8_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-ubi8-upgrade-community
IMAGE_UPGRADE_UBI9_COMMUNITY=perconalab/percona-postgresql-operator:3.1.0-upgrade-community

IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector
IMAGE_LOGCOLLECTOR=percona/fluentbit:5.1.1-1

IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest
IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest
GKE_MIN=1.33
IMAGE_PMM_CLIENT=percona/pmm-client:3.9.1
IMAGE_PMM_SERVER=percona/pmm-server:3.9.1

GKE_MIN=1.34
GKE_MAX=1.35
EKS_MIN=1.33
EKS_MAX=1.35
AKS_MIN=1.33
AKS_MAX=1.35
EKS_MIN=1.34
EKS_MAX=1.36
AKS_MIN=1.34
AKS_MAX=1.36
RKE2_MIN=1.34
RKE2_MAX=1.36
RANCHER=2.15.1
CERT_MANAGER=1.21.1
OPENSHIFT_MIN=4.18.40
OPENSHIFT_MAX=4.21.14
MINIKUBE_MAX=1.35.1
OPENSHIFT_MIN=4.19.43
OPENSHIFT_MAX=4.22.10
MINIKUBE_MAX=1.35.1
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@ commands:
}
}
' \
| add_arch_to_pg - \
| kubectl -n "${NAMESPACE}" apply -f -
8 changes: 8 additions & 0 deletions e2e-tests/tests/cert-manager-tls/08-delete-cluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,20 @@ commands:
kubectl -n "$NAMESPACE" delete perconapgcluster cert-manager-tls --wait=true || true
kubectl -n "$NAMESPACE" delete postgrescluster cert-manager-tls --wait=true || true

kubectl -n "$NAMESPACE" delete perconapgbackup --all --wait=true || true
kubectl -n "$NAMESPACE" delete job -l postgres-operator.crunchydata.com/cluster=cert-manager-tls --wait=true || true

kubectl -n "$NAMESPACE" delete pvc -l postgres-operator.crunchydata.com/cluster=cert-manager-tls || true
kubectl -n "$NAMESPACE" delete secret -l postgres-operator.crunchydata.com/cluster=cert-manager-tls || true
kubectl -n "$NAMESPACE" delete configmap internal-pki-cert-serial || true

cluster_deleted() {
! kubectl -n "$NAMESPACE" get postgrescluster cert-manager-tls 2>/dev/null
}
backups_deleted() {
[[ -z "$(kubectl -n "$NAMESPACE" get perconapgbackup -o name 2>/dev/null)" ]] && \
[[ -z "$(kubectl -n "$NAMESPACE" get job -l postgres-operator.crunchydata.com/cluster=cert-manager-tls -o name 2>/dev/null)" ]]
}
retry 12 5 cluster_deleted
retry 12 5 backups_deleted
timeout: 120
4 changes: 2 additions & 2 deletions e2e-tests/tests/custom-extensions/00-deploy-operator.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- script: |-
- timeout: 200
script: |-
set -o errexit
set -o xtrace

Expand All @@ -13,4 +14,3 @@ commands:
deploy_s3_secrets
deploy_minio
copy_custom_extensions_form_aws
timeout: 200
2 changes: 1 addition & 1 deletion e2e-tests/tests/custom-extensions/01-create-cluster.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- timeout: 60
- timeout: 120
script: |-
set -o errexit
set -o xtrace
Expand Down
30 changes: 16 additions & 14 deletions e2e-tests/tests/custom-extensions/02-install-pg_stat_kcache.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
apiVersion: pgv2.percona.com/v2
kind: PerconaPGCluster
metadata:
name: custom-extensions
spec:
extensions:
custom:
- name: pg_stat_kcache
version: 2.3.1
patroni:
dynamicConfiguration:
postgresql:
parameters:
shared_preload_libraries: pg_stat_statements,pg_stat_kcache
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- script: |-
set -o errexit
set -o xtrace

source ../../functions

kcache_ver=$(custom_ext_version 2.3.1)
kubectl -n "${NAMESPACE}" patch pg custom-extensions --type merge -p "{
\"spec\": {
\"extensions\": {\"custom\": [{\"name\": \"pg_stat_kcache\", \"version\": \"${kcache_ver}\"}]},
\"patroni\": {\"dynamicConfiguration\": {\"postgresql\": {\"parameters\": {\"shared_preload_libraries\": \"pg_stat_statements,pg_stat_kcache\"}}}}
}
}"
30 changes: 16 additions & 14 deletions e2e-tests/tests/custom-extensions/11-install-pg_stat_kcache.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
apiVersion: pgv2.percona.com/v2
kind: PerconaPGCluster
metadata:
name: custom-extensions
spec:
extensions:
custom:
- name: pg_stat_kcache
version: 2.3.1
patroni:
dynamicConfiguration:
postgresql:
parameters:
shared_preload_libraries: pg_stat_statements,pg_stat_kcache
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- script: |-
set -o errexit
set -o xtrace

source ../../functions

kcache_ver=$(custom_ext_version 2.3.1)
kubectl -n "${NAMESPACE}" patch pg custom-extensions --type merge -p "{
\"spec\": {
\"extensions\": {\"custom\": [{\"name\": \"pg_stat_kcache\", \"version\": \"${kcache_ver}\"}]},
\"patroni\": {\"dynamicConfiguration\": {\"postgresql\": {\"parameters\": {\"shared_preload_libraries\": \"pg_stat_statements,pg_stat_kcache\"}}}}
}
}"
30 changes: 16 additions & 14 deletions e2e-tests/tests/custom-extensions/14-update-pg_stat_kcache.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
apiVersion: pgv2.percona.com/v2
kind: PerconaPGCluster
metadata:
name: custom-extensions
spec:
extensions:
custom:
- name: pg_stat_kcache
version: 2.3.2
patroni:
dynamicConfiguration:
postgresql:
parameters:
shared_preload_libraries: pg_stat_statements,pg_stat_kcache
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- script: |-
set -o errexit
set -o xtrace

source ../../functions

kcache_ver=$(custom_ext_version 2.3.2)
kubectl -n "${NAMESPACE}" patch pg custom-extensions --type merge -p "{
\"spec\": {
\"extensions\": {\"custom\": [{\"name\": \"pg_stat_kcache\", \"version\": \"${kcache_ver}\"}]},
\"patroni\": {\"dynamicConfiguration\": {\"postgresql\": {\"parameters\": {\"shared_preload_libraries\": \"pg_stat_statements,pg_stat_kcache\"}}}}
}
}"
37 changes: 17 additions & 20 deletions e2e-tests/tests/custom-extensions/17-assert.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,20 @@ kind: TestAssert
# adding pg_cron to the custom list and to shared_preload_libraries restarts
# every instance pod
timeout: 420
---
apiVersion: pgv2.percona.com/v2
kind: PerconaPGCluster
metadata:
name: custom-extensions
status:
installedCustomExtensions:
- pg_stat_kcache
- pg_cron
pgbouncer:
ready: 3
size: 3
postgres:
instances:
- name: instance1
ready: 3
size: 3
ready: 3
size: 3
state: ready
commands:
- script: |-
set -o errexit
set -o xtrace

source ../../functions

if [[ ${ARCH} == arm64 ]]; then
echo "Skipping custom pg_cron assertion on arm64: pg_cron-*-arm64.tar.gz is not in extension storage"
exit 0
fi

wait_cluster_consistency custom-extensions

installed=$(kubectl -n "${NAMESPACE}" get pg custom-extensions -o jsonpath='{.status.installedCustomExtensions}')
echo "${installed}" | grep -q pg_cron \
|| { echo "ERROR: pg_cron was not recorded as an installed custom extension: ${installed}"; exit 1; }
Loading
Loading