eks_cli 0.1.9 → 0.2.1

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: d62ee30623f0fd61827904b8f98c59a67b58fc40
4
- data.tar.gz: 6eaa89a740fb4924ef581d31c30b0713b5aa1b52
3
+ metadata.gz: 1e852fd7cab1e027499c5b73c8dbcbba706cda3b
4
+ data.tar.gz: 3f4f32cf77a09ec17671f98d339535416dbe8e51
5
5
  SHA512:
6
- metadata.gz: 9a8de458722606f0b45d0c8fdef430a197d4e7a3ea328d7150b6adf02d06cc1e2e6bd4937393f3496d5910ac2527f026511560b34de4eb69b057370e4ccc086a
7
- data.tar.gz: 4ffd3da0724d1a01260df41f363692f8b082aa807d9348a3ae8e5cf65544a6bcb04ca02c9fa48127a26bc986b30c463362d4bf266443e2fcbc353be9baa9b6d9
6
+ metadata.gz: 15532629de7a263da29b1ddf239470597cc51d87c66d8dcfc7630fc23a4a2eb9643ac3df8f27f15f9681d2c8f5e3340ae4f4632f38f58214784e2eef4f341bab
7
+ data.tar.gz: e9a5666560c2c1d9c21f2e7ecd92f57cf2b792d5efa4cd28e6760b7eedfa262a0e4ad7a963562351ea0e9c77534c1647b6b4e75e294420bc4359298f91022737
data/README.md CHANGED
@@ -17,8 +17,8 @@ EKS cluster bootstrap with batteries included
17
17
  ## Usage
18
18
 
19
19
  ```
20
- $ gem install eks_cli -v 0.1.9
21
- $ eks create us-west-2 --cluster-name My-EKS-Cluster
20
+ $ gem install eks_cli -v 0.2.1
21
+ $ eks create --cluster-name My-EKS-Cluster
22
22
  $ eks create-nodegroup --cluster-name My-EKS-Cluster --group-name nodes --ssh-key-name <my-ssh-key> --yes
23
23
  ```
24
24
 
data/eks_cli.gemspec CHANGED
@@ -29,5 +29,6 @@ Gem::Specification.new do |s|
29
29
  s.add_dependency 'activesupport', '5.2.1.1'
30
30
  s.add_dependency 'kubeclient', '4.1.0'
31
31
  s.add_dependency 'httparty', '0.16.3'
32
+ s.add_dependency 'ipaddress', '0.8.3'
32
33
  end
33
34
 
data/lib/eks_cli/cli.rb CHANGED
@@ -35,13 +35,15 @@ module EksCli
35
35
 
36
36
  class_option :cluster_name, required: true, aliases: :c
37
37
 
38
- desc "create REGION", "creates a new EKS cluster"
38
+ desc "create", "creates a new EKS cluster"
39
+ option :cidr, type: :string, default: "192.168.0.0/16", desc: "CIRD block for cluster VPC"
40
+ option :region, type: :string, default: "us-west-2", desc: "AWS region for EKS cluster"
39
41
  option :open_ports, type: :array, default: [], desc: "open ports on cluster nodes (eg 22 for SSH access)"
40
42
  option :enable_gpu, type: :boolean, default: false, desc: "installs nvidia device plugin daemon set"
41
43
  option :create_default_storage_class, type: :boolean, default: true, desc: "creates a default gp2 storage class"
42
44
  option :create_dns_autoscaler, type: :boolean, default: true, desc: "creates dns autoscaler on the cluster"
43
- def create(region)
44
- Config[cluster_name].bootstrap({region: region})
45
+ def create
46
+ Config[cluster_name].bootstrap({region: options[:region]})
45
47
  create_eks_role
46
48
  create_cluster_vpc
47
49
  create_eks_cluster
@@ -70,8 +72,10 @@ module EksCli
70
72
  end
71
73
 
72
74
  desc "create-cluster-vpc", "creates a vpc according to aws cloudformation template"
75
+ option :cidr, type: :string, default: "192.168.0.0/16", desc: "CIRD block for cluster VPC"
73
76
  def create_cluster_vpc
74
- cfg = CloudFormation::VPC.create(cluster_name)
77
+ Config[cluster_name].write({cidr: options[:cidr]}, :config)
78
+ cfg = CloudFormation::VPC.new(cluster_name).create
75
79
  Config[cluster_name].write(cfg)
76
80
  end
77
81
 
@@ -1,13 +1,21 @@
1
1
  require 'cloudformation/stack'
2
+ require 'config'
3
+ require 'ipaddress'
2
4
  require 'log'
3
5
 
4
6
  module EksCli
5
7
  module CloudFormation
6
8
  class VPC
7
9
 
8
- def self.create(cluster_name)
9
- Log.info "creating VPC stack for #{cluster_name}"
10
- s = Stack.create(cluster_name, config(cluster_name))
10
+ CF_TEMPLATE_URL = "https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2018-08-30/amazon-eks-vpc-sample.yaml"
11
+
12
+ def initialize(cluster_name)
13
+ @cluster_name = cluster_name
14
+ end
15
+
16
+ def create
17
+ Log.info "creating VPC stack for #{@cluster_name}"
18
+ s = Stack.create(@cluster_name, cf_config)
11
19
  Stack.await([s])
12
20
  s.reload
13
21
  puts "Outputs are:
@@ -22,10 +30,39 @@ module EksCli
22
30
 
23
31
  private
24
32
 
25
- def self.config(cluster_name)
26
- {stack_name: "EKS-VPC-#{cluster_name}",
27
- template_url: "https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2018-08-30/amazon-eks-vpc-sample.yaml",
28
- tags: [{key: "eks-cluster", value: cluster_name.to_s}]}
33
+ def cf_config
34
+ {stack_name: stack_name,
35
+ template_url: CF_TEMPLATE_URL,
36
+ parameters: build_params,
37
+ tags: tags}
38
+ end
39
+
40
+ def stack_name
41
+ "#{@cluster_name}-EKS-VPC"
42
+ end
43
+
44
+ def tags
45
+ [{key: "eks-cluster", value: @cluster_name.to_s}]
46
+ end
47
+
48
+ def build_params
49
+ subnets = IPAddress::IPv4.new(cidr).split(3).map(&:to_string)
50
+
51
+ {"VpcBlock" => cidr,
52
+ "Subnet01Block" => subnets[0],
53
+ "Subnet02Block" => subnets[1],
54
+ "Subnet03Block" => subnets[2]}.map do |(k,v)|
55
+ {parameter_key: k, parameter_value: v}
56
+ end
57
+
58
+ end
59
+
60
+ def cidr
61
+ @cidr ||= config["cidr"]
62
+ end
63
+
64
+ def config
65
+ @config ||= Config[@cluster_name]
29
66
  end
30
67
 
31
68
  end
@@ -113,7 +113,7 @@ module EksCli
113
113
  end
114
114
 
115
115
  def stack_name
116
- "#{@group["cluster_name"]}-Workers-#{@group["group_name"]}"
116
+ "#{@group["cluster_name"]}-NodeGroup-#{@group["group_name"]}"
117
117
  end
118
118
 
119
119
  def build_params
@@ -1,3 +1,3 @@
1
1
  module EksCli
2
- VERSION = "0.1.9"
2
+ VERSION = "0.2.1"
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.9
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erez Rabih
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
138
  version: 0.16.3
139
+ - !ruby/object:Gem::Dependency
140
+ name: ipaddress
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '='
144
+ - !ruby/object:Gem::Version
145
+ version: 0.8.3
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '='
151
+ - !ruby/object:Gem::Version
152
+ version: 0.8.3
139
153
  description: A utility to manage and create EKS (Kubernetes) cluster on Amazon Web
140
154
  Services
141
155
  email: erez.rabih@gmail.com