Skip to content

Commit e300d85

Browse files
egeguneshors
andauthored
K8SPSMDB-1419: Add replset remapping support (#2147)
Co-authored-by: Viacheslav Sarzhan <slava.sarzhan@percona.com>
1 parent f6b8591 commit e300d85

File tree

27 files changed

+611
-61
lines changed

27 files changed

+611
-61
lines changed

config/crd/bases/psmdb.percona.com_perconaservermongodbrestores.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,10 @@ spec:
229229
([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$'))
230230
- message: Date should not be used when 'latest' type is used
231231
rule: self.type != 'latest' || !has(self.date)
232-
replset:
233-
type: string
232+
replsetRemapping:
233+
additionalProperties:
234+
type: string
235+
type: object
234236
selective:
235237
properties:
236238
namespaces:

deploy/backup/restore.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ spec:
99
# withUsersAndRoles: true
1010
# namespaces:
1111
# - "db.collection"
12+
# replsetRemapping:
13+
# rs0: shard0
14+
# rs1: shard1
1215
# pitr:
1316
# type: date
1417
# date: YYYY-MM-DD HH:MM:SS

deploy/bundle.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -495,8 +495,10 @@ spec:
495495
([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$'))
496496
- message: Date should not be used when 'latest' type is used
497497
rule: self.type != 'latest' || !has(self.date)
498-
replset:
499-
type: string
498+
replsetRemapping:
499+
additionalProperties:
500+
type: string
501+
type: object
500502
selective:
501503
properties:
502504
namespaces:

deploy/crd.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -495,8 +495,10 @@ spec:
495495
([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$'))
496496
- message: Date should not be used when 'latest' type is used
497497
rule: self.type != 'latest' || !has(self.date)
498-
replset:
499-
type: string
498+
replsetRemapping:
499+
additionalProperties:
500+
type: string
501+
type: object
500502
selective:
501503
properties:
502504
namespaces:

deploy/cw-bundle.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -495,8 +495,10 @@ spec:
495495
([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$'))
496496
- message: Date should not be used when 'latest' type is used
497497
rule: self.type != 'latest' || !has(self.date)
498-
replset:
499-
type: string
498+
replsetRemapping:
499+
additionalProperties:
500+
type: string
501+
type: object
500502
selective:
501503
properties:
502504
namespaces:

e2e-tests/functions

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,8 @@ wait_for_pbm_operations() {
308308
run_restore() {
309309
local backup_name=$1
310310

311+
log "running restore restore-$backup_name"
312+
311313
cat $test_dir/conf/restore.yml \
312314
| $sed -e "s/name:/name: restore-$backup_name/" \
313315
| $sed -e "s/backupName:/backupName: $backup_name/" \
@@ -939,9 +941,13 @@ run_mongo() {
939941
local uri="$2"
940942
local driver=${3:-mongodb+srv}
941943
local suffix=${4:-.svc.cluster.local}
942-
local client_container=$(kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}')
943944
local mongo_flag="$5"
944-
[[ $uri == *cfg* ]] && replica_set='cfg' || replica_set='rs0'
945+
local replica_set=${6:-"rs0"}
946+
if [[ $uri == *cfg* ]]; then
947+
replica_set="cfg"
948+
fi
949+
950+
local client_container=$(kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}')
945951
kubectl_bin exec ${client_container} -- \
946952
bash -c "printf '$command\n' | mongo $driver://$uri$suffix/admin?ssl=false\&replicaSet=$replica_set $mongo_flag"
947953
}
@@ -1080,6 +1086,7 @@ compare_mongo_cmd() {
10801086
local collection="${6:-test}"
10811087
local sort="$7"
10821088
local tls="${8:-false}"
1089+
local replicaset="$9"
10831090

10841091
local full_command="db.${collection}.${command}()"
10851092
if [[ -n ${sort} ]]; then
@@ -1094,7 +1101,7 @@ compare_mongo_cmd() {
10941101
mongo_command=run_mongo
10951102
fi
10961103

1097-
$mongo_command "use ${database}\n ${full_command}" "$uri" "mongodb" "$suffix" \
1104+
$mongo_command "use ${database}\n ${full_command}" "$uri" "mongodb" "$suffix" "" ${replicaset} \
10981105
| egrep -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:|Started a new thread for the timer service' \
10991106
| $sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxx.svc/' \
11001107
>$tmp_dir/${command}${postfix}
@@ -1122,6 +1129,8 @@ compare_mongos_cmd() {
11221129
mongos_command=run_mongos
11231130
fi
11241131

1132+
log "running db.${collection}.command() in ${database}"
1133+
11251134
$mongos_command "use ${database}\n db.${collection}.${command}()" "$uri" "mongodb" "$suffix" "" "$port" \
11261135
| egrep -v 'I NETWORK|W NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:|Started a new thread for the timer service' \
11271136
| $sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxx.svc/' \
@@ -1560,7 +1569,7 @@ run_backup() {
15601569
local backup_name=${2:-"backup-${storage}"}
15611570
local type=${3:-"logical"}
15621571

1563-
desc "run backup $backup_name"
1572+
log "running backup $backup_name"
15641573

15651574
yq eval '.metadata.name = "'${backup_name}'"
15661575
| .spec.storageName = "'${storage}'"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
switched to db myApp
2+
{ "_id" : , "x" : 100500 }
3+
bye
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: psmdb.percona.com/v1
2+
kind: PerconaServerMongoDBBackup
3+
metadata:
4+
name:
5+
finalizers:
6+
- percona.com/delete-backup
7+
spec:
8+
clusterName: some-name-source
9+
storageName: minio
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: psmdb.percona.com/v1
2+
kind: PerconaServerMongoDBRestore
3+
metadata:
4+
name:
5+
spec:
6+
clusterName: some-name-target
7+
backupName:
8+
replsetRemapping:
9+
rs0: replset0
10+
rs1: replset1
11+
cfg: csReplSet
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
apiVersion: psmdb.percona.com/v1
2+
kind: PerconaServerMongoDB
3+
metadata:
4+
finalizers:
5+
- percona.com/delete-psmdb-pvc
6+
name: some-name-source
7+
spec:
8+
image: perconalab/percona-server-mongodb-operator:main-mongod8.0
9+
imagePullPolicy: Always
10+
updateStrategy: SmartUpdate
11+
secrets:
12+
users: some-users
13+
backup:
14+
enabled: true
15+
image: perconalab/percona-server-mongodb-operator:main-backup
16+
storages:
17+
minio:
18+
type: s3
19+
s3:
20+
credentialsSecret: minio-secret
21+
region: us-east-1
22+
bucket: operator-testing
23+
endpointUrl: http://minio-service:9000/
24+
insecureSkipTLSVerify: false
25+
sharding:
26+
enabled: true
27+
configsvrReplSet:
28+
size: 3
29+
resources:
30+
limits:
31+
cpu: "300m"
32+
memory: "0.5G"
33+
requests:
34+
cpu: "300m"
35+
memory: "0.5G"
36+
volumeSpec:
37+
persistentVolumeClaim:
38+
resources:
39+
requests:
40+
storage: 3Gi
41+
mongos:
42+
size: 3
43+
resources:
44+
limits:
45+
cpu: "300m"
46+
memory: "0.5G"
47+
requests:
48+
cpu: "300m"
49+
memory: "0.5G"
50+
replsets:
51+
- name: rs0
52+
size: 3
53+
expose:
54+
enabled: false
55+
exposeType: ClusterIP
56+
resources:
57+
limits:
58+
cpu: 300m
59+
memory: 0.5G
60+
requests:
61+
cpu: 300m
62+
memory: 0.5G
63+
volumeSpec:
64+
persistentVolumeClaim:
65+
resources:
66+
requests:
67+
storage: 3Gi
68+
- name: rs1
69+
size: 3
70+
expose:
71+
enabled: false
72+
exposeType: ClusterIP
73+
resources:
74+
limits:
75+
cpu: 300m
76+
memory: 0.5G
77+
requests:
78+
cpu: 300m
79+
memory: 0.5G
80+
volumeSpec:
81+
persistentVolumeClaim:
82+
resources:
83+
requests:
84+
storage: 3Gi

0 commit comments

Comments
 (0)