class EksCli::EKS::Cluster

Public Class Methods

new(cluster_name) click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 12
def initialize(cluster_name)
  @cluster_name = cluster_name
end

Public Instance Methods

config() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 31
def config; Config[@cluster_name]; end
create() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 16
def create
  Log.info "creating cluster #{@cluster_name}"
  cf_stack_outputs = CloudFormation::EKS.new(@cluster_name).create
  config.write(cf_stack_outputs)
  self
end
delete() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 23
def delete
  delete_vpc_peering
  delete_services
  delete_nodegroups
  delete_cf_stack
  delete_config
end
services() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 38
def services
  k8s_client.get_services(namespace: "default").select {|s| s[:spec][:type] == "LoadBalancer"}
end
update_kubeconfig() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 33
def update_kubeconfig
  Log.info "updating kubeconfig for cluster #{@cluster_name}"
  Log.info `aws eks update-kubeconfig --name=#{@cluster_name} --region=#{config["region"]}`
end

Private Instance Methods

delete_cf_stack() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 48
def delete_cf_stack
  CloudFormation::EKS.new(@cluster_name).delete
end
delete_config() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 44
def delete_config
  config.delete
end
delete_nodegroups() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 75
def delete_nodegroups
  nodegroups.keys.each {|n| NodeGroup.new(@cluster_name, n).delete}
end
delete_services() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 60
def delete_services
  services.each do |s|
    name = s[:metadata][:name]
    elb = s[:status][:loadBalancer][:ingress].first[:hostname].split("-").first
    Log.info "deleting ELB #{elb}"
    elb_client.delete_load_balancer(load_balancer_name: elb)
    Log.info "deleting service #{name}"
    k8s_client.delete_service(name, "default")
  end
end
delete_vpc_peering() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 52
def delete_vpc_peering
  VPC::Client.new(@cluster_name).delete_vpc_peering_connection
end
elb_client() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 79
def elb_client
  @elb_client ||= Aws::ElasticLoadBalancing::Client.new(region: config["region"])
end
k8s_client() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 56
def k8s_client
  @k8s_client ||= EksCli::K8s::Client.new(@cluster_name)
end
nodegroups() click to toggle source
# File lib/eks_cli/eks/cluster.rb, line 71
def nodegroups
  config["groups"] || {}
end