eks_cli 0.2.7 → 0.2.8
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/eks_cli.gemspec +1 -1
- data/lib/assets/nodegroup_cf_template.yaml +41 -5
- data/lib/eks_cli/cli.rb +3 -1
- data/lib/eks_cli/config.rb +1 -1
- data/lib/eks_cli/eks/cluster.rb +1 -0
- data/lib/eks_cli/k8s/client.rb +4 -4
- data/lib/eks_cli/nodegroup.rb +9 -8
- data/lib/eks_cli/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5be6fcc878fec18884e01562e9e1470cfa58183
|
4
|
+
data.tar.gz: 8cdaaa2c3432730502855e5e27753efc8729e8ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee939489d068d59e5379a7ab9d52916e7ec4f129a8a2242fc702ef713772c04c7a490a3382641114701059a163aec7be68c8d3baec15f2ea178c8e178ba0866f
|
7
|
+
data.tar.gz: 16a4702bc98dd7cad06ed2ed034c4bc0ca05198b569a55a561de5429d7002ae9ece4f5e1cf3d50716fdd41c8ae65b6c957a41e75fb4f7c0351589a959773c574
|
data/eks_cli.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.require_paths = ["lib"]
|
23
23
|
s.add_dependency 'thor', '0.20.3'
|
24
24
|
s.add_dependency 'aws-sdk-iam', '1.12.0'
|
25
|
-
s.add_dependency 'aws-sdk-eks', '1.
|
25
|
+
s.add_dependency 'aws-sdk-eks', '1.9.0'
|
26
26
|
s.add_dependency 'aws-sdk-ec2', '1.62.0'
|
27
27
|
s.add_dependency 'aws-sdk-cloudformation', '1.13.0'
|
28
28
|
s.add_dependency 'aws-sdk-route53', '1.16.0'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
---
|
2
2
|
AWSTemplateFormatVersion: '2010-09-09'
|
3
|
-
Description: 'Amazon EKS - Node Group
|
3
|
+
Description: 'Amazon EKS - Node Group'
|
4
4
|
|
5
5
|
Parameters:
|
6
6
|
|
@@ -15,13 +15,20 @@ Parameters:
|
|
15
15
|
NodeInstanceType:
|
16
16
|
Description: EC2 instance type for the node instances
|
17
17
|
Type: String
|
18
|
-
Default:
|
18
|
+
Default: t3.medium
|
19
19
|
AllowedValues:
|
20
20
|
- t2.small
|
21
21
|
- t2.medium
|
22
22
|
- t2.large
|
23
23
|
- t2.xlarge
|
24
24
|
- t2.2xlarge
|
25
|
+
- t3.nano
|
26
|
+
- t3.micro
|
27
|
+
- t3.small
|
28
|
+
- t3.medium
|
29
|
+
- t3.large
|
30
|
+
- t3.xlarge
|
31
|
+
- t3.2xlarge
|
25
32
|
- m3.medium
|
26
33
|
- m3.large
|
27
34
|
- m3.xlarge
|
@@ -72,6 +79,24 @@ Parameters:
|
|
72
79
|
- p3.2xlarge
|
73
80
|
- p3.8xlarge
|
74
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
|
75
100
|
ConstraintDescription: Must be a valid EC2 instance type
|
76
101
|
|
77
102
|
NodeAutoScalingGroupMinSize:
|
@@ -81,7 +106,12 @@ Parameters:
|
|
81
106
|
|
82
107
|
NodeAutoScalingGroupMaxSize:
|
83
108
|
Type: Number
|
84
|
-
Description: Maximum size of Node Group ASG.
|
109
|
+
Description: Maximum size of Node Group ASG. Set to at least 1 greater than NodeAutoScalingGroupDesiredCapacity.
|
110
|
+
Default: 4
|
111
|
+
|
112
|
+
NodeAutoScalingGroupDesiredCapacity:
|
113
|
+
Type: Number
|
114
|
+
Description: Desired capacity of Node Group ASG.
|
85
115
|
Default: 3
|
86
116
|
|
87
117
|
NodeVolumeSize:
|
@@ -137,6 +167,7 @@ Metadata:
|
|
137
167
|
Parameters:
|
138
168
|
- NodeGroupName
|
139
169
|
- NodeAutoScalingGroupMinSize
|
170
|
+
- NodeAutoScalingGroupDesiredCapacity
|
140
171
|
- NodeAutoScalingGroupMaxSize
|
141
172
|
- NodeInstanceType
|
142
173
|
- NodeImageId
|
@@ -144,6 +175,7 @@ Metadata:
|
|
144
175
|
- KeyName
|
145
176
|
- BootstrapArguments
|
146
177
|
- NodeGroupIAMPolicies
|
178
|
+
- ClusterSecurityGroup
|
147
179
|
-
|
148
180
|
Label:
|
149
181
|
default: "Worker Network Configuration"
|
@@ -255,7 +287,7 @@ Resources:
|
|
255
287
|
NodeGroup:
|
256
288
|
Type: AWS::AutoScaling::AutoScalingGroup
|
257
289
|
Properties:
|
258
|
-
DesiredCapacity: !Ref
|
290
|
+
DesiredCapacity: !Ref NodeAutoScalingGroupDesiredCapacity
|
259
291
|
LaunchConfigurationName: !Ref NodeLaunchConfig
|
260
292
|
MinSize: !Ref NodeAutoScalingGroupMinSize
|
261
293
|
MaxSize: !Ref NodeAutoScalingGroupMaxSize
|
@@ -270,8 +302,9 @@ Resources:
|
|
270
302
|
PropagateAtLaunch: 'true'
|
271
303
|
UpdatePolicy:
|
272
304
|
AutoScalingRollingUpdate:
|
273
|
-
MinInstancesInService: '1'
|
274
305
|
MaxBatchSize: '1'
|
306
|
+
MinInstancesInService: !Ref NodeAutoScalingGroupDesiredCapacity
|
307
|
+
PauseTime: 'PT5M'
|
275
308
|
|
276
309
|
NodeLaunchConfig:
|
277
310
|
Type: AWS::AutoScaling::LaunchConfiguration
|
@@ -305,4 +338,7 @@ Outputs:
|
|
305
338
|
NodeInstanceRole:
|
306
339
|
Description: The node instance role
|
307
340
|
Value: !GetAtt NodeInstanceRole.Arn
|
341
|
+
NodeSecurityGroup:
|
342
|
+
Description: The security group for the node group
|
343
|
+
Value: !Ref NodeSecurityGroup
|
308
344
|
|
data/lib/eks_cli/cli.rb
CHANGED
@@ -37,6 +37,7 @@ module EksCli
|
|
37
37
|
|
38
38
|
desc "create", "creates a new EKS cluster"
|
39
39
|
option :region, type: :string, default: "us-west-2", desc: "AWS region for EKS cluster"
|
40
|
+
option :kubernetes_version, type: :string, default: "1.10", desc: "EKS control plane version"
|
40
41
|
option :cidr, type: :string, default: "192.168.0.0/16", desc: "CIRD block for cluster VPC"
|
41
42
|
option :subnet1_az, type: :string, desc: "availability zone for subnet 01"
|
42
43
|
option :subnet2_az, type: :string, desc: "availability zone for subnet 02"
|
@@ -46,7 +47,7 @@ module EksCli
|
|
46
47
|
option :create_default_storage_class, type: :boolean, default: true, desc: "creates a default gp2 storage class"
|
47
48
|
option :create_dns_autoscaler, type: :boolean, default: true, desc: "creates dns autoscaler on the cluster"
|
48
49
|
def create
|
49
|
-
Config[cluster_name].bootstrap({region: options[:region]})
|
50
|
+
Config[cluster_name].bootstrap({region: options[:region], kubernetes_version: options[:kubernetes_version]})
|
50
51
|
create_eks_role
|
51
52
|
create_cluster_vpc
|
52
53
|
create_eks_cluster
|
@@ -123,6 +124,7 @@ module EksCli
|
|
123
124
|
option :volume_size, type: :numeric, default: 100, desc: "disk size for node group in GB"
|
124
125
|
option :min, type: :numeric, default: 1, desc: "minimum number of nodes on the nodegroup"
|
125
126
|
option :max, type: :numeric, default: 1, desc: "maximum number of nodes on the nodegroup"
|
127
|
+
option :desired, type: :numeric, default: 1, desc: "desired number of nodes on the nodegroup"
|
126
128
|
option :yes, type: :boolean, default: false, desc: "perform nodegroup creation"
|
127
129
|
def create_nodegroup
|
128
130
|
opts = options.dup
|
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")
|
65
|
+
options = options.slice("ami", "group_name", "instance_type", "subnets", "ssh_key_name", "volume_size", "taints", "min", "max", "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/eks/cluster.rb
CHANGED
data/lib/eks_cli/k8s/client.rb
CHANGED
@@ -43,18 +43,18 @@ module EksCli
|
|
43
43
|
|
44
44
|
def wait_for_cluster
|
45
45
|
Log.info "waiting for cluster #{@cluster_name} to respond"
|
46
|
-
|
47
|
-
while
|
46
|
+
successful_calls = 0
|
47
|
+
while successful_calls < 3
|
48
48
|
begin
|
49
49
|
res = self.get_services
|
50
50
|
if res.count > 0
|
51
|
-
|
52
|
-
ready = true
|
51
|
+
successful_calls += 1
|
53
52
|
end
|
54
53
|
rescue Kubeclient::HttpError
|
55
54
|
Log.info "couldn't connect to server, retrying..."
|
56
55
|
end
|
57
56
|
end
|
57
|
+
Log.info "#{@cluster_name} is up and running!"
|
58
58
|
end
|
59
59
|
|
60
60
|
private
|
data/lib/eks_cli/nodegroup.rb
CHANGED
@@ -15,6 +15,7 @@ module EksCli
|
|
15
15
|
nodes_sg_id: "ClusterSecurityGroup",
|
16
16
|
min: "NodeAutoScalingGroupMinSize",
|
17
17
|
max: "NodeAutoScalingGroupMaxSize",
|
18
|
+
desired: "NodeAutoScalingGroupDesiredCapacity",
|
18
19
|
instance_type: "NodeInstanceType",
|
19
20
|
ami: "NodeImageId",
|
20
21
|
volume_size: "NodeVolumeSize",
|
@@ -25,15 +26,15 @@ module EksCli
|
|
25
26
|
iam_policies: "NodeGroupIAMPolicies",
|
26
27
|
bootstrap_args: "BootstrapArguments"}
|
27
28
|
|
28
|
-
AMIS = {"us-west-2" => "ami-
|
29
|
-
"us-east-1" => "ami-
|
30
|
-
"us-east-2" => "ami-
|
31
|
-
"us-west-1" => "ami-
|
29
|
+
AMIS = {"us-west-2" => "ami-07af9511082779ae7",
|
30
|
+
"us-east-1" => "ami-027792c3cc6de7b5b",
|
31
|
+
"us-east-2" => "ami-036130f4127a367f7",
|
32
|
+
"us-west-1" => "ami-03612357ac9da2c7d"}
|
32
33
|
|
33
|
-
GPU_AMIS = {"us-west-2" => "ami-
|
34
|
-
"us-east-1" => "ami-
|
35
|
-
"us-east-2" => "ami-
|
36
|
-
"us-west-1" => "ami-
|
34
|
+
GPU_AMIS = {"us-west-2" => "ami-08754f7ac73185331",
|
35
|
+
"us-east-1" => "ami-03c499c67bc65c089",
|
36
|
+
"us-east-2" => "ami-081210a2fd7f3c487",
|
37
|
+
"us-west-1" => "ami-047637529a86c7237"}
|
37
38
|
|
38
39
|
EKS_IAM_POLICIES = %w{AmazonEKSWorkerNodePolicy
|
39
40
|
AmazonEKS_CNI_Policy
|
data/lib/eks_cli/version.rb
CHANGED
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.2.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erez Rabih
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.9.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.9.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: aws-sdk-ec2
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|