eks_cli 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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!
|