Skip to content

Commit ec5a87c

Browse files
egeguneshorspooknullinelpandzic
authored
K8SPSMDB-807: Allow customizing replset name with custom config (#1252)
* K8SPSMDB-807: Allow customizing replset name with custom config * K8SPSMDB-807: fix backups for custom replSetName (#1238) * fix * fix sharding --------- Co-authored-by: Andrii Dema <[email protected]> * K8SPSMDB-807: Add custom-replset-name test --------- Co-authored-by: Ege Güneş <[email protected]> Co-authored-by: Viacheslav Sarzhan <[email protected]> * fix Jenkinsfile * fix images * address review comments --------- Co-authored-by: Viacheslav Sarzhan <[email protected]> Co-authored-by: Andrii Dema <[email protected]> Co-authored-by: Inel Pandzic <[email protected]>
1 parent a76717b commit ec5a87c

File tree

20 files changed

+395
-42
lines changed

20 files changed

+395
-42
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
switched to db myApp
2+
{ "_id" : , "x" : 100500 }
3+
{ "_id" : , "x" : 100501 }
4+
bye
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: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: psmdb.percona.com/v1
2+
kind: PerconaServerMongoDBBackup
3+
metadata:
4+
name: backup-aws-s3
5+
spec:
6+
psmdbCluster: some-name
7+
storageName: aws-s3
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: psmdb.percona.com/v1
2+
kind: PerconaServerMongoDBBackup
3+
metadata:
4+
name: backup-gcp-cs
5+
spec:
6+
psmdbCluster: some-name
7+
storageName: gcp-cs
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: psmdb.percona.com/v1
2+
kind: PerconaServerMongoDBBackup
3+
metadata:
4+
name: backup-minio
5+
spec:
6+
psmdbCluster: some-name
7+
storageName: minio
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: psmdb.percona.com/v1
2+
kind: PerconaServerMongoDBRestore
3+
metadata:
4+
name:
5+
spec:
6+
clusterName: some-name
7+
backupName:
Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
apiVersion: psmdb.percona.com/v1
2+
kind: PerconaServerMongoDB
3+
metadata:
4+
name: some-name
5+
spec:
6+
crVersion: 1.14.0
7+
allowUnsafeConfigurations: true
8+
backup:
9+
enabled: true
10+
image: percona/percona-backup-mongodb:2.0.4
11+
pitr:
12+
enabled: false
13+
serviceAccountName: percona-server-mongodb-operator
14+
storages:
15+
aws-s3:
16+
type: s3
17+
s3:
18+
credentialsSecret: aws-s3-secret
19+
region: us-east-1
20+
bucket: operator-testing
21+
prefix: psmdb
22+
minio:
23+
type: s3
24+
s3:
25+
credentialsSecret: minio-secret
26+
region: us-east-1
27+
bucket: operator-testing
28+
endpointUrl: http://minio-service:9000/
29+
gcp-cs:
30+
type: s3
31+
s3:
32+
credentialsSecret: gcp-cs-secret
33+
region: us-east-1
34+
bucket: operator-testing
35+
prefix: psmdb
36+
endpointUrl: https://storage.googleapis.com
37+
image: percona/percona-server-mongodb:4.4.10-11
38+
imagePullPolicy: Always
39+
pmm:
40+
enabled: false
41+
replsets:
42+
- affinity:
43+
antiAffinityTopologyKey: topology.kubernetes.io/zone
44+
arbiter:
45+
affinity:
46+
antiAffinityTopologyKey: topology.kubernetes.io/zone
47+
enabled: false
48+
size: 1
49+
configuration: |
50+
storage:
51+
directoryPerDB: true
52+
wiredTiger:
53+
engineConfig:
54+
directoryForIndexes: true
55+
expose:
56+
enabled: true
57+
exposeType: ClusterIP
58+
serviceAnnotations:
59+
networking.gke.io/load-balancer-type: Internal
60+
name: shard1
61+
podDisruptionBudget:
62+
maxUnavailable: 1
63+
size: 3
64+
volumeSpec:
65+
persistentVolumeClaim:
66+
resources:
67+
requests:
68+
storage: 2Gi
69+
storageClassName: standard-rwo
70+
- affinity:
71+
antiAffinityTopologyKey: topology.kubernetes.io/zone
72+
arbiter:
73+
affinity:
74+
antiAffinityTopologyKey: topology.kubernetes.io/zone
75+
enabled: false
76+
size: 1
77+
configuration: |
78+
storage:
79+
directoryPerDB: true
80+
wiredTiger:
81+
engineConfig:
82+
directoryForIndexes: true
83+
expose:
84+
enabled: true
85+
exposeType: ClusterIP
86+
serviceAnnotations:
87+
networking.gke.io/load-balancer-type: Internal
88+
name: shard3
89+
podDisruptionBudget:
90+
maxUnavailable: 1
91+
size: 3
92+
volumeSpec:
93+
persistentVolumeClaim:
94+
resources:
95+
requests:
96+
storage: 2Gi
97+
storageClassName: standard-rwo
98+
- affinity:
99+
antiAffinityTopologyKey: topology.kubernetes.io/zone
100+
arbiter:
101+
affinity:
102+
antiAffinityTopologyKey: topology.kubernetes.io/zone
103+
enabled: false
104+
size: 1
105+
configuration: |
106+
storage:
107+
directoryPerDB: true
108+
wiredTiger:
109+
engineConfig:
110+
directoryForIndexes: true
111+
expose:
112+
enabled: true
113+
exposeType: ClusterIP
114+
serviceAnnotations:
115+
networking.gke.io/load-balancer-type: Internal
116+
name: shard5
117+
podDisruptionBudget:
118+
maxUnavailable: 1
119+
size: 3
120+
volumeSpec:
121+
persistentVolumeClaim:
122+
resources:
123+
requests:
124+
storage: 2Gi
125+
storageClassName: standard-rwo
126+
- affinity:
127+
antiAffinityTopologyKey: topology.kubernetes.io/zone
128+
arbiter:
129+
affinity:
130+
antiAffinityTopologyKey: topology.kubernetes.io/zone
131+
enabled: false
132+
size: 1
133+
configuration: |
134+
storage:
135+
directoryPerDB: true
136+
wiredTiger:
137+
engineConfig:
138+
directoryForIndexes: true
139+
expose:
140+
enabled: true
141+
exposeType: ClusterIP
142+
serviceAnnotations:
143+
networking.gke.io/load-balancer-type: Internal
144+
name: shard7
145+
podDisruptionBudget:
146+
maxUnavailable: 1
147+
size: 3
148+
volumeSpec:
149+
persistentVolumeClaim:
150+
resources:
151+
requests:
152+
storage: 2Gi
153+
storageClassName: standard-rwo
154+
secrets:
155+
users: some-users
156+
sharding:
157+
configsvrReplSet:
158+
affinity:
159+
antiAffinityTopologyKey: topology.kubernetes.io/zone
160+
configuration: |
161+
replication:
162+
replSetName: csReplSet
163+
storage:
164+
directoryPerDB: true
165+
wiredTiger:
166+
engineConfig:
167+
directoryForIndexes: true
168+
expose:
169+
enabled: true
170+
exposeType: ClusterIP
171+
serviceAnnotations:
172+
networking.gke.io/load-balancer-type: Internal
173+
podDisruptionBudget:
174+
maxUnavailable: 1
175+
size: 3
176+
volumeSpec:
177+
persistentVolumeClaim:
178+
resources:
179+
requests:
180+
storage: 5Gi
181+
storageClassName: standard-rwo
182+
enabled: true
183+
mongos:
184+
affinity:
185+
antiAffinityTopologyKey: kubernetes.io/hostname
186+
expose:
187+
exposeType: LoadBalancer
188+
serviceAnnotations:
189+
networking.gke.io/load-balancer-type: Internal
190+
podDisruptionBudget:
191+
maxUnavailable: 1
192+
size: 3
193+
unmanaged: false
194+
updateStrategy: SmartUpdate
195+
upgradeOptions:
196+
apply: Disabled
197+
schedule: 0 2 * * *
198+
setFCV: false
199+
versionServiceEndpoint: https://check.percona.com

e2e-tests/custom-replset-name/run

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#!/bin/bash
2+
3+
set -o errexit
4+
set -o xtrace
5+
6+
test_dir=$(realpath $(dirname $0))
7+
. ${test_dir}/../functions
8+
9+
create_namespace $namespace
10+
deploy_operator
11+
apply_s3_storage_secrets
12+
deploy_minio
13+
14+
kubectl_bin apply -f $conf_dir/secrets.yml -f $conf_dir/client.yml -f $conf_dir/minio-secret.yml
15+
cluster="some-name"
16+
17+
desc 'create first PSMDB cluster'
18+
apply_cluster $test_dir/conf/${cluster}.yml
19+
wait_cluster_consistency $cluster
20+
21+
desc 'write data, read from all'
22+
run_mongos \
23+
'db.createUser({user:"myApp",pwd:"myPass",roles:[{db:"myApp",role:"readWrite"}]})' \
24+
"userAdmin:userAdmin123456@$cluster-mongos.$namespace"
25+
sleep 2
26+
run_mongos \
27+
'use myApp\n db.test.insert({ x: 100500 })' \
28+
"myApp:myPass@$cluster-mongos.$namespace"
29+
# compare_mongos_cmd "find" "myApp:myPass@$cluster-mongos.$namespace"
30+
31+
wait_backup_agent $cluster-shard1-0
32+
wait_backup_agent $cluster-shard1-1
33+
wait_backup_agent $cluster-shard1-2
34+
wait_backup_agent $cluster-shard3-0
35+
wait_backup_agent $cluster-shard3-1
36+
wait_backup_agent $cluster-shard3-2
37+
wait_backup_agent $cluster-shard5-0
38+
wait_backup_agent $cluster-shard5-1
39+
wait_backup_agent $cluster-shard5-2
40+
wait_backup_agent $cluster-shard7-0
41+
wait_backup_agent $cluster-shard7-1
42+
wait_backup_agent $cluster-shard7-2
43+
backup_name_aws="backup-aws-s3"
44+
backup_name_minio="backup-minio"
45+
backup_name_gcp="backup-gcp-cs"
46+
47+
desc 'run backups'
48+
run_backup minio
49+
wait_backup "$backup_name_minio"
50+
51+
if [ -z "$SKIP_BACKUPS_TO_AWS_GCP_AZURE" ]; then
52+
run_backup aws-s3
53+
run_backup gcp-cs
54+
55+
wait_backup "$backup_name_aws"
56+
wait_backup "$backup_name_gcp"
57+
fi
58+
59+
if [ -z "$SKIP_BACKUPS_TO_AWS_GCP_AZURE" ]; then
60+
desc 'check backup and restore -- aws-s3'
61+
run_restore $backup_name_aws 3 1 "-mongos"
62+
wait_restore $backup_name_aws $cluster "ready"
63+
64+
desc 'check backup and restore -- gcp-cs'
65+
run_restore $backup_name_gcp 3 1 "-mongos"
66+
wait_restore $backup_name_gcp $cluster "ready"
67+
fi
68+
69+
desc 'check backup and restore -- minio'
70+
run_restore $backup_name_minio 3 1 "-mongos"
71+
72+
sleep 120
73+
wait_restore $backup_name_minio $cluster "ready"
74+
75+
destroy $namespace

e2e-tests/init-deploy/compare/backup-44.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,6 @@
388388
},
389389
"actions": [
390390
"appendOplogNote",
391-
"applyOps",
392391
"checkFreeMonitoringStatus",
393392
"connPoolStats",
394393
"forceUUID",

e2e-tests/init-deploy/compare/clusterAdmin-44.json

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -142,23 +142,6 @@
142142
"update"
143143
]
144144
},
145-
{
146-
"resource": {
147-
"db": "local",
148-
"collection": "system.healthlog"
149-
},
150-
"actions": [
151-
"changeStream",
152-
"collStats",
153-
"dbHash",
154-
"dbStats",
155-
"find",
156-
"killCursors",
157-
"listCollections",
158-
"listIndexes",
159-
"planCacheRead"
160-
]
161-
},
162145
{
163146
"resource": {
164147
"db": "local",
@@ -245,14 +228,6 @@
245228
"unlock",
246229
"useUUID"
247230
]
248-
},
249-
{
250-
"resource": {
251-
"anyResource": true
252-
},
253-
"actions": [
254-
"dbCheck"
255-
]
256231
}
257232
]
258233
}

0 commit comments

Comments
 (0)