eks_cli 0.1.9 → 0.2.1
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/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
|