Class: EksCli::Cli
- Inherits:
-
Thor
- Object
- Thor
- EksCli::Cli
- Defined in:
- lib/eks_cli/cli.rb
Constant Summary collapse
- RED =
31
Instance Method Summary collapse
- #add_iam_user(iam_arn) ⇒ Object
- #create ⇒ Object
- #create_default_storage_class ⇒ Object
- #create_dns_autoscaler ⇒ Object
- #create_nodegroup ⇒ Object
- #delete_cluster ⇒ Object
- #delete_nodegroup ⇒ Object
- #enable_gpu ⇒ Object
- #export_nodegroup ⇒ Object
- #scale_nodegroup ⇒ Object
- #set_docker_registry_credentials(username, password, email) ⇒ Object
- #set_iam_policies ⇒ Object
- #set_inter_vpc_networking(to_vpc_id, to_sg_id) ⇒ Object
- #show_config ⇒ Object
- #update_auth ⇒ Object
- #update_cluster_cni ⇒ Object
- #update_dns(hostname, k8s_service_name) ⇒ Object
- #version ⇒ Object
- #wait_for_cluster ⇒ Object
Instance Method Details
#add_iam_user(iam_arn) ⇒ Object
212 213 214 215 216 217 |
# File 'lib/eks_cli/cli.rb', line 212 def add_iam_user(iam_arn) with_context do Config[cluster_name].add_user(iam_arn, [:username], [:groups]) K8s::Auth.new(cluster_name).update if [:yes] end end |
#create ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/eks_cli/cli.rb', line 46 def create with_context do opts = {region: [:region], kubernetes_version: [:kubernetes_version], open_ports: [:open_ports], cidr: [:cidr], warm_ip_target: [:warm_ip_target] ? [:warm_ip_target].to_i : nil, subnet1_az: ([:subnet1_az] || Config::AZS[[:region]][0]), subnet2_az: ([:subnet2_az] || Config::AZS[[:region]][1]), subnet3_az: ([:subnet3_az] || Config::AZS[[:region]][2])} config.bootstrap(opts) cluster = EKS::Cluster.new(cluster_name).create cluster.update_kubeconfig wait_for_cluster enable_gpu if [:enable_gpu] create_default_storage_class if [:create_default_storage_class] create_dns_autoscaler if [:create_dns_autoscaler] update_cluster_cni if [:warm_ip_target] Log.info "cluster creation completed" end end |
#create_default_storage_class ⇒ Object
98 99 100 |
# File 'lib/eks_cli/cli.rb', line 98 def create_default_storage_class with_context { K8s::Client.new(cluster_name).create_default_storage_class } end |
#create_dns_autoscaler ⇒ Object
191 192 193 |
# File 'lib/eks_cli/cli.rb', line 191 def create_dns_autoscaler with_context { K8s::Client.new(cluster_name).create_dns_autoscaler } end |
#create_nodegroup ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/eks_cli/cli.rb', line 116 def create_nodegroup with_context do opts = .dup opts[:subnets] = opts[:subnets].map(&:to_i) Config[cluster_name].update_nodegroup(opts) unless opts[:all] if opts[:yes] cf_stacks = nodegroups.map {|ng| ng.create(wait_for_completion: false)} CloudFormation::Stack.await(cf_stacks) K8s::Auth.new(cluster_name).update end end end |
#delete_cluster ⇒ Object
149 150 151 152 153 154 155 156 157 |
# File 'lib/eks_cli/cli.rb', line 149 def delete_cluster answer = ask("you are about to delete EKS cluster #{bold(underline(colorize(cluster_name, RED)))} including nodegroups/elastigroups, elbs, kubernetes services and cloudformation stacks.\nare you 100% sure you want to proceed? (y/N)") if answer == "y" Log.info "deleting cluster #{cluster_name}" with_context { EKS::Cluster.new(cluster_name).delete } else Log.info "aborted" end end |
#delete_nodegroup ⇒ Object
162 163 164 |
# File 'lib/eks_cli/cli.rb', line 162 def delete_nodegroup with_context { nodegroups.each(&:delete) } end |
#enable_gpu ⇒ Object
88 89 90 |
# File 'lib/eks_cli/cli.rb', line 88 def enable_gpu with_context { K8s::Client.new(cluster_name).enable_gpu } end |
#export_nodegroup ⇒ Object
204 205 206 |
# File 'lib/eks_cli/cli.rb', line 204 def export_nodegroup with_context { nodegroups.each {|ng| ng.export_to_spotinst([:exact_instance_type]) } } end |
#scale_nodegroup ⇒ Object
137 138 139 140 141 142 143 144 145 146 |
# File 'lib/eks_cli/cli.rb', line 137 def scale_nodegroup with_context do nodegroups.each do |ng| min = ([:min] || config.for_group(ng.name)["min"]).to_i max = ([:max] || config.for_group(ng.name)["max"]).to_i ng.scale(min, max, [:asg], [:spotinst]) Config[cluster_name].update_nodegroup(.slice("min", "max").merge({"group_name" => ng.name})) if [:update] end end end |
#set_docker_registry_credentials(username, password, email) ⇒ Object
93 94 95 |
# File 'lib/eks_cli/cli.rb', line 93 def set_docker_registry_credentials(username, password, email) with_context { K8s::Client.new(cluster_name).set_docker_registry_credentials(username, password, email) } end |
#set_iam_policies ⇒ Object
173 174 175 |
# File 'lib/eks_cli/cli.rb', line 173 def set_iam_policies with_context { Config[cluster_name].set_iam_policies([:policies]) } end |
#set_inter_vpc_networking(to_vpc_id, to_sg_id) ⇒ Object
186 187 188 |
# File 'lib/eks_cli/cli.rb', line 186 def set_inter_vpc_networking(to_vpc_id, to_sg_id) with_context { VPC::Client.new(cluster_name).set_inter_vpc_networking(to_vpc_id, to_sg_id) } end |
#show_config ⇒ Object
72 73 74 75 76 77 78 79 80 |
# File 'lib/eks_cli/cli.rb', line 72 def show_config with_context do if [:group_name] puts JSON.pretty_generate(config.for_group([:group_name])) else puts JSON.pretty_generate(config.read_from_disk) end end end |
#update_auth ⇒ Object
167 168 169 |
# File 'lib/eks_cli/cli.rb', line 167 def update_auth with_context { K8s::Auth.new(cluster_name).update } end |
#update_cluster_cni ⇒ Object
83 84 85 |
# File 'lib/eks_cli/cli.rb', line 83 def update_cluster_cni with_context { K8s::Client.new(cluster_name).update_cni } end |
#update_dns(hostname, k8s_service_name) ⇒ Object
181 182 183 |
# File 'lib/eks_cli/cli.rb', line 181 def update_dns(hostname, k8s_service_name) with_context { Route53::Client.new(cluster_name).update_dns(hostname, k8s_service_name, [:namespace], [:route53_hosted_zone_id], [:elb_hosted_zone_id]) } end |
#version ⇒ Object
221 222 223 |
# File 'lib/eks_cli/cli.rb', line 221 def version puts EksCli::VERSION end |
#wait_for_cluster ⇒ Object
196 197 198 |
# File 'lib/eks_cli/cli.rb', line 196 def wait_for_cluster with_context { K8s::Client.new(cluster_name).wait_for_cluster } end |