Skip to content

Commit 613cb7d

Browse files
tplavcicegeguneshors
authored
K8SPS-154 - Add gr-finalizer test (#589)
* K8SPS-154 - Add gr-finalizer test * ensure pod-0 is primary before deletion * fix finalizer prefixes * fix gr-finalizer test --------- Co-authored-by: Ege Güneş <[email protected]> Co-authored-by: Viacheslav Sarzhan <[email protected]>
1 parent 2c22daa commit 613cb7d

20 files changed

+394
-4
lines changed

.github/linters/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module linters
22

3-
go 1.22
3+
go 1.22.0

e2e-tests/run-distro.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ config-router
44
demand-backup
55
gr-demand-backup
66
gr-demand-backup-haproxy
7+
gr-finalizer
78
gr-haproxy
89
gr-init-deploy
910
gr-one-pod

e2e-tests/run-pr.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ config-router
55
demand-backup
66
gr-demand-backup
77
gr-demand-backup-haproxy
8+
gr-finalizer
89
gr-haproxy
910
gr-ignore-annotations
1011
gr-init-deploy

e2e-tests/run-release.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ config-router
55
demand-backup
66
gr-demand-backup
77
gr-demand-backup-haproxy
8+
gr-finalizer
89
gr-haproxy
910
gr-ignore-annotations
1011
gr-init-deploy
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 120
4+
---
5+
apiVersion: apps/v1
6+
kind: Deployment
7+
metadata:
8+
name: cert-manager
9+
namespace: cert-manager
10+
status:
11+
availableReplicas: 1
12+
observedGeneration: 1
13+
readyReplicas: 1
14+
replicas: 1
15+
updatedReplicas: 1
16+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 120
4+
commands:
5+
- script: |-
6+
set -o xtrace
7+
8+
source ../../functions
9+
init_temp_dir # do this only in the first TestStep
10+
11+
deploy_cert_manager
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 120
4+
---
5+
apiVersion: apiextensions.k8s.io/v1
6+
kind: CustomResourceDefinition
7+
metadata:
8+
name: perconaservermysqls.ps.percona.com
9+
spec:
10+
group: ps.percona.com
11+
names:
12+
kind: PerconaServerMySQL
13+
listKind: PerconaServerMySQLList
14+
plural: perconaservermysqls
15+
shortNames:
16+
- ps
17+
singular: perconaservermysql
18+
scope: Namespaced
19+
---
20+
apiVersion: apps/v1
21+
kind: Deployment
22+
metadata:
23+
name: percona-server-mysql-operator
24+
status:
25+
availableReplicas: 1
26+
observedGeneration: 1
27+
readyReplicas: 1
28+
replicas: 1
29+
updatedReplicas: 1
30+
---
31+
apiVersion: v1
32+
kind: Pod
33+
metadata:
34+
name: mysql-client
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: 120
4+
commands:
5+
- script: |-
6+
set -o errexit
7+
set -o xtrace
8+
9+
source ../../functions
10+
11+
deploy_operator
12+
deploy_non_tls_cluster_secrets
13+
deploy_client
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 420
4+
---
5+
apiVersion: cert-manager.io/v1
6+
kind: Certificate
7+
metadata:
8+
generation: 1
9+
name: gr-finalizer-ca-cert
10+
spec:
11+
commonName: gr-finalizer-ca
12+
duration: 8760h0m0s
13+
isCA: true
14+
issuerRef:
15+
kind: Issuer
16+
name: gr-finalizer-pso-ca-issuer
17+
renewBefore: 730h0m0s
18+
secretName: gr-finalizer-ca-cert
19+
status:
20+
conditions:
21+
- message: Certificate is up to date and has not expired
22+
observedGeneration: 1
23+
reason: Ready
24+
status: 'True'
25+
type: Ready
26+
revision: 1
27+
---
28+
apiVersion: cert-manager.io/v1
29+
kind: Certificate
30+
metadata:
31+
generation: 1
32+
name: gr-finalizer-ssl
33+
spec:
34+
issuerRef:
35+
kind: Issuer
36+
name: gr-finalizer-pso-issuer
37+
secretName: test-ssl
38+
status:
39+
conditions:
40+
- message: Certificate is up to date and has not expired
41+
observedGeneration: 1
42+
reason: Ready
43+
status: 'True'
44+
type: Ready
45+
revision: 1
46+
---
47+
apiVersion: apps/v1
48+
kind: StatefulSet
49+
metadata:
50+
generation: 1
51+
name: gr-finalizer-mysql
52+
status:
53+
observedGeneration: 1
54+
replicas: 3
55+
readyReplicas: 3
56+
---
57+
kind: StatefulSet
58+
apiVersion: apps/v1
59+
metadata:
60+
name: gr-finalizer-haproxy
61+
status:
62+
observedGeneration: 1
63+
replicas: 3
64+
readyReplicas: 3
65+
updatedReplicas: 3
66+
---
67+
apiVersion: ps.percona.com/v1alpha1
68+
kind: PerconaServerMySQL
69+
metadata:
70+
finalizers:
71+
- percona.com/delete-mysql-pods-in-order
72+
- percona.com/delete-ssl
73+
generation: 1
74+
name: gr-finalizer
75+
status:
76+
haproxy:
77+
ready: 3
78+
size: 3
79+
state: ready
80+
mysql:
81+
ready: 3
82+
size: 3
83+
state: ready
84+
state: ready
85+
---
86+
apiVersion: v1
87+
kind: Secret
88+
metadata:
89+
annotations:
90+
cert-manager.io/certificate-name: gr-finalizer-ca-cert
91+
cert-manager.io/common-name: gr-finalizer-ca
92+
cert-manager.io/issuer-kind: Issuer
93+
cert-manager.io/issuer-name: gr-finalizer-pso-ca-issuer
94+
labels:
95+
controller.cert-manager.io/fao: "true"
96+
name: gr-finalizer-ca-cert
97+
type: kubernetes.io/tls
98+
---
99+
apiVersion: v1
100+
kind: Secret
101+
metadata:
102+
annotations:
103+
cert-manager.io/certificate-name: gr-finalizer-ssl
104+
cert-manager.io/issuer-kind: Issuer
105+
cert-manager.io/issuer-name: gr-finalizer-pso-issuer
106+
labels:
107+
controller.cert-manager.io/fao: "true"
108+
name: test-ssl
109+
type: kubernetes.io/tls
110+
---
111+
apiVersion: cert-manager.io/v1
112+
kind: Issuer
113+
metadata:
114+
generation: 1
115+
name: gr-finalizer-pso-ca-issuer
116+
spec:
117+
selfSigned: {}
118+
---
119+
apiVersion: cert-manager.io/v1
120+
kind: Issuer
121+
metadata:
122+
generation: 1
123+
name: gr-finalizer-pso-issuer
124+
spec:
125+
ca:
126+
secretName: gr-finalizer-ca-cert
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
get_cr \
12+
| yq eval '.spec.mysql.clusterType="group-replication"' - \
13+
| yq eval '.spec.proxy.router.enabled=false' - \
14+
| yq eval '.spec.proxy.haproxy.enabled=true' - \
15+
| yq eval '.metadata.finalizers |= ["percona.com/delete-mysql-pods-in-order", "percona.com/delete-ssl"]' - \
16+
| kubectl -n "${NAMESPACE}" apply -f -

0 commit comments

Comments
 (0)