Skip to content

Commit 19b203c

Browse files
gkechhors
andauthored
K8SPG-570 update custom secret with labels when they are missing, update missing secret data with autogeneration (#1218)
* K8SPG-570 update custom secret with labels when they are missing * use patch instead of update * adjustsments on the logic * fix concurrency issue by checking the secret update * update e2e test * add reset/set scenario on e2e test * cr: bring back if err == nil for apply secrets, the secret is always overwritten * cr: use OnError instead of RetryOnConflict * cr: fix needsUpdate return early --------- Co-authored-by: Viacheslav Sarzhan <slava.sarzhan@percona.com>
1 parent 54b12cc commit 19b203c

11 files changed

+301
-1
lines changed

e2e-tests/tests/users/14-write-data-to-custom-db.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ commands:
1313
schema='public'
1414
hostname=$(get_pgbouncer_host chico-credentials)
1515
16-
1716
run_psql \
1817
'SET search_path TO public;CREATE TABLE IF NOT EXISTS customApp (id int PRIMARY KEY);' \
1918
"-h $hostname -U $user -d $db_name" "$password"
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
apiVersion: postgres-operator.crunchydata.com/v1beta1
2+
kind: PostgresCluster
3+
metadata:
4+
name: users
5+
ownerReferences:
6+
- apiVersion: pgv2.percona.com/v2
7+
kind: PerconaPGCluster
8+
name: users
9+
controller: true
10+
blockOwnerDeletion: true
11+
finalizers:
12+
- postgres-operator.crunchydata.com/finalizer
13+
status:
14+
instances:
15+
- name: instance1
16+
readyReplicas: 3
17+
replicas: 3
18+
updatedReplicas: 3
19+
pgbackrest:
20+
repoHost:
21+
apiVersion: apps/v1
22+
kind: StatefulSet
23+
ready: true
24+
repos:
25+
- bound: true
26+
name: repo1
27+
replicaCreateBackupComplete: true
28+
stanzaCreated: true
29+
proxy:
30+
pgBouncer:
31+
readyReplicas: 3
32+
replicas: 3
33+
---
34+
apiVersion: pgv2.percona.com/v2
35+
kind: PerconaPGCluster
36+
metadata:
37+
name: users
38+
status:
39+
pgbouncer:
40+
ready: 3
41+
size: 3
42+
postgres:
43+
instances:
44+
- name: instance1
45+
ready: 3
46+
size: 3
47+
ready: 3
48+
size: 3
49+
state: ready
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 10
4+
commands:
5+
- script: |-
6+
set -o errexit
7+
set -o xtrace
8+
9+
source ../../functions
10+
11+
kubectl -n ${NAMESPACE} create secret generic eagle-credentials --from-literal=password=eagle-db-password
12+
sleep 5
13+
14+
kubectl -n ${NAMESPACE} patch perconapgcluster/${test_name} --type=json -p '[{"op":"add", "path":"/spec/autoCreateUserSchema","value":true},{"op":"add", "path":"/spec/users","value":[{"name":"eagle","databases":["nest"],"password":{"type":"ASCII"},"secretName":"eagle-credentials"}]}]'
15+
sleep 15
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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+
predefinedPassword=eagle-db-password
11+
user='eagle'
12+
db_name='nest'
13+
schema='eagle'
14+
hostname=$(get_pgbouncer_host eagle-credentials)
15+
16+
run_psql \
17+
'CREATE TABLE IF NOT EXISTS customApp (id int PRIMARY KEY);' \
18+
"-h $hostname -U $user -d $db_name" "$predefinedPassword"
19+
run_psql \
20+
"INSERT INTO $schema.customApp (id) VALUES (100500)" \
21+
"-h $hostname -U $user -d $db_name" "$predefinedPassword"
22+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 30
4+
---
5+
kind: ConfigMap
6+
apiVersion: v1
7+
metadata:
8+
name: 18-read-from-user-db-with-predefined-password
9+
data:
10+
data: ' 100500'
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
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+
predefinedPassword=eagle-db-password
12+
user='eagle'
13+
db_name='nest'
14+
schema='eagle'
15+
hostname=$(get_pgbouncer_host eagle-credentials)
16+
17+
data=$(run_psql "SELECT * from $schema.customApp;" "-h $hostname -U $user -d $db_name" "$predefinedPassword")
18+
19+
kubectl create configmap -n "${NAMESPACE}" 18-read-from-user-db-with-predefined-password --from-literal=data="${data}"
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 10
4+
commands:
5+
- script: |-
6+
set -o errexit
7+
set -o xtrace
8+
9+
source ../../functions
10+
11+
kubectl -n ${NAMESPACE} patch secret eagle-credentials --type merge --patch '{"stringData": {"password": "", "verifier":""}}'
12+
13+
sleep 5
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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+
resetPassword=$(get_psql_user_pass eagle-credentials)
11+
user='eagle'
12+
db_name='nest'
13+
schema='eagle'
14+
hostname=$(get_pgbouncer_host eagle-credentials)
15+
16+
run_psql \
17+
'CREATE TABLE IF NOT EXISTS customApp (id int PRIMARY KEY);' \
18+
"-h $hostname -U $user -d $db_name" "$resetPassword"
19+
run_psql \
20+
"INSERT INTO $schema.customApp (id) VALUES (100501)" \
21+
"-h $hostname -U $user -d $db_name" "$resetPassword"
22+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 10
4+
commands:
5+
- script: |-
6+
set -o errexit
7+
set -o xtrace
8+
9+
source ../../functions
10+
11+
kubectl -n ${NAMESPACE} patch secret eagle-credentials --type merge --patch '{"stringData": {"password": "eagle-db-password", "verifier":""}}'
12+
sleep 5
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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+
resetPassword=eagle-db-password
11+
user='eagle'
12+
db_name='nest'
13+
schema='eagle'
14+
hostname=$(get_pgbouncer_host eagle-credentials)
15+
16+
run_psql \
17+
'CREATE TABLE IF NOT EXISTS customApp (id int PRIMARY KEY);' \
18+
"-h $hostname -U $user -d $db_name" "$resetPassword"
19+
run_psql \
20+
"INSERT INTO $schema.customApp (id) VALUES (100502)" \
21+
"-h $hostname -U $user -d $db_name" "$resetPassword"
22+

0 commit comments

Comments
 (0)