Skip to content

Commit 759653a

Browse files
authored
K8SPG-735: Create backup in start-from-backup test
Create backup in start-from-backup test
2 parents 9a4c1bd + 14001d3 commit 759653a

14 files changed

+745
-32
lines changed

e2e-tests/functions

+5-5
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ get_cr() {
191191
case $test_name in
192192
"demand-backup" | "start-from-backup")
193193
yq eval -i '
194-
.spec.backups.pgbackrest.configuration = [{"secret":{"name":"'${cr_name}'-pgbackrest-secrets"}}] |
194+
.spec.backups.pgbackrest.configuration = [{"secret":{"name":"'${test_name}'-pgbackrest-secrets"}}] |
195195
.spec.backups.pgbackrest.manual.repoName = "repo1" |
196196
.spec.backups.pgbackrest.manual.options = ["--type=full"] |
197197
.spec.backups.pgbackrest.global.repo1-path = "/backrestrepo/postgres-operator/'${repo_path}'/repo1" |
@@ -203,18 +203,18 @@ get_cr() {
203203
.spec.backups.pgbackrest.repos += [{"name":"repo3","azure":{"container":"'$BUCKET'"}}]
204204
' $TEMP_DIR/cr.yaml
205205
fi
206-
if [[ $test_name == "start-from-backup" ]]; then
206+
if [[ $test_name == "start-from-backup" && ! $cr_name =~ "source" ]]; then
207207
yq eval -i '
208-
.spec.dataSource.pgbackrest.configuration = [{"secret":{"name":"'${cr_name}'-pgbackrest-secrets"}}] |
208+
.spec.dataSource.pgbackrest.configuration = [{"secret":{"name":"'${test_name}'-pgbackrest-secrets"}}] |
209209
.spec.dataSource.pgbackrest.stanza = "db" |
210-
.spec.dataSource.pgbackrest.global.repo1-path = "/cluster-source/demand-backup-ppg'$PG_VER'/repo1" |
210+
.spec.dataSource.pgbackrest.global.repo1-path = "/backrestrepo/postgres-operator/demand-backup-ppg'$PG_VER'/repo1" |
211211
.spec.dataSource.pgbackrest.repo = {"name":"repo1","s3":{"bucket":"'$BUCKET'","endpoint":"s3.amazonaws.com","region":"us-east-1"}}
212212
' $TEMP_DIR/cr.yaml
213213
fi
214214
;;
215215
"scheduled-backup")
216216
yq eval -i '
217-
.spec.backups.pgbackrest.configuration = [{"secret":{"name":"'${cr_name}'-pgbackrest-secrets"}}] |
217+
.spec.backups.pgbackrest.configuration = [{"secret":{"name":"'${test_name}'-pgbackrest-secrets"}}] |
218218
.spec.backups.pgbackrest.manual.repoName = "repo1" |
219219
.spec.backups.pgbackrest.manual.options = ["--type=full"] |
220220
.spec.backups.pgbackrest.global.repo1-path = "/backrestrepo/postgres-operator/'${repo_path}'/repo1" |

e2e-tests/tests/start-from-backup/01-assert.yaml

+9-23
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ kind: StatefulSet
66
apiVersion: apps/v1
77
metadata:
88
labels:
9-
postgres-operator.crunchydata.com/cluster: start-from-backup
9+
postgres-operator.crunchydata.com/cluster: start-from-backup-source
1010
postgres-operator.crunchydata.com/data: postgres
1111
postgres-operator.crunchydata.com/instance-set: instance1
1212
ownerReferences:
1313
- apiVersion: postgres-operator.crunchydata.com/v1beta1
1414
kind: PostgresCluster
15-
name: start-from-backup
15+
name: start-from-backup-source
1616
controller: true
1717
blockOwnerDeletion: true
1818
status:
@@ -26,16 +26,16 @@ status:
2626
kind: Deployment
2727
apiVersion: apps/v1
2828
metadata:
29-
name: start-from-backup-pgbouncer
29+
name: start-from-backup-source-pgbouncer
3030
labels:
31-
postgres-operator.crunchydata.com/cluster: start-from-backup
31+
postgres-operator.crunchydata.com/cluster: start-from-backup-source
3232
postgres-operator.crunchydata.com/role: pgbouncer
3333
annotations:
3434
deployment.kubernetes.io/revision: '1'
3535
ownerReferences:
3636
- apiVersion: postgres-operator.crunchydata.com/v1beta1
3737
kind: PostgresCluster
38-
name: start-from-backup
38+
name: start-from-backup-source
3939
controller: true
4040
blockOwnerDeletion: true
4141
status:
@@ -48,7 +48,7 @@ kind: Job
4848
apiVersion: batch/v1
4949
metadata:
5050
labels:
51-
postgres-operator.crunchydata.com/cluster: start-from-backup
51+
postgres-operator.crunchydata.com/cluster: start-from-backup-source
5252
postgres-operator.crunchydata.com/pgbackrest: ''
5353
postgres-operator.crunchydata.com/pgbackrest-backup: replica-create
5454
postgres-operator.crunchydata.com/pgbackrest-repo: repo1
@@ -63,11 +63,11 @@ status:
6363
apiVersion: postgres-operator.crunchydata.com/v1beta1
6464
kind: PostgresCluster
6565
metadata:
66-
name: start-from-backup
66+
name: start-from-backup-source
6767
ownerReferences:
6868
- apiVersion: pgv2.percona.com/v2
6969
kind: PerconaPGCluster
70-
name: start-from-backup
70+
name: start-from-backup-source
7171
controller: true
7272
blockOwnerDeletion: true
7373
finalizers:
@@ -83,9 +83,6 @@ status:
8383
repos:
8484
- name: repo1
8585
stanzaCreated: true
86-
restore:
87-
finished: true
88-
id: ~pgo-bootstrap-start-from-backup
8986
proxy:
9087
pgBouncer:
9188
readyReplicas: 3
@@ -94,7 +91,7 @@ status:
9491
apiVersion: pgv2.percona.com/v2
9592
kind: PerconaPGCluster
9693
metadata:
97-
name: start-from-backup
94+
name: start-from-backup-source
9895
status:
9996
pgbouncer:
10097
ready: 3
@@ -107,14 +104,3 @@ status:
107104
ready: 3
108105
size: 3
109106
state: ready
110-
---
111-
apiVersion: pgv2.percona.com/v2
112-
kind: PerconaPGRestore
113-
metadata:
114-
name: start-from-backup-bootstrap
115-
spec:
116-
pgCluster: start-from-backup
117-
repoName: repo1
118-
status:
119-
state: Succeeded
120-
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 20
4+
commands:
5+
- script: |-
6+
set -o errexit
7+
set -o xtrace
8+
9+
source ../../functions
10+
11+
get_cr "start-from-backup-source" "demand-backup-ppg$PG_VER" \
12+
| kubectl -n "${NAMESPACE}" apply -f -
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
commands:
4+
- script: |-
5+
set -o errexit
6+
set -o xtrace
7+
8+
source ../../functions
9+
10+
run_psql_local \
11+
'CREATE DATABASE myapp; \c myapp \\\ CREATE TABLE IF NOT EXISTS myApp (id int PRIMARY KEY);' \
12+
"postgres:$(get_psql_user_pass start-from-backup-source-pguser-postgres)@$(get_psql_user_host start-from-backup-source-pguser-postgres)"
13+
14+
run_psql_local \
15+
'\c myapp \\\ INSERT INTO myApp (id) VALUES (100500), (100501)' \
16+
"postgres:$(get_psql_user_pass start-from-backup-source-pguser-postgres)@$(get_psql_user_host start-from-backup-source-pguser-postgres)"

e2e-tests/tests/start-from-backup/02-assert.yaml e2e-tests/tests/start-from-backup/03-assert.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ timeout: 30
55
kind: ConfigMap
66
apiVersion: v1
77
metadata:
8-
name: 02-read-from-primary
8+
name: 03-read-from-primary
99
data:
1010
data: |2-
1111
100500
12-
100501
12+
100501
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 30
4+
commands:
5+
- script: |-
6+
set -o errexit
7+
set -o xtrace
8+
9+
source ../../functions
10+
11+
data=$(run_psql_local '\c myapp \\\ SELECT * from myApp;' "postgres:$(get_psql_user_pass start-from-backup-source-pguser-postgres)@$(get_psql_user_host start-from-backup-source-pguser-postgres)")
12+
13+
kubectl create configmap -n "${NAMESPACE}" 03-read-from-primary --from-literal=data="${data}"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 660
4+
---
5+
kind: Job
6+
apiVersion: batch/v1
7+
metadata:
8+
annotations:
9+
postgres-operator.crunchydata.com/pgbackrest-backup: start-from-backup-source-full-s3
10+
labels:
11+
postgres-operator.crunchydata.com/pgbackrest-backup: manual
12+
postgres-operator.crunchydata.com/pgbackrest-repo: repo1
13+
ownerReferences:
14+
- apiVersion: pgv2.percona.com/v2
15+
kind: PerconaPGBackup
16+
controller: true
17+
blockOwnerDeletion: true
18+
status:
19+
succeeded: 1
20+
---
21+
apiVersion: pgv2.percona.com/v2
22+
kind: PerconaPGBackup
23+
metadata:
24+
name: start-from-backup-source-full-s3
25+
spec:
26+
pgCluster: start-from-backup-source
27+
repoName: repo1
28+
options:
29+
- --type=full
30+
status:
31+
state: Succeeded
32+
---
33+
apiVersion: postgres-operator.crunchydata.com/v1beta1
34+
kind: PostgresCluster
35+
metadata:
36+
name: start-from-backup-source
37+
generation: 2
38+
status:
39+
observedGeneration: 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: pgv2.percona.com/v2
2+
kind: PerconaPGBackup
3+
metadata:
4+
name: start-from-backup-source-full-s3
5+
spec:
6+
pgCluster: start-from-backup-source
7+
repoName: repo1
8+
options:
9+
- --type=full
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
delete:
4+
- apiVersion: pgv2.percona.com/v2
5+
kind: PerconaPGCluster
6+
name: start-from-backup-source
7+
- apiVersion: postgres-operator.crunchydata.com/v1beta1
8+
kind: PostgresCluster
9+
name: start-from-backup-source
10+
timeout: 300
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 480
4+
---
5+
kind: StatefulSet
6+
apiVersion: apps/v1
7+
metadata:
8+
labels:
9+
postgres-operator.crunchydata.com/cluster: start-from-backup
10+
postgres-operator.crunchydata.com/data: postgres
11+
postgres-operator.crunchydata.com/instance-set: instance1
12+
ownerReferences:
13+
- apiVersion: postgres-operator.crunchydata.com/v1beta1
14+
kind: PostgresCluster
15+
name: start-from-backup
16+
controller: true
17+
blockOwnerDeletion: true
18+
status:
19+
observedGeneration: 1
20+
replicas: 1
21+
readyReplicas: 1
22+
currentReplicas: 1
23+
updatedReplicas: 1
24+
collisionCount: 0
25+
---
26+
kind: Deployment
27+
apiVersion: apps/v1
28+
metadata:
29+
name: start-from-backup-pgbouncer
30+
labels:
31+
postgres-operator.crunchydata.com/cluster: start-from-backup
32+
postgres-operator.crunchydata.com/role: pgbouncer
33+
annotations:
34+
deployment.kubernetes.io/revision: '1'
35+
ownerReferences:
36+
- apiVersion: postgres-operator.crunchydata.com/v1beta1
37+
kind: PostgresCluster
38+
name: start-from-backup
39+
controller: true
40+
blockOwnerDeletion: true
41+
status:
42+
observedGeneration: 1
43+
replicas: 3
44+
updatedReplicas: 3
45+
readyReplicas: 3
46+
---
47+
kind: Job
48+
apiVersion: batch/v1
49+
metadata:
50+
labels:
51+
postgres-operator.crunchydata.com/cluster: start-from-backup
52+
postgres-operator.crunchydata.com/pgbackrest: ''
53+
postgres-operator.crunchydata.com/pgbackrest-backup: replica-create
54+
postgres-operator.crunchydata.com/pgbackrest-repo: repo1
55+
ownerReferences:
56+
- apiVersion: pgv2.percona.com/v2
57+
kind: PerconaPGBackup
58+
controller: true
59+
blockOwnerDeletion: true
60+
status:
61+
succeeded: 1
62+
---
63+
apiVersion: postgres-operator.crunchydata.com/v1beta1
64+
kind: PostgresCluster
65+
metadata:
66+
name: start-from-backup
67+
ownerReferences:
68+
- apiVersion: pgv2.percona.com/v2
69+
kind: PerconaPGCluster
70+
name: start-from-backup
71+
controller: true
72+
blockOwnerDeletion: true
73+
finalizers:
74+
- postgres-operator.crunchydata.com/finalizer
75+
status:
76+
instances:
77+
- name: instance1
78+
readyReplicas: 3
79+
replicas: 3
80+
updatedReplicas: 3
81+
observedGeneration: 1
82+
pgbackrest:
83+
repos:
84+
- name: repo1
85+
stanzaCreated: true
86+
restore:
87+
finished: true
88+
id: ~pgo-bootstrap-start-from-backup
89+
proxy:
90+
pgBouncer:
91+
readyReplicas: 3
92+
replicas: 3
93+
---
94+
apiVersion: pgv2.percona.com/v2
95+
kind: PerconaPGCluster
96+
metadata:
97+
name: start-from-backup
98+
status:
99+
pgbouncer:
100+
ready: 3
101+
size: 3
102+
postgres:
103+
instances:
104+
- name: instance1
105+
ready: 3
106+
size: 3
107+
ready: 3
108+
size: 3
109+
state: ready
110+
---
111+
apiVersion: pgv2.percona.com/v2
112+
kind: PerconaPGRestore
113+
metadata:
114+
name: start-from-backup-bootstrap
115+
spec:
116+
pgCluster: start-from-backup
117+
repoName: repo1
118+
status:
119+
state: Succeeded
120+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 60
4+
---
5+
kind: ConfigMap
6+
apiVersion: v1
7+
metadata:
8+
name: 07-read-from-primary
9+
data:
10+
data: |2-
11+
100500
12+
100501
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
apiVersion: kuttl.dev/v1beta1
22
kind: TestStep
3-
timeout: 30
3+
timeout: 60
44
commands:
55
- script: |-
66
set -o errexit
@@ -10,4 +10,4 @@ commands:
1010
1111
data=$(run_psql_local '\c myapp \\\ SELECT * from myApp;' "postgres:$(get_psql_user_pass start-from-backup-pguser-postgres)@$(get_psql_user_host start-from-backup-pguser-postgres)")
1212
13-
kubectl create configmap -n "${NAMESPACE}" 02-read-from-primary --from-literal=data="${data}"
13+
kubectl create configmap -n "${NAMESPACE}" 07-read-from-primary --from-literal=data="${data}"

0 commit comments

Comments
 (0)