Skip to content

Commit ec0b17e

Browse files
committed
[v0.14] backport old certs gc from #591
Signed-off-by: Chanwit Kaewkasi <[email protected]>
1 parent ff59627 commit ec0b17e

File tree

4 files changed

+309
-25
lines changed

4 files changed

+309
-25
lines changed

.github/workflows/e2e.yaml

+41-2
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,11 @@ jobs:
9898
make dev-deploy MANAGER_IMG=test/tf-controller RUNNER_IMG=test/tf-runner TAG=$VERSION || true
9999
make dev-deploy MANAGER_IMG=test/tf-controller RUNNER_IMG=test/tf-runner TAG=$VERSION
100100
101+
# All of these old cert would be cleaned up by GC at the start of the test
102+
kubectl -n tf-system apply -f config/testdata/gc-old-certs/test.yaml
103+
101104
# Increase the concurrency of the controller to speed up tests
105+
# --cert-rotation-check-frequency=6m0s, then GC will run every 1 minute
102106
kubectl patch deployment \
103107
tf-controller \
104108
--namespace tf-system \
@@ -109,6 +113,7 @@ jobs:
109113
"--log-encoding=json",
110114
"--enable-leader-election",
111115
"--concurrent=10",
116+
"--cert-rotation-check-frequency=6m0s",
112117
]}]'
113118
114119
kubectl -n tf-system rollout status deploy/source-controller --timeout=1m
@@ -192,11 +197,17 @@ jobs:
192197
193198
- name: Set up chaos testing environment
194199
run: |
195-
# TODO we'll test a race condition with replica=3 later
196-
kubectl -n tf-system scale --replicas=1 deploy/tf-controller
200+
kubectl -n tf-system scale --replicas=0 deploy/tf-controller
201+
sleep 3
197202
198203
kubectl -n chaos-testing apply -f ./config/testdata/chaos
199204
kubectl -n chaos-testing apply -f ./config/testdata/source
205+
206+
# Set up namespace-scoped old certs for GC
207+
kubectl -n chaos-testing apply -f ./config/testdata/gc-old-certs/test.yaml
208+
209+
kubectl -n tf-system scale --replicas=1 deploy/tf-controller
210+
200211
sleep 10
201212
- name: Randomly delete runner pods
202213
run: |
@@ -212,6 +223,34 @@ jobs:
212223
kubectl -n chaos-testing wait terraform/helloworld-chaos03 --for=condition=ready --timeout=30m
213224
kubectl -n chaos-testing wait terraform/helloworld-chaos04 --for=condition=ready --timeout=30m
214225
kubectl -n chaos-testing wait terraform/helloworld-chaos05 --for=condition=ready --timeout=30m
226+
- name: Check that all old certs were GCed
227+
run: |
228+
echo "wait 120 seconds for GC to happen"
229+
sleep 120
230+
231+
(kubectl get secret terraform-runner.tls-0 -n chaos-testing >/dev/null 2>&1 && exit 1 || exit 0)
232+
(kubectl get secret terraform-runner.tls-1 -n chaos-testing >/dev/null 2>&1 && exit 1 || exit 0)
233+
(kubectl get secret terraform-runner.tls-2 -n chaos-testing >/dev/null 2>&1 && exit 1 || exit 0)
234+
(kubectl get secret terraform-runner.tls-3 -n chaos-testing >/dev/null 2>&1 && exit 1 || exit 0)
235+
(kubectl get secret terraform-runner.tls-4 -n chaos-testing >/dev/null 2>&1 && exit 1 || exit 0)
236+
(kubectl get secret terraform-runner.tls-5 -n chaos-testing >/dev/null 2>&1 && exit 1 || exit 0)
237+
(kubectl get secret terraform-runner.tls-6 -n chaos-testing >/dev/null 2>&1 && exit 1 || exit 0)
238+
(kubectl get secret terraform-runner.tls-7 -n chaos-testing >/dev/null 2>&1 && exit 1 || exit 0)
239+
(kubectl get secret terraform-runner.tls-8 -n chaos-testing >/dev/null 2>&1 && exit 1 || exit 0)
240+
(kubectl get secret terraform-runner.tls-9 -n chaos-testing >/dev/null 2>&1 && exit 1 || exit 0)
241+
242+
(kubectl get secret terraform-runner.tls-0 -n tf-system >/dev/null 2>&1 && exit 1 || exit 0)
243+
(kubectl get secret terraform-runner.tls-1 -n tf-system >/dev/null 2>&1 && exit 1 || exit 0)
244+
(kubectl get secret terraform-runner.tls-2 -n tf-system >/dev/null 2>&1 && exit 1 || exit 0)
245+
(kubectl get secret terraform-runner.tls-3 -n tf-system >/dev/null 2>&1 && exit 1 || exit 0)
246+
(kubectl get secret terraform-runner.tls-4 -n tf-system >/dev/null 2>&1 && exit 1 || exit 0)
247+
(kubectl get secret terraform-runner.tls-5 -n tf-system >/dev/null 2>&1 && exit 1 || exit 0)
248+
(kubectl get secret terraform-runner.tls-6 -n tf-system >/dev/null 2>&1 && exit 1 || exit 0)
249+
(kubectl get secret terraform-runner.tls-7 -n tf-system >/dev/null 2>&1 && exit 1 || exit 0)
250+
(kubectl get secret terraform-runner.tls-8 -n tf-system >/dev/null 2>&1 && exit 1 || exit 0)
251+
(kubectl get secret terraform-runner.tls-9 -n tf-system >/dev/null 2>&1 && exit 1 || exit 0)
252+
253+
echo "All tests are true, all of the old secrets were GCed."
215254
- name: Logs
216255
run: |
217256
kubectl -n tf-system logs deploy/source-controller
+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
---
2+
apiVersion: v1
3+
kind: Secret
4+
metadata:
5+
name: terraform-runner.tls-0
6+
labels:
7+
infra.contrib.fluxcd.io/terraform: "true"
8+
stringData:
9+
dummy: "true"
10+
---
11+
apiVersion: v1
12+
kind: Secret
13+
metadata:
14+
name: terraform-runner.tls-1
15+
labels:
16+
infra.contrib.fluxcd.io/terraform: "true"
17+
stringData:
18+
dummy: "true"
19+
---
20+
apiVersion: v1
21+
kind: Secret
22+
metadata:
23+
name: terraform-runner.tls-2
24+
labels:
25+
infra.contrib.fluxcd.io/terraform: "true"
26+
stringData:
27+
dummy: "true"
28+
---
29+
apiVersion: v1
30+
kind: Secret
31+
metadata:
32+
name: terraform-runner.tls-3
33+
labels:
34+
infra.contrib.fluxcd.io/terraform: "true"
35+
stringData:
36+
dummy: "true"
37+
---
38+
apiVersion: v1
39+
kind: Secret
40+
metadata:
41+
name: terraform-runner.tls-4
42+
labels:
43+
infra.contrib.fluxcd.io/terraform: "true"
44+
stringData:
45+
dummy: "true"
46+
---
47+
apiVersion: v1
48+
kind: Secret
49+
metadata:
50+
name: terraform-runner.tls-5
51+
labels:
52+
infra.contrib.fluxcd.io/terraform: "true"
53+
stringData:
54+
dummy: "true"
55+
---
56+
apiVersion: v1
57+
kind: Secret
58+
metadata:
59+
name: terraform-runner.tls-6
60+
labels:
61+
infra.contrib.fluxcd.io/terraform: "true"
62+
stringData:
63+
dummy: "true"
64+
---
65+
apiVersion: v1
66+
kind: Secret
67+
metadata:
68+
name: terraform-runner.tls-7
69+
labels:
70+
infra.contrib.fluxcd.io/terraform: "true"
71+
stringData:
72+
dummy: "true"
73+
---
74+
apiVersion: v1
75+
kind: Secret
76+
metadata:
77+
name: terraform-runner.tls-8
78+
labels:
79+
infra.contrib.fluxcd.io/terraform: "true"
80+
stringData:
81+
dummy: "true"
82+
---
83+
apiVersion: v1
84+
kind: Secret
85+
metadata:
86+
name: terraform-runner.tls-9
87+
labels:
88+
infra.contrib.fluxcd.io/terraform: "true"
89+
stringData:
90+
dummy: "true"

mtls/grpc.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@ import (
44
"crypto/tls"
55
"crypto/x509"
66
"fmt"
7-
"net"
8-
97
"github.com/weaveworks/tf-controller/runner"
108
"google.golang.org/grpc"
119
"google.golang.org/grpc/credentials"
1210
corev1 "k8s.io/api/core/v1"
11+
"net"
1312
controllerruntime "sigs.k8s.io/controller-runtime"
1413
)
1514

0 commit comments

Comments
 (0)