Skip to content

Commit e7800e3

Browse files
committed
review feedback
1 parent c546b89 commit e7800e3

20 files changed

+1881
-263
lines changed

pipeline.yaml

Lines changed: 363 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,363 @@
1+
kind: Pipeline
2+
apiVersion: tekton.dev/v1
3+
metadata:
4+
name: derekff-karpenter-testing
5+
namespace: scalability
6+
spec:
7+
params:
8+
- name: cluster-name
9+
type: string
10+
- default: "5000"
11+
name: desired-nodes
12+
type: string
13+
- default: "30"
14+
name: pods-per-node
15+
type: string
16+
- default: "100"
17+
name: nodes-per-namespace
18+
type: string
19+
- default: "50"
20+
name: cl2-load-test-throughput
21+
type: string
22+
- default: kit-eks-scalability/kit-eks-5k/etcd/$(date +%s)
23+
name: results-bucket
24+
type: string
25+
- default: ws-9364cdaa-8de5-4fbd-8a40-b3192865ceaa
26+
name: amp-workspace-id
27+
type: string
28+
- default: https://raw.githubusercontent.com/awslabs/kubernetes-iteration-toolkit/main/tests/assets/amazon-eks-vpc.json
29+
name: vpc-cfn-url
30+
type: string
31+
- default: https://raw.githubusercontent.com/awslabs/kubernetes-iteration-toolkit/main/tests/assets/eks_node_group_launch_template.json
32+
name: ng-cfn-url
33+
type: string
34+
- name: kubernetes-version
35+
type: string
36+
- default: https://raw.githubusercontent.com/awslabs/kubernetes-iteration-toolkit/main/tests/assets/eks_service_role.json
37+
name: service-role-cfn-url
38+
type: string
39+
- default: https://raw.githubusercontent.com/awslabs/kubernetes-iteration-toolkit/main/tests/assets/eks_node_role.json
40+
name: node-role-cfn-url
41+
type: string
42+
- name: manifest-id
43+
type: string
44+
- default: 1.8.0
45+
name: karpenter-version
46+
type: string
47+
- default: karpenter
48+
name: karpenter-namespace
49+
type: string
50+
- default: https://raw.githubusercontent.com/awslabs/kubernetes-iteration-toolkit/main/tests/assets/karpenter/node-role-policy-document.json
51+
name: karpenter-node-role-policy-url
52+
type: string
53+
- default: https://raw.githubusercontent.com/awslabs/kubernetes-iteration-toolkit/main/tests/assets/karpenter/controller-role-policy-document.json
54+
name: karpenter-controller-role-policy-url
55+
type: string
56+
- default: https://raw.githubusercontent.com/awslabs/kubernetes-iteration-toolkit/main/tests/assets/karpenter/controller-role-trust-policy-document.json
57+
name: karpenter-controller-role-trust-policy-url
58+
type: string
59+
- default: https://raw.githubusercontent.com/DerekFrank/kubernetes-iteration-toolkit/refs/heads/main/tests/assets/karpenter/nodeclass.yaml
60+
name: karpenter-ec2nodeclass-url
61+
type: string
62+
- default: https://raw.githubusercontent.com/DerekFrank/kubernetes-iteration-toolkit/refs/heads/main/tests/assets/karpenter/nodepool.yaml
63+
name: karpenter-nodepool-url
64+
type: string
65+
tasks:
66+
- name: awscli-vpc-create
67+
params:
68+
- name: stack-name
69+
value: $(params.cluster-name)
70+
- name: vpc-cfn-url
71+
value: "$(params.vpc-cfn-url)"
72+
taskRef:
73+
kind: Task
74+
name: awscli-vpc-create
75+
- name: create-cluster-service-role
76+
params:
77+
- name: stack-name
78+
value: $(params.cluster-name)-service-role
79+
- name: role-cfn-url
80+
value: $(params.service-role-cfn-url)
81+
- name: role-name
82+
value: "$(params.cluster-name)-service-role"
83+
taskRef:
84+
kind: Task
85+
name: awscli-role-create
86+
- name: create-cluster-node-role
87+
params:
88+
- name: stack-name
89+
value: $(params.cluster-name)-node-role
90+
- name: role-cfn-url
91+
value: $(params.node-role-cfn-url)
92+
- name: role-name
93+
value: "$(params.cluster-name)-node-role"
94+
taskRef:
95+
kind: Task
96+
name: awscli-role-create
97+
- name: create-eks-cluster
98+
params:
99+
- name: cluster-name
100+
value: $(params.cluster-name)
101+
- name: service-role-name
102+
value: $(params.cluster-name)-service-role
103+
- name: endpoint
104+
value: $(params.endpoint)
105+
- name: vpc-stack-name
106+
value: $(params.cluster-name)
107+
- name: manifest-id
108+
value: $(params.manifest-id)
109+
- name: eksadm-s3-path
110+
value: $(params.eksadm-s3-path)
111+
- name: kubernetes-version
112+
value: $(params.kubernetes-version)
113+
retries: 3
114+
runAfter:
115+
- create-cluster-node-role
116+
- create-cluster-service-role
117+
- awscli-vpc-create
118+
taskRef:
119+
kind: Task
120+
name: awscli-eks-cluster-create-with-vpc-stack
121+
workspaces:
122+
- name: config
123+
workspace: config
124+
- name: create-karpenter-controller-role
125+
params:
126+
- name: cluster-name
127+
value: $(params.cluster-name)
128+
- name: aws-account-id
129+
value: $(params.aws-account-id)
130+
- name: endpoint
131+
value: $(params.endpoint)
132+
- name: karpenter-controller-role-policy-url
133+
value: $(params.karpenter-controller-role-policy-url)
134+
- name: karpenter-controller-role-trust-policy-url
135+
value: $(params.karpenter-controller-role-trust-policy-url)
136+
runAfter:
137+
- create-eks-cluster
138+
taskRef:
139+
kind: Task
140+
name: awscli-controller-role
141+
- name: create-karpenter-mng
142+
params:
143+
- name: cluster-name
144+
value: $(params.cluster-name)
145+
- name: aws-account-id
146+
value: $(params.aws-account-id)
147+
- name: endpoint
148+
value: $(params.endpoint)
149+
runAfter:
150+
- create-eks-cluster
151+
taskRef:
152+
kind: Task
153+
name: awscli-mng
154+
- name: create-karpenter-cfn
155+
params:
156+
- name: cluster-name
157+
value: $(params.cluster-name)
158+
- name: karpenter-version
159+
value: $(params.karpenter-version)
160+
- name: endpoint
161+
value: $(params.endpoint)
162+
- name: account-id
163+
value: $(params.aws-account-id)
164+
runAfter:
165+
- create-eks-cluster
166+
taskRef:
167+
kind: Task
168+
name: awscli-karpenter-cfn-stack
169+
- name: helm-install-karpenter
170+
params:
171+
- name: cluster-name
172+
value: $(params.cluster-name)
173+
- name: karpenter-version
174+
value: $(params.karpenter-version)
175+
- name: aws-account-id
176+
value: $(params.aws-account-id)
177+
- name: karpenter-ecr-repo
178+
value: $(params.karpenter-ecr-repo)
179+
- name: endpoint
180+
value: $(params.endpoint)
181+
runAfter:
182+
- create-karpenter-cfn
183+
- create-karpenter-mng
184+
- create-karpenter-controller-role
185+
- awscli-instance-profile
186+
taskRef:
187+
kind: Task
188+
name: helm-karpenter-install
189+
- name: get-karp-logs
190+
params:
191+
- name: cluster-name
192+
value: $(params.cluster-name)
193+
- name: endpoint
194+
value: $(params.endpoint)
195+
runAfter:
196+
- helm-install-karpenter
197+
taskRef:
198+
kind: Task
199+
name: kubectl-get-karpenter-logs
200+
- name: awscli-instance-profile
201+
params:
202+
- name: cluster-name
203+
value: $(params.cluster-name)
204+
runAfter:
205+
- create-karpenter-cfn
206+
- create-karpenter-mng
207+
taskRef:
208+
kind: Task
209+
name: awscli-instanceprofiles
210+
- name: create-nodeclass
211+
params:
212+
- name: cluster-name
213+
value: $(params.cluster-name)
214+
- name: endpoint
215+
value: $(params.endpoint)
216+
- name: karpenter-nodeclass-url
217+
value: $(params.karpenter-ec2nodeclass-url)
218+
runAfter:
219+
- helm-install-karpenter
220+
taskRef:
221+
kind: Task
222+
name: create-ec2nodeclass
223+
- name: create-nodepools
224+
params:
225+
- name: cluster-name
226+
value: $(params.cluster-name)
227+
- name: endpoint
228+
value: $(params.endpoint)
229+
- name: karpenter-nodepool-url
230+
value: $(params.karpenter-nodepool-url)
231+
runAfter:
232+
- helm-install-karpenter
233+
taskRef:
234+
kind: Task
235+
name: create-nodepool
236+
- name: scale-nodepools
237+
params:
238+
- name: cluster-name
239+
value: $(params.cluster-name)
240+
- name: endpoint
241+
value: $(params.endpoint)
242+
- name: replicas
243+
value: 100
244+
- name: nodepool
245+
value: $(params.cluster-name)
246+
runAfter:
247+
- create-nodepools
248+
taskRef:
249+
kind: Task
250+
name: scale-nodepool
251+
- name: wait-for-scale
252+
params:
253+
- name: cluster-name
254+
value: $(params.cluster-name)
255+
- name: endpoint
256+
value: $(params.endpoint)
257+
- name: replicas
258+
value: 100
259+
- name: nodepool
260+
value: $(params.cluster-name)
261+
runAfter:
262+
- scale-nodepools
263+
taskRef:
264+
kind: Task
265+
name: nodepool-replicas-wait
266+
- name: drift
267+
params:
268+
- name: nodepool
269+
value: $(params.cluster-name)
270+
- name: cluster-name
271+
value: $(params.cluster-name)
272+
- name: endpoint
273+
value: $(params.endpoint)
274+
runAfter:
275+
- wait-for-scale
276+
taskRef:
277+
kind: Task
278+
name: drift-nodepool
279+
- name: wait-for-drift
280+
params:
281+
- name: nodepool
282+
value: $(params.cluster-name)
283+
- name: cluster-name
284+
value: $(params.cluster-name)
285+
- name: endpoint
286+
value: $(params.endpoint)
287+
- name: value
288+
value: "True"
289+
- name: condition
290+
value: Drifted
291+
- name: presence
292+
value: false
293+
runAfter:
294+
- drift
295+
taskRef:
296+
kind: Task
297+
name: nodepool-condition-wait
298+
- name: scale-down
299+
params:
300+
- name: cluster-name
301+
value: $(params.cluster-name)
302+
- name: nodepool
303+
value: $(params.cluster-name)
304+
- name: endpoint
305+
value: $(params.endpoint)
306+
- name: replicas
307+
value: 0
308+
runAfter:
309+
- wait-for-drift
310+
taskRef:
311+
kind: Task
312+
name: scale-nodepool
313+
- name: wait-for-scale-down
314+
params:
315+
- name: cluster-name
316+
value: $(params.cluster-name)
317+
- name: endpoint
318+
value: $(params.endpoint)
319+
- name: replicas
320+
value: 0
321+
- name: nodepool
322+
value: $(params.cluster-name)
323+
runAfter:
324+
- scale-down
325+
taskRef:
326+
kind: Task
327+
name: nodepool-replicas-wait
328+
- name: uninstall-karpenter
329+
params:
330+
- name: cluster-name
331+
value: $(params.cluster-name)
332+
- name: endpoint
333+
value: $(params.endpoint)
334+
runAfter:
335+
- wait-for-scale-down
336+
taskRef:
337+
kind: Task
338+
name: helm-karpenter-uninstall
339+
finally:
340+
- name: teardown
341+
retries: 10 # To deal with throttling during deletion
342+
params:
343+
- name: cluster-name
344+
value: $(params.cluster-name)
345+
- name: endpoint
346+
value: $(params.endpoint)
347+
- name: slack-hook
348+
value: $(params.slack-hook)
349+
- name: slack-message
350+
value: "$(params.slack-message) job completed"
351+
- name: service-role-stack-name
352+
value: $(params.cluster-name)-service-role
353+
- name: node-role-stack-name
354+
value: $(params.cluster-name)-node-role
355+
- name: launch-template-stack-name
356+
value: $(params.cluster-name)-launch-template
357+
taskRef:
358+
kind: Task
359+
name: awscli-eks-karpenter-cluster-teardown
360+
workspaces:
361+
- name: source
362+
- name: results
363+
- name: config

0 commit comments

Comments
 (0)