eks_cli 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +12 -11
- data/lib/assets/cf/eks_cluster.yaml.erb +1 -1
- data/lib/assets/cf/nodegroup.yaml +119 -127
- data/lib/assets/k8s/{cni_1_2_1.yaml.erb → cni/ds.yaml.erb} +3 -1
- data/lib/assets/k8s/cni/rest.yaml +60 -0
- data/lib/assets/k8s/dns_autoscaler.dep.yaml +11 -11
- data/lib/assets/k8s/nvidia_device_plugin.yaml +4 -5
- data/lib/eks_cli/cli.rb +3 -2
- data/lib/eks_cli/config.rb +1 -1
- data/lib/eks_cli/k8s/client.rb +2 -1
- data/lib/eks_cli/nodegroup.rb +21 -13
- data/lib/eks_cli/version.rb +1 -1
- data/lib/eks_cli/vpc/client.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f3f3482b85b1f958736fc15f42ca78a0758bb260f41fc2b9a82b8ac4d41290d
|
4
|
+
data.tar.gz: f8716d74941af68b46f7b969af80d5d0747f140f4eaf09d0ca5d32d32c66f4d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7632811983ed89098c1be2f08cc92f612641863ce0aa90d0b6c19dfbdf3d6de75a9e06a1133f673db9f0a90205511b930de790db47a099b253b24f4c043b8bce
|
7
|
+
data.tar.gz: d4592a8ee34300d7b87b63aa32146bd5fcfbd150760ee36ea4a8a3e86332566aa6b2a93173cdbb6199cd7ab798d5739f8c8f1e1fc5e06c4c41dea147d2e3d61e
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
eks_cli (0.
|
4
|
+
eks_cli (0.3.1)
|
5
5
|
activesupport (= 5.2.1.1)
|
6
6
|
aws-sdk-autoscaling (= 1.13.0)
|
7
7
|
aws-sdk-cloudformation (= 1.13.0)
|
@@ -20,20 +20,20 @@ GEM
|
|
20
20
|
i18n (>= 0.7, < 2)
|
21
21
|
minitest (~> 5.1)
|
22
22
|
tzinfo (~> 1.1)
|
23
|
-
addressable (2.
|
23
|
+
addressable (2.6.0)
|
24
24
|
public_suffix (>= 2.0.2, < 4.0)
|
25
|
-
aws-eventstream (1.0.
|
26
|
-
aws-partitions (1.
|
25
|
+
aws-eventstream (1.0.2)
|
26
|
+
aws-partitions (1.144.0)
|
27
27
|
aws-sdk-autoscaling (1.13.0)
|
28
28
|
aws-sdk-core (~> 3, >= 3.39.0)
|
29
29
|
aws-sigv4 (~> 1.0)
|
30
30
|
aws-sdk-cloudformation (1.13.0)
|
31
31
|
aws-sdk-core (~> 3, >= 3.39.0)
|
32
32
|
aws-sigv4 (~> 1.0)
|
33
|
-
aws-sdk-core (3.
|
34
|
-
aws-eventstream (~> 1.0)
|
33
|
+
aws-sdk-core (3.48.2)
|
34
|
+
aws-eventstream (~> 1.0, >= 1.0.2)
|
35
35
|
aws-partitions (~> 1.0)
|
36
|
-
aws-sigv4 (~> 1.
|
36
|
+
aws-sigv4 (~> 1.1)
|
37
37
|
jmespath (~> 1.0)
|
38
38
|
aws-sdk-ec2 (1.62.0)
|
39
39
|
aws-sdk-core (~> 3, >= 3.39.0)
|
@@ -41,8 +41,9 @@ GEM
|
|
41
41
|
aws-sdk-route53 (1.16.0)
|
42
42
|
aws-sdk-core (~> 3, >= 3.39.0)
|
43
43
|
aws-sigv4 (~> 1.0)
|
44
|
-
aws-sigv4 (1.0
|
45
|
-
|
44
|
+
aws-sigv4 (1.1.0)
|
45
|
+
aws-eventstream (~> 1.0, >= 1.0.2)
|
46
|
+
concurrent-ruby (1.1.5)
|
46
47
|
domain_name (0.5.20180417)
|
47
48
|
unf (>= 0.0.5, < 1.0.0)
|
48
49
|
http (3.3.0)
|
@@ -57,7 +58,7 @@ GEM
|
|
57
58
|
httparty (0.16.3)
|
58
59
|
mime-types (~> 3.0)
|
59
60
|
multi_xml (>= 0.5.2)
|
60
|
-
i18n (1.
|
61
|
+
i18n (1.6.0)
|
61
62
|
concurrent-ruby (~> 1.0)
|
62
63
|
ipaddress (0.8.3)
|
63
64
|
jmespath (1.4.0)
|
@@ -92,4 +93,4 @@ DEPENDENCIES
|
|
92
93
|
eks_cli!
|
93
94
|
|
94
95
|
BUNDLED WITH
|
95
|
-
1.17.
|
96
|
+
1.17.2
|
@@ -1,6 +1,6 @@
|
|
1
1
|
---
|
2
|
-
AWSTemplateFormatVersion:
|
3
|
-
Description:
|
2
|
+
AWSTemplateFormatVersion: 2010-09-09
|
3
|
+
Description: Amazon EKS - Node Group
|
4
4
|
|
5
5
|
Parameters:
|
6
6
|
|
@@ -16,107 +16,107 @@ Parameters:
|
|
16
16
|
Description: EC2 instance type for the node instances
|
17
17
|
Type: String
|
18
18
|
Default: t3.medium
|
19
|
-
AllowedValues:
|
20
|
-
- t2.small
|
21
|
-
- t2.medium
|
22
|
-
- t2.large
|
23
|
-
- t2.xlarge
|
24
|
-
- t2.2xlarge
|
25
|
-
- t3.nano
|
26
|
-
- t3.micro
|
27
|
-
- t3.small
|
28
|
-
- t3.medium
|
29
|
-
- t3.large
|
30
|
-
- t3.xlarge
|
31
|
-
- t3.2xlarge
|
32
|
-
- m3.medium
|
33
|
-
- m3.large
|
34
|
-
- m3.xlarge
|
35
|
-
- m3.2xlarge
|
36
|
-
- m4.large
|
37
|
-
- m4.xlarge
|
38
|
-
- m4.2xlarge
|
39
|
-
- m4.4xlarge
|
40
|
-
- m4.10xlarge
|
41
|
-
- m5.large
|
42
|
-
- m5.xlarge
|
43
|
-
- m5.2xlarge
|
44
|
-
- m5.4xlarge
|
45
|
-
- m5.12xlarge
|
46
|
-
- m5.24xlarge
|
47
|
-
- c4.large
|
48
|
-
- c4.xlarge
|
49
|
-
- c4.2xlarge
|
50
|
-
- c4.4xlarge
|
51
|
-
- c4.8xlarge
|
52
|
-
- c5.large
|
53
|
-
- c5.xlarge
|
54
|
-
- c5.2xlarge
|
55
|
-
- c5.4xlarge
|
56
|
-
- c5.9xlarge
|
57
|
-
- c5.18xlarge
|
58
|
-
- i3.large
|
59
|
-
- i3.xlarge
|
60
|
-
- i3.2xlarge
|
61
|
-
- i3.4xlarge
|
62
|
-
- i3.8xlarge
|
63
|
-
- i3.16xlarge
|
64
|
-
- r3.xlarge
|
65
|
-
- r3.2xlarge
|
66
|
-
- r3.4xlarge
|
67
|
-
- r3.8xlarge
|
68
|
-
- r4.large
|
69
|
-
- r4.xlarge
|
70
|
-
- r4.2xlarge
|
71
|
-
- r4.4xlarge
|
72
|
-
- r4.8xlarge
|
73
|
-
- r4.16xlarge
|
74
|
-
- x1.16xlarge
|
75
|
-
- x1.32xlarge
|
76
|
-
- p2.xlarge
|
77
|
-
- p2.8xlarge
|
78
|
-
- p2.16xlarge
|
79
|
-
- p3.2xlarge
|
80
|
-
- p3.8xlarge
|
81
|
-
- p3.16xlarge
|
82
|
-
- r5.large
|
83
|
-
- r5.xlarge
|
84
|
-
- r5.2xlarge
|
85
|
-
- r5.4xlarge
|
86
|
-
- r5.12xlarge
|
87
|
-
- r5.24xlarge
|
88
|
-
- r5d.large
|
89
|
-
- r5d.xlarge
|
90
|
-
- r5d.2xlarge
|
91
|
-
- r5d.4xlarge
|
92
|
-
- r5d.12xlarge
|
93
|
-
- r5d.24xlarge
|
94
|
-
- z1d.large
|
95
|
-
- z1d.xlarge
|
96
|
-
- z1d.2xlarge
|
97
|
-
- z1d.3xlarge
|
98
|
-
- z1d.6xlarge
|
99
|
-
- z1d.12xlarge
|
100
19
|
ConstraintDescription: Must be a valid EC2 instance type
|
20
|
+
AllowedValues:
|
21
|
+
- t2.small
|
22
|
+
- t2.medium
|
23
|
+
- t2.large
|
24
|
+
- t2.xlarge
|
25
|
+
- t2.2xlarge
|
26
|
+
- t3.nano
|
27
|
+
- t3.micro
|
28
|
+
- t3.small
|
29
|
+
- t3.medium
|
30
|
+
- t3.large
|
31
|
+
- t3.xlarge
|
32
|
+
- t3.2xlarge
|
33
|
+
- m3.medium
|
34
|
+
- m3.large
|
35
|
+
- m3.xlarge
|
36
|
+
- m3.2xlarge
|
37
|
+
- m4.large
|
38
|
+
- m4.xlarge
|
39
|
+
- m4.2xlarge
|
40
|
+
- m4.4xlarge
|
41
|
+
- m4.10xlarge
|
42
|
+
- m5.large
|
43
|
+
- m5.xlarge
|
44
|
+
- m5.2xlarge
|
45
|
+
- m5.4xlarge
|
46
|
+
- m5.12xlarge
|
47
|
+
- m5.24xlarge
|
48
|
+
- c4.large
|
49
|
+
- c4.xlarge
|
50
|
+
- c4.2xlarge
|
51
|
+
- c4.4xlarge
|
52
|
+
- c4.8xlarge
|
53
|
+
- c5.large
|
54
|
+
- c5.xlarge
|
55
|
+
- c5.2xlarge
|
56
|
+
- c5.4xlarge
|
57
|
+
- c5.9xlarge
|
58
|
+
- c5.18xlarge
|
59
|
+
- i3.large
|
60
|
+
- i3.xlarge
|
61
|
+
- i3.2xlarge
|
62
|
+
- i3.4xlarge
|
63
|
+
- i3.8xlarge
|
64
|
+
- i3.16xlarge
|
65
|
+
- r3.xlarge
|
66
|
+
- r3.2xlarge
|
67
|
+
- r3.4xlarge
|
68
|
+
- r3.8xlarge
|
69
|
+
- r4.large
|
70
|
+
- r4.xlarge
|
71
|
+
- r4.2xlarge
|
72
|
+
- r4.4xlarge
|
73
|
+
- r4.8xlarge
|
74
|
+
- r4.16xlarge
|
75
|
+
- x1.16xlarge
|
76
|
+
- x1.32xlarge
|
77
|
+
- p2.xlarge
|
78
|
+
- p2.8xlarge
|
79
|
+
- p2.16xlarge
|
80
|
+
- p3.2xlarge
|
81
|
+
- p3.8xlarge
|
82
|
+
- p3.16xlarge
|
83
|
+
- r5.large
|
84
|
+
- r5.xlarge
|
85
|
+
- r5.2xlarge
|
86
|
+
- r5.4xlarge
|
87
|
+
- r5.12xlarge
|
88
|
+
- r5.24xlarge
|
89
|
+
- r5d.large
|
90
|
+
- r5d.xlarge
|
91
|
+
- r5d.2xlarge
|
92
|
+
- r5d.4xlarge
|
93
|
+
- r5d.12xlarge
|
94
|
+
- r5d.24xlarge
|
95
|
+
- z1d.large
|
96
|
+
- z1d.xlarge
|
97
|
+
- z1d.2xlarge
|
98
|
+
- z1d.3xlarge
|
99
|
+
- z1d.6xlarge
|
100
|
+
- z1d.12xlarge
|
101
101
|
|
102
102
|
NodeAutoScalingGroupMinSize:
|
103
|
-
Type: Number
|
104
103
|
Description: Minimum size of Node Group ASG.
|
104
|
+
Type: Number
|
105
105
|
Default: 1
|
106
106
|
|
107
107
|
NodeAutoScalingGroupMaxSize:
|
108
|
-
Type: Number
|
109
108
|
Description: Maximum size of Node Group ASG. Set to at least 1 greater than NodeAutoScalingGroupDesiredCapacity.
|
109
|
+
Type: Number
|
110
110
|
Default: 4
|
111
111
|
|
112
112
|
NodeAutoScalingGroupDesiredCapacity:
|
113
|
-
Type: Number
|
114
113
|
Description: Desired capacity of Node Group ASG.
|
114
|
+
Type: Number
|
115
115
|
Default: 3
|
116
116
|
|
117
117
|
NodeVolumeSize:
|
118
|
-
Type: Number
|
119
118
|
Description: Node volume size
|
119
|
+
Type: Number
|
120
120
|
Default: 20
|
121
121
|
|
122
122
|
ClusterName:
|
@@ -125,8 +125,8 @@ Parameters:
|
|
125
125
|
|
126
126
|
BootstrapArguments:
|
127
127
|
Description: Arguments to pass to the bootstrap script. See files/bootstrap.sh in https://github.com/awslabs/amazon-eks-ami
|
128
|
-
Default: ""
|
129
128
|
Type: String
|
129
|
+
Default: ""
|
130
130
|
|
131
131
|
NodeGroupName:
|
132
132
|
Description: Unique identifier for the Node Group.
|
@@ -153,17 +153,16 @@ Parameters:
|
|
153
153
|
Type: CommaDelimitedList
|
154
154
|
|
155
155
|
Metadata:
|
156
|
+
|
156
157
|
AWS::CloudFormation::Interface:
|
157
158
|
ParameterGroups:
|
158
|
-
-
|
159
|
-
|
160
|
-
default: "EKS Cluster"
|
159
|
+
- Label:
|
160
|
+
default: EKS Cluster
|
161
161
|
Parameters:
|
162
162
|
- ClusterName
|
163
163
|
- ClusterControlPlaneSecurityGroup
|
164
|
-
-
|
165
|
-
|
166
|
-
default: "Worker Node Configuration"
|
164
|
+
- Label:
|
165
|
+
default: Worker Node Configuration
|
167
166
|
Parameters:
|
168
167
|
- NodeGroupName
|
169
168
|
- NodeAutoScalingGroupMinSize
|
@@ -176,9 +175,8 @@ Metadata:
|
|
176
175
|
- BootstrapArguments
|
177
176
|
- NodeGroupIAMPolicies
|
178
177
|
- ClusterSecurityGroup
|
179
|
-
-
|
180
|
-
|
181
|
-
default: "Worker Network Configuration"
|
178
|
+
- Label:
|
179
|
+
default: Worker Network Configuration
|
182
180
|
Parameters:
|
183
181
|
- VpcId
|
184
182
|
- Subnets
|
@@ -190,20 +188,18 @@ Resources:
|
|
190
188
|
Properties:
|
191
189
|
Path: "/"
|
192
190
|
Roles:
|
193
|
-
|
191
|
+
- !Ref NodeInstanceRole
|
194
192
|
|
195
193
|
NodeInstanceRole:
|
196
194
|
Type: AWS::IAM::Role
|
197
195
|
Properties:
|
198
196
|
AssumeRolePolicyDocument:
|
199
|
-
Version:
|
197
|
+
Version: 2012-10-17
|
200
198
|
Statement:
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
Action:
|
206
|
-
- sts:AssumeRole
|
199
|
+
- Effect: Allow
|
200
|
+
Principal:
|
201
|
+
Service: ec2.amazonaws.com
|
202
|
+
Action: sts:AssumeRole
|
207
203
|
Path: "/"
|
208
204
|
ManagedPolicyArns:
|
209
205
|
Ref: NodeGroupIAMPolicies
|
@@ -212,11 +208,10 @@ Resources:
|
|
212
208
|
Type: AWS::EC2::SecurityGroup
|
213
209
|
Properties:
|
214
210
|
GroupDescription: Security group for all nodes in the cluster
|
215
|
-
VpcId:
|
216
|
-
!Ref VpcId
|
211
|
+
VpcId: !Ref VpcId
|
217
212
|
Tags:
|
218
|
-
|
219
|
-
|
213
|
+
- Key: !Sub kubernetes.io/cluster/${ClusterName}
|
214
|
+
Value: owned
|
220
215
|
|
221
216
|
NodeSecurityGroupIngress:
|
222
217
|
Type: AWS::EC2::SecurityGroupIngress
|
@@ -225,7 +220,7 @@ Resources:
|
|
225
220
|
Description: Allow node to communicate with each other
|
226
221
|
GroupId: !Ref NodeSecurityGroup
|
227
222
|
SourceSecurityGroupId: !Ref NodeSecurityGroup
|
228
|
-
IpProtocol:
|
223
|
+
IpProtocol: -1
|
229
224
|
FromPort: 0
|
230
225
|
ToPort: 65535
|
231
226
|
|
@@ -291,33 +286,32 @@ Resources:
|
|
291
286
|
LaunchConfigurationName: !Ref NodeLaunchConfig
|
292
287
|
MinSize: !Ref NodeAutoScalingGroupMinSize
|
293
288
|
MaxSize: !Ref NodeAutoScalingGroupMaxSize
|
294
|
-
VPCZoneIdentifier:
|
295
|
-
!Ref Subnets
|
289
|
+
VPCZoneIdentifier: !Ref Subnets
|
296
290
|
Tags:
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
291
|
+
- Key: Name
|
292
|
+
Value: !Sub ${ClusterName}-${NodeGroupName}-Node
|
293
|
+
PropagateAtLaunch: true
|
294
|
+
- Key: !Sub kubernetes.io/cluster/${ClusterName}
|
295
|
+
Value: owned
|
296
|
+
PropagateAtLaunch: true
|
303
297
|
UpdatePolicy:
|
304
298
|
AutoScalingRollingUpdate:
|
305
|
-
MaxBatchSize:
|
299
|
+
MaxBatchSize: 1
|
306
300
|
MinInstancesInService: !Ref NodeAutoScalingGroupDesiredCapacity
|
307
|
-
PauseTime:
|
301
|
+
PauseTime: PT5M
|
308
302
|
|
309
303
|
NodeLaunchConfig:
|
310
304
|
Type: AWS::AutoScaling::LaunchConfiguration
|
311
305
|
Properties:
|
312
|
-
AssociatePublicIpAddress:
|
306
|
+
AssociatePublicIpAddress: true
|
313
307
|
IamInstanceProfile: !Ref NodeInstanceProfile
|
314
308
|
ImageId: !Ref NodeImageId
|
315
309
|
InstanceType: !Ref NodeInstanceType
|
316
310
|
KeyName: !Ref KeyName
|
317
311
|
InstanceMonitoring: false
|
318
312
|
SecurityGroups:
|
319
|
-
|
320
|
-
|
313
|
+
- !Ref NodeSecurityGroup
|
314
|
+
- !Ref ClusterSecurityGroup
|
321
315
|
BlockDeviceMappings:
|
322
316
|
- DeviceName: /dev/xvda
|
323
317
|
Ebs:
|
@@ -330,15 +324,13 @@ Resources:
|
|
330
324
|
#!/bin/bash
|
331
325
|
set -o xtrace
|
332
326
|
/etc/eks/bootstrap.sh ${ClusterName} ${BootstrapArguments}
|
333
|
-
/opt/aws/bin/cfn-signal --exit-code $? \
|
334
|
-
--stack ${AWS::StackName} \
|
335
|
-
--resource NodeGroup \
|
336
|
-
--region ${AWS::Region}
|
337
327
|
|
338
328
|
Outputs:
|
329
|
+
|
339
330
|
NodeInstanceRole:
|
340
331
|
Description: The node instance role
|
341
332
|
Value: !GetAtt NodeInstanceRole.Arn
|
333
|
+
|
342
334
|
NodeSecurityGroup:
|
343
335
|
Description: The security group for the node group
|
344
336
|
Value: !Ref NodeSecurityGroup
|
@@ -1,5 +1,7 @@
|
|
1
|
+
---
|
1
2
|
kind: DaemonSet
|
2
3
|
apiVersion: apps/v1
|
4
|
+
# kubernetes versions before 1.9.0 should use extensions/v1beta1
|
3
5
|
metadata:
|
4
6
|
name: aws-node
|
5
7
|
namespace: kube-system
|
@@ -23,7 +25,7 @@ spec:
|
|
23
25
|
tolerations:
|
24
26
|
- operator: Exists
|
25
27
|
containers:
|
26
|
-
- image: 602401143452.dkr.ecr.us-west-2.amazonaws.com/amazon-k8s-cni:
|
28
|
+
- image: 602401143452.dkr.ecr.us-west-2.amazonaws.com/amazon-k8s-cni:v1.4.1
|
27
29
|
imagePullPolicy: Always
|
28
30
|
ports:
|
29
31
|
- containerPort: 61678
|
@@ -0,0 +1,60 @@
|
|
1
|
+
---
|
2
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
3
|
+
# kubernetes versions before 1.8.0 should use rbac.authorization.k8s.io/v1beta1
|
4
|
+
kind: ClusterRole
|
5
|
+
metadata:
|
6
|
+
name: aws-node
|
7
|
+
rules:
|
8
|
+
- apiGroups:
|
9
|
+
- crd.k8s.amazonaws.com
|
10
|
+
resources:
|
11
|
+
- "*"
|
12
|
+
- namespaces
|
13
|
+
verbs:
|
14
|
+
- "*"
|
15
|
+
- apiGroups: [""]
|
16
|
+
resources:
|
17
|
+
- pods
|
18
|
+
- nodes
|
19
|
+
- namespaces
|
20
|
+
verbs: ["list", "watch", "get"]
|
21
|
+
- apiGroups: ["extensions"]
|
22
|
+
resources:
|
23
|
+
- daemonsets
|
24
|
+
verbs: ["list", "watch"]
|
25
|
+
---
|
26
|
+
apiVersion: v1
|
27
|
+
kind: ServiceAccount
|
28
|
+
metadata:
|
29
|
+
name: aws-node
|
30
|
+
namespace: kube-system
|
31
|
+
---
|
32
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
33
|
+
# kubernetes versions before 1.8.0 should use rbac.authorization.k8s.io/v1beta1
|
34
|
+
kind: ClusterRoleBinding
|
35
|
+
metadata:
|
36
|
+
name: aws-node
|
37
|
+
roleRef:
|
38
|
+
apiGroup: rbac.authorization.k8s.io
|
39
|
+
kind: ClusterRole
|
40
|
+
name: aws-node
|
41
|
+
subjects:
|
42
|
+
- kind: ServiceAccount
|
43
|
+
name: aws-node
|
44
|
+
namespace: kube-system
|
45
|
+
---
|
46
|
+
apiVersion: apiextensions.k8s.io/v1beta1
|
47
|
+
kind: CustomResourceDefinition
|
48
|
+
metadata:
|
49
|
+
name: eniconfigs.crd.k8s.amazonaws.com
|
50
|
+
spec:
|
51
|
+
scope: Cluster
|
52
|
+
group: crd.k8s.amazonaws.com
|
53
|
+
versions:
|
54
|
+
- name: v1alpha1
|
55
|
+
served: true
|
56
|
+
storage: true
|
57
|
+
names:
|
58
|
+
plural: eniconfigs
|
59
|
+
singular: eniconfig
|
60
|
+
kind: ENIConfig
|
@@ -8,7 +8,7 @@ metadata:
|
|
8
8
|
spec:
|
9
9
|
selector:
|
10
10
|
matchLabels:
|
11
|
-
|
11
|
+
k8s-app: dns-autoscaler
|
12
12
|
template:
|
13
13
|
metadata:
|
14
14
|
labels:
|
@@ -18,14 +18,14 @@ spec:
|
|
18
18
|
- name: autoscaler
|
19
19
|
image: k8s.gcr.io/cluster-proportional-autoscaler-amd64:1.1.1
|
20
20
|
resources:
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
requests:
|
22
|
+
cpu: 20m
|
23
|
+
memory: 10Mi
|
24
24
|
command:
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
25
|
+
- /cluster-proportional-autoscaler
|
26
|
+
- --namespace=kube-system
|
27
|
+
- --configmap=dns-autoscaler
|
28
|
+
- --target=Deployment/coredns
|
29
|
+
- --default-params={"linear":{"coresPerReplica":64,"nodesPerReplica":4,"min":3}}
|
30
|
+
- --logtostderr=true
|
31
|
+
- --v=2
|
@@ -1,7 +1,7 @@
|
|
1
|
-
apiVersion:
|
1
|
+
apiVersion: extensions/v1beta1
|
2
2
|
kind: DaemonSet
|
3
3
|
metadata:
|
4
|
-
name: nvidia-device-plugin-daemonset
|
4
|
+
name: nvidia-device-plugin-daemonset-1.12
|
5
5
|
namespace: kube-system
|
6
6
|
spec:
|
7
7
|
selector:
|
@@ -20,10 +20,9 @@ spec:
|
|
20
20
|
tolerations:
|
21
21
|
# Allow this pod to be rescheduled while the node is in "critical add-ons only" mode.
|
22
22
|
# This, along with the annotation above marks this pod as a critical add-on.
|
23
|
-
-
|
24
|
-
operator: Exists
|
23
|
+
- operator: Exists
|
25
24
|
containers:
|
26
|
-
- image: nvidia/k8s-device-plugin:1.
|
25
|
+
- image: nvidia/k8s-device-plugin:1.11
|
27
26
|
name: nvidia-device-plugin-ctr
|
28
27
|
securityContext:
|
29
28
|
allowPrivilegeEscalation: false
|
data/lib/eks_cli/cli.rb
CHANGED
@@ -37,7 +37,7 @@ module EksCli
|
|
37
37
|
option :subnet3_az, type: :string, desc: "availability zone for subnet 03"
|
38
38
|
option :open_ports, type: :array, default: [], desc: "open ports on cluster nodes (eg 22 for SSH access)"
|
39
39
|
option :enable_gpu, type: :boolean, default: false, desc: "installs nvidia device plugin daemon set"
|
40
|
-
option :create_default_storage_class, type: :boolean, default:
|
40
|
+
option :create_default_storage_class, type: :boolean, default: false, desc: "creates a default gp2 storage class"
|
41
41
|
option :create_dns_autoscaler, type: :boolean, default: true, desc: "creates dns autoscaler on the cluster"
|
42
42
|
option :warm_ip_target, type: :numeric, desc: "set a default custom warm ip target for CNI"
|
43
43
|
def create
|
@@ -103,6 +103,7 @@ module EksCli
|
|
103
103
|
option :min, type: :numeric, default: 1, desc: "minimum number of nodes on the nodegroup"
|
104
104
|
option :max, type: :numeric, default: 1, desc: "maximum number of nodes on the nodegroup"
|
105
105
|
option :desired, type: :numeric, default: 1, desc: "desired number of nodes on the nodegroup"
|
106
|
+
option :enable_docker_bridge, type: :boolean, default: false, desc: "pass --enable-docker-bridge true on bootstrap.sh (https://github.com/kubernetes/kubernetes/issues/40182))"
|
106
107
|
option :yes, type: :boolean, default: false, desc: "perform nodegroup creation"
|
107
108
|
def create_nodegroup
|
108
109
|
opts = options.dup
|
@@ -126,7 +127,7 @@ module EksCli
|
|
126
127
|
|
127
128
|
desc "delete-nodegroup", "deletes cloudformation stack for nodegroup"
|
128
129
|
option :all, type: :boolean, default: false, desc: "delete all nodegroups. can't be used with --name"
|
129
|
-
option :
|
130
|
+
option :group_name, type: :string, desc: "delete a specific nodegroup. can't be used with --all"
|
130
131
|
def delete_nodegroup
|
131
132
|
nodegroups.each(&:delete)
|
132
133
|
end
|
data/lib/eks_cli/config.rb
CHANGED
@@ -62,7 +62,7 @@ module EksCli
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def update_nodegroup(options)
|
65
|
-
options = options.slice("ami", "group_name", "instance_type", "subnets", "ssh_key_name", "volume_size", "taints", "min", "max", "desired")
|
65
|
+
options = options.slice("ami", "group_name", "instance_type", "subnets", "ssh_key_name", "volume_size", "taints", "min", "max", "enable_docker_bridge", "desired")
|
66
66
|
raise "bad nodegroup name #{options["group_name"]}" if options["group_name"] == nil || options["group_name"].empty?
|
67
67
|
write({groups: { options["group_name"] => options }}, :groups)
|
68
68
|
end
|
data/lib/eks_cli/k8s/client.rb
CHANGED
@@ -44,7 +44,8 @@ module EksCli
|
|
44
44
|
|
45
45
|
def update_cni
|
46
46
|
Log.info "updating cni"
|
47
|
-
Log.info self.update_daemon_set(resource_from_erb("k8s/
|
47
|
+
Log.info self.update_daemon_set(resource_from_erb("k8s/cni/ds.yaml.erb", {custom_warm_ip_target: config["warm_ip_target"]}))
|
48
|
+
Log.info `kubectl config use-context #{config["cluster_arn"]} && kubectl apply -f #{file_path("/k8s/cni/rest.yaml")}`
|
48
49
|
end
|
49
50
|
|
50
51
|
def wait_for_cluster
|
data/lib/eks_cli/nodegroup.rb
CHANGED
@@ -25,14 +25,14 @@ module EksCli
|
|
25
25
|
iam_policies: "NodeGroupIAMPolicies",
|
26
26
|
bootstrap_args: "BootstrapArguments"}
|
27
27
|
|
28
|
-
AMIS = {"us-west-2" => "ami-
|
29
|
-
"us-east-1" => "ami-
|
30
|
-
"us-east-2" => "ami-
|
28
|
+
AMIS = {"us-west-2" => "ami-0923e4b35a30a5f53",
|
29
|
+
"us-east-1" => "ami-0abcb9f9190e867ab",
|
30
|
+
"us-east-2" => "ami-04ea7cb66af82ae4a",
|
31
31
|
"us-west-1" => "ami-03612357ac9da2c7d"}
|
32
32
|
|
33
|
-
GPU_AMIS = {"us-west-2" => "ami-
|
34
|
-
"us-east-1" => "ami-
|
35
|
-
"us-east-2" => "ami-
|
33
|
+
GPU_AMIS = {"us-west-2" => "ami-0bebf2322fd52a42e",
|
34
|
+
"us-east-1" => "ami-0cb7959f92429410a",
|
35
|
+
"us-east-2" => "ami-0118b61dc2312dee2",
|
36
36
|
"us-west-1" => "ami-047637529a86c7237"}
|
37
37
|
|
38
38
|
EKS_IAM_POLICIES = %w{AmazonEKSWorkerNodePolicy
|
@@ -130,8 +130,12 @@ module EksCli
|
|
130
130
|
@group["bootstrap_args"] = bootstrap_args
|
131
131
|
@group["ami"] ||= default_ami
|
132
132
|
@group["iam_policies"] = iam_policies
|
133
|
-
@group.
|
134
|
-
|
133
|
+
@group.inject([]) do |params, (k, v)|
|
134
|
+
if param = build_param(k, v)
|
135
|
+
params << param
|
136
|
+
else
|
137
|
+
params
|
138
|
+
end
|
135
139
|
end
|
136
140
|
end
|
137
141
|
|
@@ -140,11 +144,13 @@ module EksCli
|
|
140
144
|
end
|
141
145
|
|
142
146
|
def bootstrap_args
|
143
|
-
|
147
|
+
kubelet_flags = "--node-labels=kubernetes.io/role=node,eks/node-group=#{@group["group_name"].downcase}"
|
144
148
|
if taints = @group["taints"]
|
145
|
-
|
149
|
+
kubelet_flags = "#{kubelet_flags} --register-with-taints=#{taints}"
|
146
150
|
end
|
147
|
-
"--kubelet-extra-args \"#{
|
151
|
+
flags = "--kubelet-extra-args \"#{kubelet_flags}\""
|
152
|
+
flags = "#{flags} --enable-docker-bridge true" if @group["enable_docker_bridge"]
|
153
|
+
flags
|
148
154
|
end
|
149
155
|
|
150
156
|
def add_bootstrap_args(group)
|
@@ -153,8 +159,10 @@ module EksCli
|
|
153
159
|
end
|
154
160
|
|
155
161
|
def build_param(k, v)
|
156
|
-
|
157
|
-
|
162
|
+
if key = T[k.to_sym]
|
163
|
+
{parameter_key: key,
|
164
|
+
parameter_value: v.to_s}
|
165
|
+
end
|
158
166
|
end
|
159
167
|
|
160
168
|
def default_ami
|
data/lib/eks_cli/version.rb
CHANGED
data/lib/eks_cli/vpc/client.rb
CHANGED
@@ -53,7 +53,7 @@ module EksCli
|
|
53
53
|
to_port: "-1",
|
54
54
|
user_id_group_pairs: [
|
55
55
|
{
|
56
|
-
description: "Accept all traffic from
|
56
|
+
description: "Accept all traffic from nodes on EKS cluster #{@cluster_name}",
|
57
57
|
group_id: config["nodes_sg_id"],
|
58
58
|
vpc_id: new_vpc.id,
|
59
59
|
vpc_peering_connection_id: peering_connection_id,
|
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.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erez Rabih
|
@@ -152,7 +152,8 @@ files:
|
|
152
152
|
- eks_cli.gemspec
|
153
153
|
- lib/assets/cf/eks_cluster.yaml.erb
|
154
154
|
- lib/assets/cf/nodegroup.yaml
|
155
|
-
- lib/assets/k8s/
|
155
|
+
- lib/assets/k8s/cni/ds.yaml.erb
|
156
|
+
- lib/assets/k8s/cni/rest.yaml
|
156
157
|
- lib/assets/k8s/default_storage_class.yaml
|
157
158
|
- lib/assets/k8s/dns_autoscaler.dep.yaml
|
158
159
|
- lib/assets/k8s/nvidia_device_plugin.yaml
|
@@ -192,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
193
|
- !ruby/object:Gem::Version
|
193
194
|
version: '0'
|
194
195
|
requirements: []
|
195
|
-
rubygems_version: 3.0.
|
196
|
+
rubygems_version: 3.0.3
|
196
197
|
signing_key:
|
197
198
|
specification_version: 4
|
198
199
|
summary: Make EKS great again!
|