eks_cli 0.1.0 → 0.1.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: 480dc6f8255f768201d707a1a7d6dc2fcc23fbca
4
- data.tar.gz: 0a14e99747c6f6f7c86de4c17693f4c750496c6e
3
+ metadata.gz: 78d1ac1a9a28a095b8364a99e2c6025bbdf82aab
4
+ data.tar.gz: cd3872bd0c7b043af27f5158a6459f5b3c168026
5
5
  SHA512:
6
- metadata.gz: 09300a05da8fc3234a4233cecb6e888f415188525459f261332eaf300133241fa82909402c2daa9526766685e3f7f9780478c428359db45cdb09abdad5bd76a4
7
- data.tar.gz: 50169c1923c45b6611bd6b120127d715979806c335d394ef577296c1389f7efbf02a04e47410b0afeab5c23b2d7124770b24d8b7be641334b2350bc51be86016
6
+ metadata.gz: 4286725d3526103ed2373364391b2f759ea2d7b0bf74768b42f8c67796b7332d211d8c9382162edd689225fad2b8d369088d1bf73ccb5cdce2f54b7ece5bb648
7
+ data.tar.gz: 132517e6b5e8cb935faad6da978d5f52a2ac9216b367c792862be202c2a7f12ef179daa1c9cb4c0b847b59f33afc9d659ed2f01c15de4ad0de54b311b99d7880
data/.gitignore CHANGED
@@ -1 +1 @@
1
- eks_cli-0.1.0.gem
1
+ *.gem
data/README.md CHANGED
@@ -2,18 +2,33 @@
2
2
 
3
3
  EKS cluster bootstrap with batteries included
4
4
 
5
+ ## Highlights
6
+
7
+ * Supports creation of various node groups of different types with communication between them
8
+ * Taint and label your nodegroups
9
+ * Manage IAM policies that will be attached to your nodes
10
+ * Easily configure docker repository secrets to allow pulling private images
11
+ * Manage Route53 DNS records to point at your Kubernetes services
12
+ * Even more...
13
+
5
14
  ## Usage
6
15
 
7
16
  ```
8
17
  $ gem install eks_cli
9
- $ eks bootstrap us-west-2 --cluster-name=My-EKS-Cluster
10
- $ eks create-cluster-vpc --cluster-name=My-EKS-Cluster
11
- $ eks create-cluster-security-group --cluster-name My-EKS-Cluster --open-ports=22
18
+ $ eks create us-west-2 --cluster-name=My-EKS-Cluster
12
19
  $ eks create-nodegroup --cluster-name My-EKS-Cluster --group-name nodes --ssh-key-name my-ssh-key --min 1 --max 3
13
20
  $ eks create-nodegroup --cluster-name My-EKS-Cluster --group-name other-nodes --ssh-key-name my-ssh-key --min 3 --max 3 --instance-type m5.2xlarge
14
21
  $ eks create-nodegroup --all --cluster-name My-EKS-Cluster --yes
15
22
  ```
16
23
 
24
+ You can type `eks` in your shell to get the full synopsys of available commands
25
+
26
+ ## Prerequisite
27
+
28
+ 1. Ruby
29
+ 2. `kubectl` with version > 10 on your `PATH`
30
+ 3. `aws-iam-authenticator` on your `PATH`
31
+
17
32
  ## Extra Stuff
18
33
 
19
34
  ### Setting IAM policies to be attached to EKS nodes
@@ -41,7 +56,7 @@ Installs the nvidia device plugin required to have your GPUs exposed
41
56
 
42
57
  ### Adding Dockerhub Secrets
43
58
 
44
- `$ eks set-docker-registry-credentials <dockerhub-user> <dockerhub-email> <dockerhub-password> --cluster-name My-EKS-Cluster`
59
+ `$ eks set-docker-registry-credentials <dockerhub-user> <dockerhub-password> <dockerhub-email> --cluster-name My-EKS-Cluster`
45
60
 
46
61
  Adds your dockerhub credentials as a secret and attaches it to the default serviceaccount imagePullSecrets
47
62
 
@@ -50,3 +65,18 @@ Adds your dockerhub credentials as a secret and attaches it to the default servi
50
65
  `$ eks create-default-storage-class --cluster-name My-EKS-Cluster`
51
66
 
52
67
  Creates a standard gp2 default storage class named gp2
68
+
69
+ ### Connecting to an existing VPC
70
+
71
+ `$ eks set-inter-vpc-networking VPC_ID SG_ID`
72
+
73
+ Assuming you have some resources shared on another VPC (an RDS instance for example) this command allows you to interact with from the new EKS cluster it by:
74
+
75
+ 1. Creating and accepting a VPC peering connection from you EKS cluster VPC to the old VPC
76
+ 2. Setting route tables on both directions to allow communication
77
+ 3. Adding an ingress role to SG_ID to accept all communication from your new cluster nodes.
78
+
79
+
80
+ ## Contributing
81
+
82
+ Is more than welcome! ;)
@@ -1,10 +1,11 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path("../lib", __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'eks_cli/version'
4
5
 
5
6
  Gem::Specification.new do |s|
6
7
  s.name = 'eks_cli'
7
- s.version = '0.1.0'
8
+ s.version = EksCli::VERSION
8
9
  s.date = '2018-11-18'
9
10
  s.summary = "Make EKS great again!"
10
11
  s.description = "A utility to manage and create EKS (Kubernetes) cluster on Amazon Web Services"
@@ -1,4 +1,5 @@
1
1
  require 'thor'
2
+ require 'version'
2
3
 
3
4
  autoload :JSON, 'json'
4
5
 
@@ -34,10 +35,20 @@ module EksCli
34
35
 
35
36
  class_option :cluster_name, required: true, aliases: :c
36
37
 
37
- desc "bootstrap REGION", "bootstrap cluster configuration"
38
- def bootstrap(region)
38
+ desc "create REGION", "creates a new EKS cluster"
39
+ option :open_ports, type: :array, default: [], desc: "open ports on cluster nodes (eg 22 for SSH access)"
40
+ def create(region)
41
+ Config[cluster_name].bootstrap({region: region})
42
+ create_eks_role
43
+ create_cluster_vpc
44
+ create_eks_cluster
45
+ create_cluster_security_group
46
+ end
47
+
48
+ desc "create-eks-role", "creates an IAM role for usage by EKS"
49
+ def create_eks_role
39
50
  role = IAM::Client.new(cluster_name).create_eks_role
40
- Config[cluster_name].bootstrap({region: region, eks_role_arn: role.arn})
51
+ Config[cluster_name].write({eks_role_arn: role.arn})
41
52
  end
42
53
 
43
54
  desc "show-config", "print cluster configuration"
@@ -146,6 +157,12 @@ module EksCli
146
157
  VPC::Client.new(cluster_name).set_inter_vpc_networking(to_vpc_id, to_sg_id)
147
158
  end
148
159
 
160
+ disable_required_check! :version
161
+ desc "version", "prints eks_cli version"
162
+ def version
163
+ puts EksCli::VERSION
164
+ end
165
+
149
166
  no_commands do
150
167
  def cluster_name; options[:cluster_name]; end
151
168
 
@@ -0,0 +1,3 @@
1
+ module EksCli
2
+ VERSION = "0.1.1"
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.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erez Rabih
@@ -155,6 +155,7 @@ files:
155
155
  - lib/eks_cli/log.rb
156
156
  - lib/eks_cli/nodegroup.rb
157
157
  - lib/eks_cli/route53/client.rb
158
+ - lib/eks_cli/version.rb
158
159
  - lib/eks_cli/vpc/client.rb
159
160
  homepage: https://github.com/nanit/eks_cli
160
161
  licenses: