Skip to content

Commit 41c3154

Browse files
committed
Add test plan and results for zero downtime scaling (nginx#1174)
Problem: We don't know if scaling the number of NGF replicas up and down without downtime is possible. Solution: - Document a test plan to test for zero-downtime upgrades of NGF - Add test results Testing: Ran through test plan and recorded results.
1 parent d40f67e commit 41c3154

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+44747
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
apiVersion: gateway.networking.k8s.io/v1beta1
2+
kind: HTTPRoute
3+
metadata:
4+
name: coffee
5+
spec:
6+
parentRefs:
7+
- name: gateway
8+
sectionName: http
9+
hostnames:
10+
- "cafe.example.com"
11+
rules:
12+
- matches:
13+
- path:
14+
type: PathPrefix
15+
value: /coffee
16+
backendRefs:
17+
- name: coffee
18+
port: 80
19+
---
20+
apiVersion: gateway.networking.k8s.io/v1beta1
21+
kind: HTTPRoute
22+
metadata:
23+
name: tea
24+
spec:
25+
parentRefs:
26+
- name: gateway
27+
sectionName: https
28+
hostnames:
29+
- "cafe.example.com"
30+
rules:
31+
- matches:
32+
- path:
33+
type: PathPrefix
34+
value: /tea
35+
backendRefs:
36+
- name: tea
37+
port: 80
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: Secret
3+
metadata:
4+
name: cafe-secret
5+
type: kubernetes.io/tls
6+
data:
7+
tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNzakNDQVpvQ0NRQzdCdVdXdWRtRkNEQU5CZ2txaGtpRzl3MEJBUXNGQURBYk1Sa3dGd1lEVlFRRERCQmoKWVdabExtVjRZVzF3YkdVdVkyOXRNQjRYRFRJeU1EY3hOREl4TlRJek9Wb1hEVEl6TURjeE5ESXhOVEl6T1ZvdwpHekVaTUJjR0ExVUVBd3dRWTJGbVpTNWxlR0Z0Y0d4bExtTnZiVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFECmdnRVBBRENDQVFvQ2dnRUJBTHFZMnRHNFc5aStFYzJhdnV4Q2prb2tnUUx1ek10U1Rnc1RNaEhuK3ZRUmxIam8KVzFLRnMvQVdlS25UUStyTWVKVWNseis4M3QwRGtyRThwUisxR2NKSE50WlNMb0NEYUlRN0Nhck5nY1daS0o4Qgo1WDNnVS9YeVJHZjI2c1REd2xzU3NkSEQ1U2U3K2Vab3NPcTdHTVF3K25HR2NVZ0VtL1Q1UEMvY05PWE0zZWxGClRPL051MStoMzROVG9BbDNQdTF2QlpMcDNQVERtQ0thaEROV0NWbUJQUWpNNFI4VERsbFhhMHQ5Z1o1MTRSRzUKWHlZWTNtdzZpUzIrR1dYVXllMjFuWVV4UEhZbDV4RHY0c0FXaGRXbElweHlZQlNCRURjczN6QlI2bFF1OWkxZAp0R1k4dGJ3blVmcUVUR3NZdWxzc05qcU95V1VEcFdJelhibHhJZVVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUXNGCkFBT0NBUUVBcjkrZWJ0U1dzSnhLTGtLZlRkek1ISFhOd2Y5ZXFVbHNtTXZmMGdBdWVKTUpUR215dG1iWjlpbXQKL2RnWlpYVE9hTElHUG9oZ3BpS0l5eVVRZVdGQ2F0NHRxWkNPVWRhbUloOGk0Q1h6QVJYVHNvcUNOenNNLzZMRQphM25XbFZyS2lmZHYrWkxyRi8vblc0VVNvOEoxaCtQeDljY0tpRDZZU0RVUERDRGh1RUtFWXcvbHpoUDJVOXNmCnl6cEJKVGQ4enFyM3paTjNGWWlITmgzYlRhQS82di9jU2lyamNTK1EwQXg4RWpzQzYxRjRVMTc4QzdWNWRCKzQKcmtPTy9QNlA0UFlWNTRZZHMvRjE2WkZJTHFBNENCYnExRExuYWRxamxyN3NPbzl2ZzNnWFNMYXBVVkdtZ2todAp6VlZPWG1mU0Z4OS90MDBHUi95bUdPbERJbWlXMGc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
8+
tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQzZtTnJSdUZ2WXZoSE4KbXI3c1FvNUtKSUVDN3N6TFVrNExFeklSNS9yMEVaUjQ2RnRTaGJQd0ZuaXAwMFBxekhpVkhKYy92TjdkQTVLeApQS1VmdFJuQ1J6YldVaTZBZzJpRU93bXF6WUhGbVNpZkFlVjk0RlAxOGtSbjl1ckV3OEpiRXJIUncrVW51L25tCmFMRHF1eGpFTVBweGhuRklCSnYwK1R3djNEVGx6TjNwUlV6dnpidGZvZCtEVTZBSmR6N3Rid1dTNmR6MHc1Z2kKbW9RelZnbFpnVDBJek9FZkV3NVpWMnRMZllHZWRlRVJ1VjhtR041c09va3R2aGxsMU1udHRaMkZNVHgySmVjUQo3K0xBRm9YVnBTS2NjbUFVZ1JBM0xOOHdVZXBVTHZZdFhiUm1QTFc4SjFINmhFeHJHTHBiTERZNmpzbGxBNlZpCk0xMjVjU0hsQWdNQkFBRUNnZ0VBQnpaRE50bmVTdWxGdk9HZlFYaHRFWGFKdWZoSzJBenRVVVpEcUNlRUxvekQKWlV6dHdxbkNRNlJLczUyandWNTN4cU9kUU94bTNMbjNvSHdNa2NZcEliWW82MjJ2dUczYnkwaVEzaFlsVHVMVgpqQmZCcS9UUXFlL2NMdngvSkczQWhFNmJxdFRjZFlXeGFmTmY2eUtpR1dzZk11WVVXTWs4MGVJVUxuRmZaZ1pOCklYNTlSOHlqdE9CVm9Sa3hjYTVoMW1ZTDFsSlJNM3ZqVHNHTHFybmpOTjNBdWZ3ZGRpK1VDbGZVL2l0K1EvZkUKV216aFFoTlRpNVFkRWJLVStOTnYvNnYvb2JvandNb25HVVBCdEFTUE05cmxFemIralQ1WHdWQjgvLzRGY3VoSwoyVzNpcjhtNHVlQ1JHSVlrbGxlLzhuQmZ0eVhiVkNocVRyZFBlaGlPM1FLQmdRRGlrR3JTOTc3cjg3Y1JPOCtQClpoeXltNXo4NVIzTHVVbFNTazJiOTI1QlhvakpZL2RRZDVTdFVsSWE4OUZKZnNWc1JRcEhHaTFCYzBMaTY1YjIKazR0cE5xcVFoUmZ1UVh0UG9GYXRuQzlPRnJVTXJXbDVJN0ZFejZnNkNQMVBXMEg5d2hPemFKZUdpZVpNYjlYTQoybDdSSFZOcC9jTDlYbmhNMnN0Q1lua2Iwd0tCZ1FEUzF4K0crakEyUVNtRVFWNXA1RnRONGcyamsyZEFjMEhNClRIQ2tTazFDRjhkR0Z2UWtsWm5ZbUt0dXFYeXNtekJGcnZKdmt2eUhqbUNYYTducXlpajBEdDZtODViN3BGcVAKQWxtajdtbXI3Z1pUeG1ZMXBhRWFLMXY4SDNINGtRNVl3MWdrTWRybVJHcVAvaTBGaDVpaGtSZS9DOUtGTFVkSQpDcnJjTzhkUVp3S0JnSHA1MzRXVWNCMVZibzFlYStIMUxXWlFRUmxsTWlwRFM2TzBqeWZWSmtFb1BZSEJESnp2ClIrdzZLREJ4eFoyWmJsZ05LblV0YlhHSVFZd3lGelhNcFB5SGxNVHpiZkJhYmJLcDFyR2JVT2RCMXpXM09PRkgKcmppb21TUm1YNmxhaDk0SjRHU0lFZ0drNGw1SHhxZ3JGRDZ2UDd4NGRjUktJWFpLZ0w2dVJSSUpBb0dCQU1CVApaL2p5WStRNTBLdEtEZHUrYU9ORW4zaGxUN3hrNXRKN3NBek5rbWdGMU10RXlQUk9Xd1pQVGFJbWpRbk9qbHdpCldCZ2JGcXg0M2ZlQ1Z4ZXJ6V3ZEM0txaWJVbWpCTkNMTGtYeGh3ZEVteFQwVit2NzZGYzgwaTNNYVdSNnZZR08KditwVVovL0F6UXdJcWZ6dlVmV2ZxdStrMHlhVXhQOGNlcFBIRyt0bEFvR0FmQUtVVWhqeFU0Ym5vVzVwVUhKegpwWWZXZXZ5TW54NWZyT2VsSmRmNzlvNGMvMHhVSjh1eFBFWDFkRmNrZW96dHNpaVFTNkN6MENRY09XVWxtSkRwCnVrdERvVzM3VmNSQU1BVjY3NlgxQVZlM0UwNm5aL2g2Tkd4Z28rT042Q3pwL0lkMkJPUm9IMFAxa2RjY1NLT3kKMUtFZlNnb1B0c1N1eEpBZXdUZmxDMXc9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: coffee
5+
spec:
6+
replicas: 10
7+
selector:
8+
matchLabels:
9+
app: coffee
10+
template:
11+
metadata:
12+
labels:
13+
app: coffee
14+
spec:
15+
containers:
16+
- name: coffee
17+
image: nginxdemos/nginx-hello:plain-text
18+
ports:
19+
- containerPort: 8080
20+
---
21+
apiVersion: v1
22+
kind: Service
23+
metadata:
24+
name: coffee
25+
spec:
26+
ports:
27+
- port: 80
28+
targetPort: 8080
29+
protocol: TCP
30+
name: http
31+
selector:
32+
app: coffee
33+
---
34+
apiVersion: apps/v1
35+
kind: Deployment
36+
metadata:
37+
name: tea
38+
spec:
39+
replicas: 10
40+
selector:
41+
matchLabels:
42+
app: tea
43+
template:
44+
metadata:
45+
labels:
46+
app: tea
47+
spec:
48+
containers:
49+
- name: tea
50+
image: nginxdemos/nginx-hello:plain-text
51+
ports:
52+
- containerPort: 8080
53+
---
54+
apiVersion: v1
55+
kind: Service
56+
metadata:
57+
name: tea
58+
spec:
59+
ports:
60+
- port: 80
61+
targetPort: 8080
62+
protocol: TCP
63+
name: http
64+
selector:
65+
app: tea
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
apiVersion: gateway.networking.k8s.io/v1beta1
2+
kind: Gateway
3+
metadata:
4+
name: gateway
5+
spec:
6+
gatewayClassName: nginx
7+
listeners:
8+
- name: http
9+
port: 80
10+
protocol: HTTP
11+
hostname: "cafe.example.com"
12+
- name: https
13+
port: 443
14+
protocol: HTTPS
15+
hostname: "*.example.com"
16+
tls:
17+
mode: Terminate
18+
certificateRefs:
19+
- kind: Secret
20+
name: cafe-secret
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
apiVersion: gateway.networking.k8s.io/v1beta1
2+
kind: Gateway
3+
metadata:
4+
name: gateway
5+
spec:
6+
gatewayClassName: nginx
7+
listeners:
8+
- name: http
9+
port: 80
10+
protocol: HTTP
11+
hostname: "cafe.example.com"
12+
- name: http-2
13+
port: 80
14+
protocol: HTTP
15+
hostname: "2.example.com"
16+
- name: http-3
17+
port: 80
18+
protocol: HTTP
19+
hostname: "3.example.com"
20+
- name: http-4
21+
port: 80
22+
protocol: HTTP
23+
hostname: "4.example.com"
24+
- name: http-5
25+
port: 80
26+
protocol: HTTP
27+
hostname: "5.example.com"
28+
- name: http-6
29+
port: 80
30+
protocol: HTTP
31+
hostname: "6.example.com"
32+
- name: http-7
33+
port: 80
34+
protocol: HTTP
35+
hostname: "7.example.com"
36+
- name: http-8
37+
port: 80
38+
protocol: HTTP
39+
hostname: "8.example.com"
40+
- name: http-9
41+
port: 80
42+
protocol: HTTP
43+
hostname: "9.example.com"
44+
- name: http-10
45+
port: 80
46+
protocol: HTTP
47+
hostname: "10.example.com"
48+
- name: https
49+
port: 443
50+
protocol: HTTPS
51+
hostname: "*.example.com"
52+
tls:
53+
mode: Terminate
54+
certificateRefs:
55+
- kind: Secret
56+
name: cafe-secret
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
apiVersion: gateway.networking.k8s.io/v1beta1
2+
kind: Gateway
3+
metadata:
4+
name: gateway
5+
spec:
6+
gatewayClassName: nginx
7+
listeners:
8+
- name: http
9+
port: 80
10+
protocol: HTTP
11+
hostname: "cafe.example.com"
12+
- name: http-2
13+
port: 80
14+
protocol: HTTP
15+
hostname: "2.example.com"
16+
- name: http-3
17+
port: 80
18+
protocol: HTTP
19+
hostname: "3.example.com"
20+
- name: http-4
21+
port: 80
22+
protocol: HTTP
23+
hostname: "4.example.com"
24+
- name: http-5
25+
port: 80
26+
protocol: HTTP
27+
hostname: "5.example.com"
28+
- name: http-6
29+
port: 80
30+
protocol: HTTP
31+
hostname: "6.example.com"
32+
- name: http-7
33+
port: 80
34+
protocol: HTTP
35+
hostname: "7.example.com"
36+
- name: http-8
37+
port: 80
38+
protocol: HTTP
39+
hostname: "8.example.com"
40+
- name: http-9
41+
port: 80
42+
protocol: HTTP
43+
hostname: "9.example.com"
44+
- name: http-10
45+
port: 80
46+
protocol: HTTP
47+
hostname: "10.example.com"
48+
- name: http-11
49+
port: 80
50+
protocol: HTTP
51+
hostname: "11.example.com"
52+
- name: https
53+
port: 443
54+
protocol: HTTPS
55+
hostname: "*.example.com"
56+
tls:
57+
mode: Terminate
58+
certificateRefs:
59+
- kind: Secret
60+
name: cafe-secret
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
apiVersion: gateway.networking.k8s.io/v1beta1
2+
kind: Gateway
3+
metadata:
4+
name: gateway
5+
spec:
6+
gatewayClassName: nginx
7+
listeners:
8+
- name: http
9+
port: 80
10+
protocol: HTTP
11+
hostname: "cafe.example.com"
12+
- name: http-2
13+
port: 80
14+
protocol: HTTP
15+
hostname: "2.example.com"
16+
- name: http-3
17+
port: 80
18+
protocol: HTTP
19+
hostname: "3.example.com"
20+
- name: http-4
21+
port: 80
22+
protocol: HTTP
23+
hostname: "4.example.com"
24+
- name: http-5
25+
port: 80
26+
protocol: HTTP
27+
hostname: "5.example.com"
28+
- name: http-6
29+
port: 80
30+
protocol: HTTP
31+
hostname: "6.example.com"
32+
- name: http-7
33+
port: 80
34+
protocol: HTTP
35+
hostname: "7.example.com"
36+
- name: http-8
37+
port: 80
38+
protocol: HTTP
39+
hostname: "8.example.com"
40+
- name: http-9
41+
port: 80
42+
protocol: HTTP
43+
hostname: "9.example.com"
44+
- name: http-10
45+
port: 80
46+
protocol: HTTP
47+
hostname: "10.example.com"
48+
- name: http-11
49+
port: 80
50+
protocol: HTTP
51+
hostname: "11.example.com"
52+
- name: http-12
53+
port: 80
54+
protocol: HTTP
55+
hostname: "12.example.com"
56+
- name: https
57+
port: 443
58+
protocol: HTTPS
59+
hostname: "*.example.com"
60+
tls:
61+
mode: Terminate
62+
certificateRefs:
63+
- kind: Secret
64+
name: cafe-secret
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
apiVersion: gateway.networking.k8s.io/v1beta1
2+
kind: Gateway
3+
metadata:
4+
name: gateway
5+
spec:
6+
gatewayClassName: nginx
7+
listeners:
8+
- name: http
9+
port: 80
10+
protocol: HTTP
11+
hostname: "cafe.example.com"
12+
- name: http-2
13+
port: 80
14+
protocol: HTTP
15+
hostname: "2.example.com"
16+
- name: http-3
17+
port: 80
18+
protocol: HTTP
19+
hostname: "3.example.com"
20+
- name: http-4
21+
port: 80
22+
protocol: HTTP
23+
hostname: "4.example.com"
24+
- name: http-5
25+
port: 80
26+
protocol: HTTP
27+
hostname: "5.example.com"
28+
- name: http-6
29+
port: 80
30+
protocol: HTTP
31+
hostname: "6.example.com"
32+
- name: http-7
33+
port: 80
34+
protocol: HTTP
35+
hostname: "7.example.com"
36+
- name: http-8
37+
port: 80
38+
protocol: HTTP
39+
hostname: "8.example.com"
40+
- name: http-9
41+
port: 80
42+
protocol: HTTP
43+
hostname: "9.example.com"
44+
- name: http-10
45+
port: 80
46+
protocol: HTTP
47+
hostname: "10.example.com"
48+
- name: http-11
49+
port: 80
50+
protocol: HTTP
51+
hostname: "11.example.com"
52+
- name: http-12
53+
port: 80
54+
protocol: HTTP
55+
hostname: "12.example.com"
56+
- name: http-13
57+
port: 80
58+
protocol: HTTP
59+
hostname: "13.example.com"
60+
- name: https
61+
port: 443
62+
protocol: HTTPS
63+
hostname: "*.example.com"
64+
tls:
65+
mode: Terminate
66+
certificateRefs:
67+
- kind: Secret
68+
name: cafe-secret

0 commit comments

Comments
 (0)