eks_cli 0.1.4 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 50585476099aa020424c90d5eb6ad32e5d19c29c
4
- data.tar.gz: b1ff683504ec2367c90052de3deb26a68f8af015
3
+ metadata.gz: 22350ee29cfbc535b744189a8c4ccafc08c6f636
4
+ data.tar.gz: e22b96f6721ecab906ba9220ae27e39a0d5e25c9
5
5
  SHA512:
6
- metadata.gz: a143b01e227eb884cd2bbf27f310773f35b69ce84407c92d6be3ba04d6b2513f133194eb5d29f98edc3f699a1e89ca558da1a0fad02c68a048e55115cdc5924d
7
- data.tar.gz: f7d0209784c21b0d19286fc112a7db914ddc4de2bc171db8169e4327e703f1149a5b5fcc8c967c036498166dce84c69b675bc7b12a5ca44cb08b27e3e847219c
6
+ metadata.gz: 47a77f799f44e5664cec74104d6ab217ba1780cf4a3b4f46159ccd1a6820c6ceaedb35b0107fa12f9dc178e47c9b5fd0bbd5e8617391e9b966f6e9f64b62e9fa
7
+ data.tar.gz: cf738bb420aed7e184451bc6ab143fc15bc323644cee5252d15b1364894c303cfdc46f9c9832b092369b6f96044b698335df10642c76e261390c4e788a62babb
data/Gemfile.lock CHANGED
@@ -1,9 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eks_cli (0.1.0)
4
+ eks_cli (0.1.6)
5
5
  activesupport
6
- aws-sdk
6
+ aws-sdk-cloudformation
7
+ aws-sdk-ec2
8
+ aws-sdk-eks
9
+ aws-sdk-iam
10
+ aws-sdk-route53
11
+ httparty
7
12
  kubeclient
8
13
  thor
9
14
 
@@ -18,605 +23,27 @@ GEM
18
23
  addressable (2.5.2)
19
24
  public_suffix (>= 2.0.2, < 4.0)
20
25
  aws-eventstream (1.0.1)
21
- aws-partitions (1.112.0)
22
- aws-sdk (3.0.1)
23
- aws-sdk-resources (~> 3)
24
- aws-sdk-acm (1.13.0)
25
- aws-sdk-core (~> 3, >= 3.26.0)
26
+ aws-partitions (1.115.0)
27
+ aws-sdk-cloudformation (1.13.0)
28
+ aws-sdk-core (~> 3, >= 3.39.0)
26
29
  aws-sigv4 (~> 1.0)
27
- aws-sdk-acmpca (1.6.0)
28
- aws-sdk-core (~> 3, >= 3.26.0)
29
- aws-sigv4 (~> 1.0)
30
- aws-sdk-alexaforbusiness (1.12.0)
31
- aws-sdk-core (~> 3, >= 3.26.0)
32
- aws-sigv4 (~> 1.0)
33
- aws-sdk-apigateway (1.22.0)
34
- aws-sdk-core (~> 3, >= 3.26.0)
35
- aws-sigv4 (~> 1.0)
36
- aws-sdk-applicationautoscaling (1.15.0)
37
- aws-sdk-core (~> 3, >= 3.26.0)
38
- aws-sigv4 (~> 1.0)
39
- aws-sdk-applicationdiscoveryservice (1.7.0)
40
- aws-sdk-core (~> 3, >= 3.26.0)
41
- aws-sigv4 (~> 1.0)
42
- aws-sdk-appstream (1.18.0)
43
- aws-sdk-core (~> 3, >= 3.26.0)
44
- aws-sigv4 (~> 1.0)
45
- aws-sdk-appsync (1.8.0)
46
- aws-sdk-core (~> 3, >= 3.26.0)
47
- aws-sigv4 (~> 1.0)
48
- aws-sdk-athena (1.6.0)
49
- aws-sdk-core (~> 3, >= 3.26.0)
50
- aws-sigv4 (~> 1.0)
51
- aws-sdk-autoscaling (1.11.0)
52
- aws-sdk-core (~> 3, >= 3.26.0)
53
- aws-sigv4 (~> 1.0)
54
- aws-sdk-autoscalingplans (1.7.0)
55
- aws-sdk-core (~> 3, >= 3.26.0)
56
- aws-sigv4 (~> 1.0)
57
- aws-sdk-batch (1.10.0)
58
- aws-sdk-core (~> 3, >= 3.26.0)
59
- aws-sigv4 (~> 1.0)
60
- aws-sdk-budgets (1.14.0)
61
- aws-sdk-core (~> 3, >= 3.26.0)
62
- aws-sigv4 (~> 1.0)
63
- aws-sdk-chime (1.1.0)
64
- aws-sdk-core (~> 3, >= 3.26.0)
65
- aws-sigv4 (~> 1.0)
66
- aws-sdk-cloud9 (1.6.0)
67
- aws-sdk-core (~> 3, >= 3.26.0)
68
- aws-sigv4 (~> 1.0)
69
- aws-sdk-clouddirectory (1.10.0)
70
- aws-sdk-core (~> 3, >= 3.26.0)
71
- aws-sigv4 (~> 1.0)
72
- aws-sdk-cloudformation (1.11.0)
73
- aws-sdk-core (~> 3, >= 3.26.0)
74
- aws-sigv4 (~> 1.0)
75
- aws-sdk-cloudfront (1.10.1)
76
- aws-sdk-core (~> 3, >= 3.26.0)
77
- aws-sigv4 (~> 1.0)
78
- aws-sdk-cloudhsm (1.8.0)
79
- aws-sdk-core (~> 3, >= 3.26.0)
80
- aws-sigv4 (~> 1.0)
81
- aws-sdk-cloudhsmv2 (1.8.0)
82
- aws-sdk-core (~> 3, >= 3.26.0)
83
- aws-sigv4 (~> 1.0)
84
- aws-sdk-cloudsearch (1.5.0)
85
- aws-sdk-core (~> 3, >= 3.26.0)
86
- aws-sigv4 (~> 1.0)
87
- aws-sdk-cloudsearchdomain (1.5.0)
88
- aws-sdk-core (~> 3, >= 3.26.0)
89
- aws-sigv4 (~> 1.0)
90
- aws-sdk-cloudtrail (1.6.0)
91
- aws-sdk-core (~> 3, >= 3.26.0)
92
- aws-sigv4 (~> 1.0)
93
- aws-sdk-cloudwatch (1.12.0)
94
- aws-sdk-core (~> 3, >= 3.26.0)
95
- aws-sigv4 (~> 1.0)
96
- aws-sdk-cloudwatchevents (1.11.0)
97
- aws-sdk-core (~> 3, >= 3.26.0)
98
- aws-sigv4 (~> 1.0)
99
- aws-sdk-cloudwatchlogs (1.10.0)
100
- aws-sdk-core (~> 3, >= 3.26.0)
101
- aws-sigv4 (~> 1.0)
102
- aws-sdk-codebuild (1.22.0)
103
- aws-sdk-core (~> 3, >= 3.26.0)
104
- aws-sigv4 (~> 1.0)
105
- aws-sdk-codecommit (1.10.0)
106
- aws-sdk-core (~> 3, >= 3.26.0)
107
- aws-sigv4 (~> 1.0)
108
- aws-sdk-codedeploy (1.10.0)
109
- aws-sdk-core (~> 3, >= 3.26.0)
110
- aws-sigv4 (~> 1.0)
111
- aws-sdk-codepipeline (1.10.0)
112
- aws-sdk-core (~> 3, >= 3.26.0)
113
- aws-sigv4 (~> 1.0)
114
- aws-sdk-codestar (1.7.0)
115
- aws-sdk-core (~> 3, >= 3.26.0)
116
- aws-sigv4 (~> 1.0)
117
- aws-sdk-cognitoidentity (1.5.0)
118
- aws-sdk-core (~> 3, >= 3.26.0)
119
- aws-sigv4 (~> 1.0)
120
- aws-sdk-cognitoidentityprovider (1.10.0)
121
- aws-sdk-core (~> 3, >= 3.26.0)
122
- aws-sigv4 (~> 1.0)
123
- aws-sdk-cognitosync (1.5.0)
124
- aws-sdk-core (~> 3, >= 3.26.0)
125
- aws-sigv4 (~> 1.0)
126
- aws-sdk-comprehend (1.8.0)
127
- aws-sdk-core (~> 3, >= 3.26.0)
128
- aws-sigv4 (~> 1.0)
129
- aws-sdk-configservice (1.19.0)
130
- aws-sdk-core (~> 3, >= 3.26.0)
131
- aws-sigv4 (~> 1.0)
132
- aws-sdk-connect (1.8.0)
133
- aws-sdk-core (~> 3, >= 3.26.0)
134
- aws-sigv4 (~> 1.0)
135
- aws-sdk-core (3.38.0)
30
+ aws-sdk-core (3.39.0)
136
31
  aws-eventstream (~> 1.0)
137
32
  aws-partitions (~> 1.0)
138
33
  aws-sigv4 (~> 1.0)
139
34
  jmespath (~> 1.0)
140
- aws-sdk-costandusagereportservice (1.5.0)
141
- aws-sdk-core (~> 3, >= 3.26.0)
142
- aws-sigv4 (~> 1.0)
143
- aws-sdk-costexplorer (1.12.0)
144
- aws-sdk-core (~> 3, >= 3.26.0)
145
- aws-sigv4 (~> 1.0)
146
- aws-sdk-databasemigrationservice (1.13.0)
147
- aws-sdk-core (~> 3, >= 3.26.0)
148
- aws-sigv4 (~> 1.0)
149
- aws-sdk-datapipeline (1.5.0)
150
- aws-sdk-core (~> 3, >= 3.26.0)
151
- aws-sigv4 (~> 1.0)
152
- aws-sdk-dax (1.7.0)
153
- aws-sdk-core (~> 3, >= 3.26.0)
154
- aws-sigv4 (~> 1.0)
155
- aws-sdk-devicefarm (1.12.0)
156
- aws-sdk-core (~> 3, >= 3.26.0)
157
- aws-sigv4 (~> 1.0)
158
- aws-sdk-directconnect (1.8.0)
159
- aws-sdk-core (~> 3, >= 3.26.0)
160
- aws-sigv4 (~> 1.0)
161
- aws-sdk-directoryservice (1.10.0)
162
- aws-sdk-core (~> 3, >= 3.26.0)
163
- aws-sigv4 (~> 1.0)
164
- aws-sdk-dlm (1.6.0)
165
- aws-sdk-core (~> 3, >= 3.26.0)
166
- aws-sigv4 (~> 1.0)
167
- aws-sdk-dynamodb (1.16.0)
168
- aws-sdk-core (~> 3, >= 3.26.0)
169
- aws-sigv4 (~> 1.0)
170
- aws-sdk-dynamodbstreams (1.5.0)
171
- aws-sdk-core (~> 3, >= 3.26.0)
172
- aws-sigv4 (~> 1.0)
173
- aws-sdk-ec2 (1.56.0)
174
- aws-sdk-core (~> 3, >= 3.26.0)
175
- aws-sigv4 (~> 1.0)
176
- aws-sdk-ecr (1.8.0)
177
- aws-sdk-core (~> 3, >= 3.26.0)
178
- aws-sigv4 (~> 1.0)
179
- aws-sdk-ecs (1.22.0)
180
- aws-sdk-core (~> 3, >= 3.26.0)
181
- aws-sigv4 (~> 1.0)
182
- aws-sdk-efs (1.6.0)
183
- aws-sdk-core (~> 3, >= 3.26.0)
184
- aws-sigv4 (~> 1.0)
185
- aws-sdk-eks (1.7.0)
186
- aws-sdk-core (~> 3, >= 3.26.0)
187
- aws-sigv4 (~> 1.0)
188
- aws-sdk-elasticache (1.9.0)
189
- aws-sdk-core (~> 3, >= 3.26.0)
190
- aws-sigv4 (~> 1.0)
191
- aws-sdk-elasticbeanstalk (1.13.0)
192
- aws-sdk-core (~> 3, >= 3.26.0)
193
- aws-sigv4 (~> 1.0)
194
- aws-sdk-elasticloadbalancing (1.7.0)
195
- aws-sdk-core (~> 3, >= 3.26.0)
196
- aws-sigv4 (~> 1.0)
197
- aws-sdk-elasticloadbalancingv2 (1.16.0)
198
- aws-sdk-core (~> 3, >= 3.26.0)
199
- aws-sigv4 (~> 1.0)
200
- aws-sdk-elasticsearchservice (1.14.0)
201
- aws-sdk-core (~> 3, >= 3.26.0)
202
- aws-sigv4 (~> 1.0)
203
- aws-sdk-elastictranscoder (1.6.0)
204
- aws-sdk-core (~> 3, >= 3.26.0)
205
- aws-sigv4 (~> 1.0)
206
- aws-sdk-emr (1.7.0)
207
- aws-sdk-core (~> 3, >= 3.26.0)
208
- aws-sigv4 (~> 1.0)
209
- aws-sdk-firehose (1.9.0)
210
- aws-sdk-core (~> 3, >= 3.26.0)
211
- aws-sigv4 (~> 1.0)
212
- aws-sdk-fms (1.6.0)
213
- aws-sdk-core (~> 3, >= 3.26.0)
214
- aws-sigv4 (~> 1.0)
215
- aws-sdk-gamelift (1.9.0)
216
- aws-sdk-core (~> 3, >= 3.26.0)
217
- aws-sigv4 (~> 1.0)
218
- aws-sdk-glacier (1.13.0)
219
- aws-sdk-core (~> 3, >= 3.26.0)
220
- aws-sigv4 (~> 1.0)
221
- aws-sdk-glue (1.20.0)
222
- aws-sdk-core (~> 3, >= 3.26.0)
223
- aws-sigv4 (~> 1.0)
224
- aws-sdk-greengrass (1.10.0)
225
- aws-sdk-core (~> 3, >= 3.26.0)
226
- aws-sigv4 (~> 1.0)
227
- aws-sdk-guardduty (1.10.0)
228
- aws-sdk-core (~> 3, >= 3.26.0)
229
- aws-sigv4 (~> 1.0)
230
- aws-sdk-health (1.7.0)
231
- aws-sdk-core (~> 3, >= 3.26.0)
232
- aws-sigv4 (~> 1.0)
233
- aws-sdk-iam (1.10.0)
234
- aws-sdk-core (~> 3, >= 3.26.0)
235
- aws-sigv4 (~> 1.0)
236
- aws-sdk-importexport (1.5.0)
237
- aws-sdk-core (~> 3, >= 3.26.0)
238
- aws-sigv2 (~> 1.0)
239
- aws-sdk-inspector (1.11.0)
240
- aws-sdk-core (~> 3, >= 3.26.0)
241
- aws-sigv4 (~> 1.0)
242
- aws-sdk-iot (1.18.0)
243
- aws-sdk-core (~> 3, >= 3.26.0)
244
- aws-sigv4 (~> 1.0)
245
- aws-sdk-iot1clickdevicesservice (1.5.0)
246
- aws-sdk-core (~> 3, >= 3.26.0)
247
- aws-sigv4 (~> 1.0)
248
- aws-sdk-iot1clickprojects (1.5.0)
249
- aws-sdk-core (~> 3, >= 3.26.0)
250
- aws-sigv4 (~> 1.0)
251
- aws-sdk-iotanalytics (1.9.0)
252
- aws-sdk-core (~> 3, >= 3.26.0)
253
- aws-sigv4 (~> 1.0)
254
- aws-sdk-iotdataplane (1.5.0)
255
- aws-sdk-core (~> 3, >= 3.26.0)
256
- aws-sigv4 (~> 1.0)
257
- aws-sdk-iotjobsdataplane (1.6.0)
258
- aws-sdk-core (~> 3, >= 3.26.0)
259
- aws-sigv4 (~> 1.0)
260
- aws-sdk-kinesis (1.8.0)
261
- aws-sdk-core (~> 3, >= 3.26.0)
262
- aws-sigv4 (~> 1.0)
263
- aws-sdk-kinesisanalytics (1.7.0)
264
- aws-sdk-core (~> 3, >= 3.26.0)
265
- aws-sigv4 (~> 1.0)
266
- aws-sdk-kinesisvideo (1.6.0)
267
- aws-sdk-core (~> 3, >= 3.26.0)
268
- aws-sigv4 (~> 1.0)
269
- aws-sdk-kinesisvideoarchivedmedia (1.6.0)
270
- aws-sdk-core (~> 3, >= 3.26.0)
271
- aws-sigv4 (~> 1.0)
272
- aws-sdk-kinesisvideomedia (1.5.0)
273
- aws-sdk-core (~> 3, >= 3.26.0)
274
- aws-sigv4 (~> 1.0)
275
- aws-sdk-kms (1.11.0)
276
- aws-sdk-core (~> 3, >= 3.26.0)
277
- aws-sigv4 (~> 1.0)
278
- aws-sdk-lambda (1.13.0)
279
- aws-sdk-core (~> 3, >= 3.26.0)
280
- aws-sigv4 (~> 1.0)
281
- aws-sdk-lambdapreview (1.5.0)
282
- aws-sdk-core (~> 3, >= 3.26.0)
283
- aws-sigv4 (~> 1.0)
284
- aws-sdk-lex (1.8.0)
285
- aws-sdk-core (~> 3, >= 3.26.0)
286
- aws-sigv4 (~> 1.0)
287
- aws-sdk-lexmodelbuildingservice (1.11.0)
288
- aws-sdk-core (~> 3, >= 3.26.0)
289
- aws-sigv4 (~> 1.0)
290
- aws-sdk-lightsail (1.10.0)
291
- aws-sdk-core (~> 3, >= 3.26.0)
292
- aws-sigv4 (~> 1.0)
293
- aws-sdk-machinelearning (1.5.0)
294
- aws-sdk-core (~> 3, >= 3.26.0)
295
- aws-sigv4 (~> 1.0)
296
- aws-sdk-macie (1.5.0)
297
- aws-sdk-core (~> 3, >= 3.26.0)
298
- aws-sigv4 (~> 1.0)
299
- aws-sdk-marketplacecommerceanalytics (1.5.0)
300
- aws-sdk-core (~> 3, >= 3.26.0)
301
- aws-sigv4 (~> 1.0)
302
- aws-sdk-marketplaceentitlementservice (1.5.0)
303
- aws-sdk-core (~> 3, >= 3.26.0)
304
- aws-sigv4 (~> 1.0)
305
- aws-sdk-marketplacemetering (1.5.0)
306
- aws-sdk-core (~> 3, >= 3.26.0)
307
- aws-sigv4 (~> 1.0)
308
- aws-sdk-mediaconvert (1.16.0)
309
- aws-sdk-core (~> 3, >= 3.26.0)
310
- aws-sigv4 (~> 1.0)
311
- aws-sdk-medialive (1.15.0)
312
- aws-sdk-core (~> 3, >= 3.26.0)
313
- aws-sigv4 (~> 1.0)
314
- aws-sdk-mediapackage (1.9.0)
315
- aws-sdk-core (~> 3, >= 3.26.0)
316
- aws-sigv4 (~> 1.0)
317
- aws-sdk-mediastore (1.6.0)
318
- aws-sdk-core (~> 3, >= 3.26.0)
319
- aws-sigv4 (~> 1.0)
320
- aws-sdk-mediastoredata (1.7.0)
321
- aws-sdk-core (~> 3, >= 3.26.0)
322
- aws-sigv4 (~> 1.0)
323
- aws-sdk-mediatailor (1.6.0)
324
- aws-sdk-core (~> 3, >= 3.26.0)
325
- aws-sigv4 (~> 1.0)
326
- aws-sdk-migrationhub (1.7.0)
327
- aws-sdk-core (~> 3, >= 3.26.0)
328
- aws-sigv4 (~> 1.0)
329
- aws-sdk-mobile (1.5.0)
330
- aws-sdk-core (~> 3, >= 3.26.0)
331
- aws-sigv4 (~> 1.0)
332
- aws-sdk-mq (1.7.0)
333
- aws-sdk-core (~> 3, >= 3.26.0)
334
- aws-sigv4 (~> 1.0)
335
- aws-sdk-mturk (1.8.0)
336
- aws-sdk-core (~> 3, >= 3.26.0)
337
- aws-sigv4 (~> 1.0)
338
- aws-sdk-neptune (1.6.0)
339
- aws-sdk-core (~> 3, >= 3.26.0)
340
- aws-sigv4 (~> 1.0)
341
- aws-sdk-opsworks (1.8.0)
342
- aws-sdk-core (~> 3, >= 3.26.0)
343
- aws-sigv4 (~> 1.0)
344
- aws-sdk-opsworkscm (1.9.0)
345
- aws-sdk-core (~> 3, >= 3.26.0)
346
- aws-sigv4 (~> 1.0)
347
- aws-sdk-organizations (1.15.0)
348
- aws-sdk-core (~> 3, >= 3.26.0)
349
- aws-sigv4 (~> 1.0)
350
- aws-sdk-pi (1.5.0)
351
- aws-sdk-core (~> 3, >= 3.26.0)
352
- aws-sigv4 (~> 1.0)
353
- aws-sdk-pinpoint (1.12.0)
354
- aws-sdk-core (~> 3, >= 3.26.0)
355
- aws-sigv4 (~> 1.0)
356
- aws-sdk-pinpointemail (1.0.0)
357
- aws-sdk-core (~> 3, >= 3.26.0)
358
- aws-sigv4 (~> 1.0)
359
- aws-sdk-polly (1.14.0)
360
- aws-sdk-core (~> 3, >= 3.26.0)
361
- aws-sigv4 (~> 1.0)
362
- aws-sdk-pricing (1.5.0)
363
- aws-sdk-core (~> 3, >= 3.26.0)
364
- aws-sigv4 (~> 1.0)
365
- aws-sdk-rds (1.37.0)
366
- aws-sdk-core (~> 3, >= 3.26.0)
367
- aws-sigv4 (~> 1.0)
368
- aws-sdk-redshift (1.14.0)
369
- aws-sdk-core (~> 3, >= 3.26.0)
370
- aws-sigv4 (~> 1.0)
371
- aws-sdk-rekognition (1.14.0)
372
- aws-sdk-core (~> 3, >= 3.26.0)
373
- aws-sigv4 (~> 1.0)
374
- aws-sdk-resourcegroups (1.7.0)
375
- aws-sdk-core (~> 3, >= 3.26.0)
376
- aws-sigv4 (~> 1.0)
377
- aws-sdk-resourcegroupstaggingapi (1.5.0)
378
- aws-sdk-core (~> 3, >= 3.26.0)
379
- aws-sigv4 (~> 1.0)
380
- aws-sdk-resources (3.27.0)
381
- aws-sdk-acm (~> 1)
382
- aws-sdk-acmpca (~> 1)
383
- aws-sdk-alexaforbusiness (~> 1)
384
- aws-sdk-apigateway (~> 1)
385
- aws-sdk-applicationautoscaling (~> 1)
386
- aws-sdk-applicationdiscoveryservice (~> 1)
387
- aws-sdk-appstream (~> 1)
388
- aws-sdk-appsync (~> 1)
389
- aws-sdk-athena (~> 1)
390
- aws-sdk-autoscaling (~> 1)
391
- aws-sdk-autoscalingplans (~> 1)
392
- aws-sdk-batch (~> 1)
393
- aws-sdk-budgets (~> 1)
394
- aws-sdk-chime (~> 1)
395
- aws-sdk-cloud9 (~> 1)
396
- aws-sdk-clouddirectory (~> 1)
397
- aws-sdk-cloudformation (~> 1)
398
- aws-sdk-cloudfront (~> 1)
399
- aws-sdk-cloudhsm (~> 1)
400
- aws-sdk-cloudhsmv2 (~> 1)
401
- aws-sdk-cloudsearch (~> 1)
402
- aws-sdk-cloudsearchdomain (~> 1)
403
- aws-sdk-cloudtrail (~> 1)
404
- aws-sdk-cloudwatch (~> 1)
405
- aws-sdk-cloudwatchevents (~> 1)
406
- aws-sdk-cloudwatchlogs (~> 1)
407
- aws-sdk-codebuild (~> 1)
408
- aws-sdk-codecommit (~> 1)
409
- aws-sdk-codedeploy (~> 1)
410
- aws-sdk-codepipeline (~> 1)
411
- aws-sdk-codestar (~> 1)
412
- aws-sdk-cognitoidentity (~> 1)
413
- aws-sdk-cognitoidentityprovider (~> 1)
414
- aws-sdk-cognitosync (~> 1)
415
- aws-sdk-comprehend (~> 1)
416
- aws-sdk-configservice (~> 1)
417
- aws-sdk-connect (~> 1)
418
- aws-sdk-costandusagereportservice (~> 1)
419
- aws-sdk-costexplorer (~> 1)
420
- aws-sdk-databasemigrationservice (~> 1)
421
- aws-sdk-datapipeline (~> 1)
422
- aws-sdk-dax (~> 1)
423
- aws-sdk-devicefarm (~> 1)
424
- aws-sdk-directconnect (~> 1)
425
- aws-sdk-directoryservice (~> 1)
426
- aws-sdk-dlm (~> 1)
427
- aws-sdk-dynamodb (~> 1)
428
- aws-sdk-dynamodbstreams (~> 1)
429
- aws-sdk-ec2 (~> 1)
430
- aws-sdk-ecr (~> 1)
431
- aws-sdk-ecs (~> 1)
432
- aws-sdk-efs (~> 1)
433
- aws-sdk-eks (~> 1)
434
- aws-sdk-elasticache (~> 1)
435
- aws-sdk-elasticbeanstalk (~> 1)
436
- aws-sdk-elasticloadbalancing (~> 1)
437
- aws-sdk-elasticloadbalancingv2 (~> 1)
438
- aws-sdk-elasticsearchservice (~> 1)
439
- aws-sdk-elastictranscoder (~> 1)
440
- aws-sdk-emr (~> 1)
441
- aws-sdk-firehose (~> 1)
442
- aws-sdk-fms (~> 1)
443
- aws-sdk-gamelift (~> 1)
444
- aws-sdk-glacier (~> 1)
445
- aws-sdk-glue (~> 1)
446
- aws-sdk-greengrass (~> 1)
447
- aws-sdk-guardduty (~> 1)
448
- aws-sdk-health (~> 1)
449
- aws-sdk-iam (~> 1)
450
- aws-sdk-importexport (~> 1)
451
- aws-sdk-inspector (~> 1)
452
- aws-sdk-iot (~> 1)
453
- aws-sdk-iot1clickdevicesservice (~> 1)
454
- aws-sdk-iot1clickprojects (~> 1)
455
- aws-sdk-iotanalytics (~> 1)
456
- aws-sdk-iotdataplane (~> 1)
457
- aws-sdk-iotjobsdataplane (~> 1)
458
- aws-sdk-kinesis (~> 1)
459
- aws-sdk-kinesisanalytics (~> 1)
460
- aws-sdk-kinesisvideo (~> 1)
461
- aws-sdk-kinesisvideoarchivedmedia (~> 1)
462
- aws-sdk-kinesisvideomedia (~> 1)
463
- aws-sdk-kms (~> 1)
464
- aws-sdk-lambda (~> 1)
465
- aws-sdk-lambdapreview (~> 1)
466
- aws-sdk-lex (~> 1)
467
- aws-sdk-lexmodelbuildingservice (~> 1)
468
- aws-sdk-lightsail (~> 1)
469
- aws-sdk-machinelearning (~> 1)
470
- aws-sdk-macie (~> 1)
471
- aws-sdk-marketplacecommerceanalytics (~> 1)
472
- aws-sdk-marketplaceentitlementservice (~> 1)
473
- aws-sdk-marketplacemetering (~> 1)
474
- aws-sdk-mediaconvert (~> 1)
475
- aws-sdk-medialive (~> 1)
476
- aws-sdk-mediapackage (~> 1)
477
- aws-sdk-mediastore (~> 1)
478
- aws-sdk-mediastoredata (~> 1)
479
- aws-sdk-mediatailor (~> 1)
480
- aws-sdk-migrationhub (~> 1)
481
- aws-sdk-mobile (~> 1)
482
- aws-sdk-mq (~> 1)
483
- aws-sdk-mturk (~> 1)
484
- aws-sdk-neptune (~> 1)
485
- aws-sdk-opsworks (~> 1)
486
- aws-sdk-opsworkscm (~> 1)
487
- aws-sdk-organizations (~> 1)
488
- aws-sdk-pi (~> 1)
489
- aws-sdk-pinpoint (~> 1)
490
- aws-sdk-pinpointemail (~> 1)
491
- aws-sdk-polly (~> 1)
492
- aws-sdk-pricing (~> 1)
493
- aws-sdk-rds (~> 1)
494
- aws-sdk-redshift (~> 1)
495
- aws-sdk-rekognition (~> 1)
496
- aws-sdk-resourcegroups (~> 1)
497
- aws-sdk-resourcegroupstaggingapi (~> 1)
498
- aws-sdk-route53 (~> 1)
499
- aws-sdk-route53domains (~> 1)
500
- aws-sdk-s3 (~> 1)
501
- aws-sdk-sagemaker (~> 1)
502
- aws-sdk-sagemakerruntime (~> 1)
503
- aws-sdk-secretsmanager (~> 1)
504
- aws-sdk-serverlessapplicationrepository (~> 1)
505
- aws-sdk-servicecatalog (~> 1)
506
- aws-sdk-servicediscovery (~> 1)
507
- aws-sdk-ses (~> 1)
508
- aws-sdk-shield (~> 1)
509
- aws-sdk-signer (~> 1)
510
- aws-sdk-simpledb (~> 1)
511
- aws-sdk-sms (~> 1)
512
- aws-sdk-snowball (~> 1)
513
- aws-sdk-sns (~> 1)
514
- aws-sdk-sqs (~> 1)
515
- aws-sdk-ssm (~> 1)
516
- aws-sdk-states (~> 1)
517
- aws-sdk-storagegateway (~> 1)
518
- aws-sdk-support (~> 1)
519
- aws-sdk-swf (~> 1)
520
- aws-sdk-transcribeservice (~> 1)
521
- aws-sdk-translate (~> 1)
522
- aws-sdk-waf (~> 1)
523
- aws-sdk-wafregional (~> 1)
524
- aws-sdk-workdocs (~> 1)
525
- aws-sdk-workmail (~> 1)
526
- aws-sdk-workspaces (~> 1)
527
- aws-sdk-xray (~> 1)
528
- aws-sdk-route53 (1.15.0)
529
- aws-sdk-core (~> 3, >= 3.26.0)
530
- aws-sigv4 (~> 1.0)
531
- aws-sdk-route53domains (1.7.0)
532
- aws-sdk-core (~> 3, >= 3.26.0)
533
- aws-sigv4 (~> 1.0)
534
- aws-sdk-s3 (1.23.1)
535
- aws-sdk-core (~> 3, >= 3.26.0)
536
- aws-sdk-kms (~> 1)
537
- aws-sigv4 (~> 1.0)
538
- aws-sdk-sagemaker (1.22.0)
539
- aws-sdk-core (~> 3, >= 3.26.0)
540
- aws-sigv4 (~> 1.0)
541
- aws-sdk-sagemakerruntime (1.6.0)
542
- aws-sdk-core (~> 3, >= 3.26.0)
543
- aws-sigv4 (~> 1.0)
544
- aws-sdk-secretsmanager (1.19.0)
545
- aws-sdk-core (~> 3, >= 3.26.0)
546
- aws-sigv4 (~> 1.0)
547
- aws-sdk-serverlessapplicationrepository (1.9.0)
548
- aws-sdk-core (~> 3, >= 3.26.0)
549
- aws-sigv4 (~> 1.0)
550
- aws-sdk-servicecatalog (1.12.0)
551
- aws-sdk-core (~> 3, >= 3.26.0)
552
- aws-sigv4 (~> 1.0)
553
- aws-sdk-servicediscovery (1.7.0)
554
- aws-sdk-core (~> 3, >= 3.26.0)
555
- aws-sigv4 (~> 1.0)
556
- aws-sdk-ses (1.13.0)
557
- aws-sdk-core (~> 3, >= 3.26.0)
558
- aws-sigv4 (~> 1.0)
559
- aws-sdk-shield (1.8.0)
560
- aws-sdk-core (~> 3, >= 3.26.0)
561
- aws-sigv4 (~> 1.0)
562
- aws-sdk-signer (1.4.0)
563
- aws-sdk-core (~> 3, >= 3.26.0)
564
- aws-sigv4 (~> 1.0)
565
- aws-sdk-simpledb (1.5.0)
566
- aws-sdk-core (~> 3, >= 3.26.0)
567
- aws-sigv2 (~> 1.0)
568
- aws-sdk-sms (1.5.0)
569
- aws-sdk-core (~> 3, >= 3.26.0)
570
- aws-sigv4 (~> 1.0)
571
- aws-sdk-snowball (1.9.0)
572
- aws-sdk-core (~> 3, >= 3.26.0)
573
- aws-sigv4 (~> 1.0)
574
- aws-sdk-sns (1.7.0)
575
- aws-sdk-core (~> 3, >= 3.26.0)
576
- aws-sigv4 (~> 1.0)
577
- aws-sdk-sqs (1.9.0)
578
- aws-sdk-core (~> 3, >= 3.26.0)
579
- aws-sigv4 (~> 1.0)
580
- aws-sdk-ssm (1.32.0)
581
- aws-sdk-core (~> 3, >= 3.26.0)
582
- aws-sigv4 (~> 1.0)
583
- aws-sdk-states (1.7.0)
584
- aws-sdk-core (~> 3, >= 3.26.0)
585
- aws-sigv4 (~> 1.0)
586
- aws-sdk-storagegateway (1.12.0)
587
- aws-sdk-core (~> 3, >= 3.26.0)
588
- aws-sigv4 (~> 1.0)
589
- aws-sdk-support (1.5.0)
590
- aws-sdk-core (~> 3, >= 3.26.0)
591
- aws-sigv4 (~> 1.0)
592
- aws-sdk-swf (1.5.0)
593
- aws-sdk-core (~> 3, >= 3.26.0)
594
- aws-sigv4 (~> 1.0)
595
- aws-sdk-transcribeservice (1.10.0)
596
- aws-sdk-core (~> 3, >= 3.26.0)
597
- aws-sigv4 (~> 1.0)
598
- aws-sdk-translate (1.6.0)
599
- aws-sdk-core (~> 3, >= 3.26.0)
600
- aws-sigv4 (~> 1.0)
601
- aws-sdk-waf (1.10.0)
602
- aws-sdk-core (~> 3, >= 3.26.0)
603
- aws-sigv4 (~> 1.0)
604
- aws-sdk-wafregional (1.11.0)
605
- aws-sdk-core (~> 3, >= 3.26.0)
606
- aws-sigv4 (~> 1.0)
607
- aws-sdk-workdocs (1.6.0)
608
- aws-sdk-core (~> 3, >= 3.26.0)
35
+ aws-sdk-ec2 (1.59.0)
36
+ aws-sdk-core (~> 3, >= 3.39.0)
609
37
  aws-sigv4 (~> 1.0)
610
- aws-sdk-workmail (1.6.0)
611
- aws-sdk-core (~> 3, >= 3.26.0)
38
+ aws-sdk-eks (1.8.0)
39
+ aws-sdk-core (~> 3, >= 3.39.0)
612
40
  aws-sigv4 (~> 1.0)
613
- aws-sdk-workspaces (1.8.0)
614
- aws-sdk-core (~> 3, >= 3.26.0)
41
+ aws-sdk-iam (1.12.0)
42
+ aws-sdk-core (~> 3, >= 3.39.0)
615
43
  aws-sigv4 (~> 1.0)
616
- aws-sdk-xray (1.8.0)
617
- aws-sdk-core (~> 3, >= 3.26.0)
44
+ aws-sdk-route53 (1.16.0)
45
+ aws-sdk-core (~> 3, >= 3.39.0)
618
46
  aws-sigv4 (~> 1.0)
619
- aws-sigv2 (1.0.1)
620
47
  aws-sigv4 (1.0.3)
621
48
  concurrent-ruby (1.1.3)
622
49
  domain_name (0.5.20180417)
@@ -630,6 +57,9 @@ GEM
630
57
  domain_name (~> 0.5)
631
58
  http-form_data (2.1.1)
632
59
  http_parser.rb (0.6.0)
60
+ httparty (0.16.3)
61
+ mime-types (~> 3.0)
62
+ multi_xml (>= 0.5.2)
633
63
  i18n (1.1.1)
634
64
  concurrent-ruby (~> 1.0)
635
65
  jmespath (1.4.0)
@@ -641,6 +71,7 @@ GEM
641
71
  mime-types-data (~> 3.2015)
642
72
  mime-types-data (3.2018.0812)
643
73
  minitest (5.11.3)
74
+ multi_xml (0.6.0)
644
75
  netrc (0.11.0)
645
76
  public_suffix (3.0.3)
646
77
  recursive-open-struct (1.1.0)
@@ -663,4 +94,4 @@ DEPENDENCIES
663
94
  eks_cli!
664
95
 
665
96
  BUNDLED WITH
666
- 1.15.4
97
+ 1.17.1
data/README.md CHANGED
@@ -6,15 +6,17 @@ EKS cluster bootstrap with batteries included
6
6
 
7
7
  * Supports creation of multiple node groups of different types with communication enabled between them
8
8
  * Taint and label your nodegroups
9
+ * Authorize IAM users for cluster access
9
10
  * Manage IAM policies that will be attached to your nodes
10
11
  * Easily configure docker repository secrets to allow pulling private images
11
12
  * Manage Route53 DNS records to point at your Kubernetes services
13
+ * Export nodegroups to SporInst Elastigroups
12
14
  * Even more...
13
15
 
14
16
  ## Usage
15
17
 
16
18
  ```
17
- $ gem install eks_cli -v 0.1.4
19
+ $ gem install eks_cli -v 0.1.6
18
20
  $ eks create us-west-2 --cluster-name=My-EKS-Cluster
19
21
  $ eks create-nodegroup --cluster-name My-EKS-Cluster --group-name nodes --ssh-key-name my-ssh-key --min 1 --max 3
20
22
  $ eks create-nodegroup --cluster-name My-EKS-Cluster --group-name other-nodes --ssh-key-name my-ssh-key --min 3 --max 3 --instance-type m5.2xlarge
@@ -31,6 +33,12 @@ You can type `eks` in your shell to get the full synopsis of available commands
31
33
 
32
34
  ## Extra Stuff
33
35
 
36
+ ### Authorize an IAM user to access the cluster
37
+
38
+ `$ eks add-iam-user arn:aws:iam::XXXXXXXX:user/XXXXXXXX --cluster-name=My-EKS-Cluster --yes`
39
+
40
+ Edits `aws-auth` configmap and updates it on EKS
41
+
34
42
  ### Setting IAM policies to be attached to EKS nodes
35
43
 
36
44
  `$ eks set-iam-policies --cluster-name=My-EKS-Cluster --policies=AmazonS3FullAccess AmazonDynamoDBFullAccess`
@@ -41,7 +49,7 @@ Makes sure all nodegroup instances are attached with the above policies once cre
41
49
 
42
50
  `$ eks update-dns my-cool-service.my-company.com cool-service --route53-hosted-zone-id=XXXXX --elb-hosted-zone-id=XXXXXX --cluster-name=My-EKS-Cluster`
43
51
 
44
- Takes the ELB endpoint from `cool-service` and puts it as an alias record of `my-cool-service.my-company.com`
52
+ Takes the ELB endpoint from `cool-service` and puts it as an alias record of `my-cool-service.my-company.com` on Route53
45
53
 
46
54
  ### Enabling GPU
47
55
 
@@ -66,7 +74,7 @@ Adds your dockerhub credentials as a secret and attaches it to the default servi
66
74
 
67
75
  Creates a standard gp2 default storage class named gp2
68
76
 
69
- ### Installing DNS autosclaer
77
+ ### Installing DNS autoscaler
70
78
 
71
79
  `$ eks create-dns-autoscaler --cluster-name My-EKS-Cluster`
72
80
 
@@ -82,6 +90,15 @@ Assuming you have some shared resources on another VPC (an RDS instance for exam
82
90
  2. Setting route tables on both directions to allow communication
83
91
  3. Adding an ingress role to SG_ID to accept all communication from your new cluster nodes.
84
92
 
93
+ ### Exporting nodegroups to Spotinst
94
+
95
+ `$ eks export-nodegroup --group-name=other-nodes`
96
+
97
+ Exports the corresponding Auto Scaling Group to a Spotinst Elastigroup
98
+
99
+ Requires the following environment variables to be set:
100
+ * SPOTINST_ACCOUNT_ID
101
+ * SPOTINST_API_TOKEN
85
102
 
86
103
  ## Contributing
87
104
 
data/eks_cli.gemspec CHANGED
@@ -28,5 +28,6 @@ Gem::Specification.new do |s|
28
28
  s.add_dependency 'aws-sdk-route53'
29
29
  s.add_dependency 'activesupport'
30
30
  s.add_dependency 'kubeclient'
31
+ s.add_dependency 'httparty'
31
32
  end
32
33
 
data/lib/eks_cli/cli.rb CHANGED
@@ -46,9 +46,11 @@ module EksCli
46
46
  create_cluster_vpc
47
47
  create_eks_cluster
48
48
  create_cluster_security_group
49
+ wait_for_cluster
49
50
  enable_gpu if options[:enable_gpu]
50
51
  create_default_storage_class if options[:create_default_storage_class]
51
52
  create_dns_autoscaler if options[:create_dns_autoscaler]
53
+ say "cluster creation completed"
52
54
  end
53
55
 
54
56
  desc "create-eks-role", "creates an IAM role for usage by EKS"
@@ -168,6 +170,27 @@ module EksCli
168
170
  K8s::Client.new(cluster_name).create_dns_autoscaler
169
171
  end
170
172
 
173
+ desc "wait-for-cluster", "waits until cluster responds to HTTP requests"
174
+ def wait_for_cluster
175
+ K8s::Client.new(cluster_name).wait_for_cluster
176
+ end
177
+
178
+ desc "export-nodegroup", "exports nodegroup auto scaling group to spotinst"
179
+ option :all, type: :boolean, default: false, desc: "create all nodegroups. must be used in conjunction with --yes"
180
+ option :group_name, type: :string, desc: "create a specific nodegroup. can't be used with --all"
181
+ def export_nodegroup
182
+ nodegroups.each {|ng| ng.export_to_spotinst }
183
+ end
184
+
185
+ desc "add-iam-user IAM_ARN", "adds an IAM user as an authorized member on the EKS cluster"
186
+ option :username, default: "admin", desc: "the username on the k8s cluster"
187
+ option :groups, type: :array, default: ["system:masters"], desc: "which group should the user be added to"
188
+ option :yes, type: :boolean, default: false, desc: "update aws-auth configmap"
189
+ def add_iam_user(iam_arn)
190
+ Config[cluster_name].add_user(iam_arn, options[:username], options[:groups])
191
+ K8s::Auth.new(cluster_name).update if options[:yes]
192
+ end
193
+
171
194
  disable_required_check! :version
172
195
  desc "version", "prints eks_cli version"
173
196
  def version
@@ -73,6 +73,10 @@ module EksCli
73
73
  stack.outputs
74
74
  end
75
75
 
76
+ def resource(key)
77
+ Aws::CloudFormation::Stack.new(stack.stack_name, client: client).resource(key).physical_resource_id
78
+ end
79
+
76
80
  private
77
81
 
78
82
  def self.pending(stacks)
@@ -36,12 +36,12 @@ module EksCli
36
36
  end
37
37
 
38
38
  def write(attrs, to = :state)
39
- to_path = resolve_config_file(to)
40
- Log.info "updating configuration file #{to_path}:\n#{attrs}"
39
+ path = resolve_config_file(to)
40
+ current = read(path) rescue {}
41
+ Log.info "updating configuration file #{path}:\n#{attrs}"
41
42
  attrs = attrs.inject({}) {|h,(k,v)| h[k.to_s] = v; h}
42
- current = read(to_path) rescue {}
43
43
  updated = current.deep_merge(attrs)
44
- write_to_file(updated, to_path)
44
+ write_to_file(updated, path)
45
45
  end
46
46
 
47
47
  def bootstrap(attrs)
@@ -60,6 +60,10 @@ module EksCli
60
60
  raise "bad nodegroup name #{options["group_name"]}" if options["group_name"] == nil || options["group_name"].empty?
61
61
  write({groups: { options["group_name"] => options }}, :groups)
62
62
  end
63
+
64
+ def add_user(arn, username, groups)
65
+ write({"users" => {arn => {"username" => username, "groups" => groups}}})
66
+ end
63
67
 
64
68
  private
65
69
 
@@ -1,5 +1,6 @@
1
1
  require 'k8s/configmap_builder'
2
2
  require 'k8s/client'
3
+ require 'config'
3
4
  require 'cloudformation/client'
4
5
  require 'cloudformation/stack'
5
6
  require 'log'
@@ -34,7 +35,7 @@ module EksCli
34
35
  CloudFormation::Client.get(@cluster_name)
35
36
  end
36
37
 
37
- def arns
38
+ def node_arns
38
39
  client
39
40
  .list_stacks(stack_status_filter: ["CREATE_COMPLETE"])
40
41
  .stack_summaries
@@ -44,8 +45,12 @@ module EksCli
44
45
  .map {|stack| stack.node_instance_role_arn}
45
46
  end
46
47
 
48
+ def users
49
+ Config[@cluster_name]["users"]
50
+ end
51
+
47
52
  def configmap
48
- ConfigmapBuilder.build(arns)
53
+ ConfigmapBuilder.build(node_arns, users)
49
54
  end
50
55
 
51
56
  end
@@ -6,6 +6,7 @@ require_relative '../config'
6
6
  module EksCli
7
7
  module K8s
8
8
  class Client
9
+ TIMEOUTS = {open: 10, read: 20}
9
10
 
10
11
  def initialize(cluster_name)
11
12
  @cluster_name = cluster_name
@@ -16,6 +17,7 @@ module EksCli
16
17
  end
17
18
 
18
19
  def enable_gpu
20
+ Log.info "installing nvidia device plugin daemon set (GPU support)"
19
21
  self.create_daemon_set(resource_from_yaml("nvidia_device_plugin.yaml"))
20
22
  end
21
23
 
@@ -39,6 +41,22 @@ module EksCli
39
41
  Log.info self.create_deployment(resource_from_yaml("dns_autoscaler.dep.yaml"))
40
42
  end
41
43
 
44
+ def wait_for_cluster
45
+ Log.info "waiting for cluster #{@cluster_name} to respond"
46
+ ready = false
47
+ while !ready
48
+ begin
49
+ res = self.get_services
50
+ if res.count > 0
51
+ Log.info "#{@cluster_name} is up and running!"
52
+ ready = true
53
+ end
54
+ rescue Kubeclient::HttpError
55
+ Log.info "couldn't connect to server, retrying..."
56
+ end
57
+ end
58
+ end
59
+
42
60
  private
43
61
 
44
62
  def resource_from_yaml(filename)
@@ -75,7 +93,8 @@ module EksCli
75
93
  [context.api_endpoint, suffix].join,
76
94
  context.api_version,
77
95
  ssl_options: context.ssl_options,
78
- auth_options: {bearer_token: token})
96
+ auth_options: {bearer_token: token},
97
+ timeouts: TIMEOUTS)
79
98
  end
80
99
 
81
100
  def config
@@ -94,7 +113,6 @@ module EksCli
94
113
  kube_config.context(config["cluster_arn"])
95
114
  end
96
115
 
97
-
98
116
  end
99
117
  end
100
118
  end
@@ -5,25 +5,43 @@ module EksCli
5
5
  module K8s
6
6
  class ConfigmapBuilder
7
7
  class << self
8
- def build(arns)
8
+ def build(node_arns, users)
9
9
  cm = Kubeclient::Resource.new
10
10
  cm.metadata={}
11
11
  cm.metadata.name = "aws-auth"
12
12
  cm.metadata.namespace = "kube-system"
13
13
  cm.data = {}
14
- cm.data.mapRoles = map_roles(arns)
14
+ cm.data.mapRoles = map_roles(node_arns)
15
+ cm.data.mapUsers = map_users(users)
15
16
  cm
16
17
  end
17
18
 
18
- def map_roles(arns)
19
- arns.map {|a| map_role(a)}.to_yaml.sub("---\n","")
19
+ def map_roles(node_arns)
20
+ node_arns.map {|a| map_role(a)}.to_yaml.sub("---\n","")
21
+ end
22
+
23
+ def map_users(users)
24
+ users.map {|arn, attrs| to_user_obj(arn, attrs["username"], attrs["groups"]) }.to_yaml.sub("---\n","")
20
25
  end
21
26
 
22
27
  def map_role(stack_arn)
23
- {"rolearn" => stack_arn,
24
- "username" => "system:node:{{EC2PrivateDNSName}}",
25
- "groups" => ["system:bootstrappers", "system:nodes"]}
28
+ to_role_obj(stack_arn, "system:node:{{EC2PrivateDNSName}}", ["system:bootstrappers", "system:nodes"])
26
29
  end
30
+
31
+ def to_auth_obj(type, arn, username, groups)
32
+ {"#{type}arn" => arn,
33
+ "username" => username,
34
+ "groups" => groups}
35
+ end
36
+
37
+ def to_role_obj(arn, username, groups)
38
+ to_auth_obj("role", arn ,username, groups)
39
+ end
40
+
41
+ def to_user_obj(arn, username, groups)
42
+ to_auth_obj("user", arn ,username, groups)
43
+ end
44
+
27
45
  end
28
46
  end
29
47
  end
@@ -1,5 +1,6 @@
1
1
  require 'active_support/core_ext/hash'
2
2
  require 'config'
3
+ require 'spotinst/client'
3
4
  require 'cloudformation/stack'
4
5
  require 'iam/client'
5
6
  require 'k8s/auth'
@@ -26,6 +27,7 @@ module EksCli
26
27
 
27
28
  def initialize(cluster_name, name)
28
29
  @cluster_name = cluster_name
30
+ @name = name
29
31
  @group = Config[cluster_name].for_group(name)
30
32
  end
31
33
 
@@ -53,6 +55,19 @@ module EksCli
53
55
  cf_stack.delete
54
56
  end
55
57
 
58
+ def asg
59
+ cf_stack.resource("NodeGroup")
60
+ end
61
+
62
+ def instance_type
63
+ @group["instance_type"]
64
+ end
65
+
66
+ def export_to_spotinst
67
+ Log.info "exporting nodegroup #{@name} to spotinst"
68
+ Log.info Spotinst::Client.new.import_asg(Config[@cluster_name]["region"], asg, [instance_type])
69
+ end
70
+
56
71
  private
57
72
 
58
73
  def cf_template_body
@@ -0,0 +1,33 @@
1
+ require 'httparty'
2
+ module EksCli
3
+ module Spotinst
4
+ class Client
5
+ include HTTParty
6
+
7
+ base_uri "https://api.spotinst.io"
8
+
9
+ def initialize(account_id: nil, api_token: nil)
10
+ @account_id = account_id || ENV['SPOTINST_ACCOUNT_ID']
11
+ @api_token = api_token || ENV['SPOTINST_API_TOKEN']
12
+ if @account_id == nil
13
+ raise "please set SPOTINST_ACCOUNT_ID environment variable"
14
+ end
15
+
16
+ if @api_token == nil
17
+ raise "please set SPOTINST_API_TOKEN environment variable"
18
+ end
19
+ self.class.headers({"Authorization" => "Bearer #{@api_token}",
20
+ "Content-Type" => "application/json"})
21
+ end
22
+
23
+ def import_asg(region, asg_name, instance_types)
24
+ self.class.post("/aws/ec2/group/autoScalingGroup/import?region=#{region}&accountId=#{@account_id}&autoScalingGroupName=#{asg_name}",
25
+ body: {group: {spotInstanceTypes: instance_types} }.to_json)
26
+ end
27
+
28
+ def list_groups
29
+ self.class.get("/aws/ec2/group?accountId=#{@account_id}")
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,3 +1,3 @@
1
1
  module EksCli
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eks_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erez Rabih
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: httparty
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  description: A utility to manage and create EKS (Kubernetes) cluster on Amazon Web
126
140
  Services
127
141
  email: erez.rabih@gmail.com
@@ -156,6 +170,7 @@ files:
156
170
  - lib/eks_cli/log.rb
157
171
  - lib/eks_cli/nodegroup.rb
158
172
  - lib/eks_cli/route53/client.rb
173
+ - lib/eks_cli/spotinst/client.rb
159
174
  - lib/eks_cli/version.rb
160
175
  - lib/eks_cli/vpc/client.rb
161
176
  homepage: https://github.com/nanit/eks_cli