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 +4 -4
- data/README.md +2 -2
- data/eks_cli.gemspec +1 -0
- data/lib/eks_cli/cli.rb +8 -4
- data/lib/eks_cli/cloudformation/vpc.rb +44 -7
- data/lib/eks_cli/nodegroup.rb +1 -1
- data/lib/eks_cli/version.rb +1 -1
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e852fd7cab1e027499c5b73c8dbcbba706cda3b
|
4
|
+
data.tar.gz: 3f4f32cf77a09ec17671f98d339535416dbe8e51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
21
|
-
$ eks create
|
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
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
|
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
|
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
|
-
|
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
|
-
|
9
|
-
|
10
|
-
|
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
|
26
|
-
{stack_name:
|
27
|
-
template_url:
|
28
|
-
|
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
|
data/lib/eks_cli/nodegroup.rb
CHANGED
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.1
|
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
|