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