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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a6712d3d7d38d8223373b57caa29162bbb65f47
4
- data.tar.gz: be68729009405ad954b74db051e40449cd86ee5e
3
+ metadata.gz: f5be6fcc878fec18884e01562e9e1470cfa58183
4
+ data.tar.gz: 8cdaaa2c3432730502855e5e27753efc8729e8ab
5
5
  SHA512:
6
- metadata.gz: 281186a4e016c5576fdfa53066ce821c90e6518286fc7bf8dccefc2f71bf2002261ea5d49e5b298b43d15295cc382dbe8a72d99f27d5ab3ae63c5049ab96bdb5
7
- data.tar.gz: 9e8d791bd97640a14630c95ce4e5ec805430c1bfac5c77bda0a969e72c4abeb02f6bd9b5f64e6452eb839cf6f7d300ce129a790627a673fe1440790e258aedd5
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.8.0'
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 - Released 2018-08-30'
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: t2.medium
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 NodeAutoScalingGroupMaxSize
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
@@ -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
@@ -21,6 +21,7 @@ module EksCli
21
21
 
22
22
  def config
23
23
  {name: @cluster_name,
24
+ version: Config[@cluster_name]["kubernetes_version"],
24
25
  role_arn: Config[@cluster_name]["eks_role_arn"],
25
26
  resources_vpc_config: {
26
27
  subnet_ids: Config[@cluster_name]["subnets"],
@@ -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
- ready = false
47
- while !ready
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
- Log.info "#{@cluster_name} is up and running!"
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
@@ -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-0f54a2f7d2e9c88b3",
29
- "us-east-1" => "ami-0a0b913ef3249b655",
30
- "us-east-2" => "ami-0958a76db2d150238",
31
- "us-west-1" => "ami-00c3b2d35bddd4f5c"}
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-08156e8fd65879a13",
34
- "us-east-1" => "ami-0c974dde3f6d691a1",
35
- "us-east-2" => "ami-089849e811ace242f",
36
- "us-west-1" => "ami-0c3479bcd739094f0"}
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
@@ -1,3 +1,3 @@
1
1
  module EksCli
2
- VERSION = "0.2.7"
2
+ VERSION = "0.2.8"
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.2.7
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.8.0
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.8.0
54
+ version: 1.9.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: aws-sdk-ec2
57
57
  requirement: !ruby/object:Gem::Requirement