class EksCli::VPC::Client
Public Class Methods
new(cluster_name)
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 8 def initialize(cluster_name) @cluster_name = cluster_name end
Public Instance Methods
allow_networking(old_vpc_sg_id, peering_connection_id)
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 55 def allow_networking(old_vpc_sg_id, peering_connection_id) Log.info "allowing incoming traffic to sg #{old_vpc_sg_id} from #{config["nodes_sg_id"]} on vpc #{new_vpc.id}" old_sg = Aws::EC2::SecurityGroup.new(old_vpc_sg_id, client: client) res = old_sg.authorize_ingress( ip_permissions: [ { from_port: "-1", ip_protocol: "-1", to_port: "-1", user_id_group_pairs: [ { description: "Accept all traffic from nodes on EKS cluster #{@cluster_name}", group_id: config["nodes_sg_id"], vpc_id: new_vpc.id, vpc_peering_connection_id: peering_connection_id, }, ], }, ] ) Log.info "done setting networking (#{res})" end
client()
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 107 def client @client ||= Aws::EC2::Client.new(region: config["region"]) end
config()
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 103 def config @config ||= Config[@cluster_name] end
create_vpc_peering_connection()
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 21 def create_vpc_peering_connection Log.info "creating VPC peering request between #{new_vpc.id} and #{old_vpc.id}" pcr = client.create_vpc_peering_connection({ dry_run: false, peer_vpc_id: old_vpc.id, vpc_id: new_vpc.id, }) Log.info "created peering request #{pcr}" peering_connection_id = pcr.vpc_peering_connection.vpc_peering_connection_id Log.info "accepting peering request" res = client.accept_vpc_peering_connection({ dry_run: false, vpc_peering_connection_id: peering_connection_id, }) Log.info "request accepted: #{res}" return peering_connection_id end
delete_vpc_peering_connection()
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 39 def delete_vpc_peering_connection if id = config["vpc_peering_connection_id"] Log.info "deleting vpc peering connection #{id}" Log.info client.delete_vpc_peering_connection(vpc_peering_connection_id: id) else Log.info "no vpc peering connection found" end end
new_vpc()
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 91 def new_vpc @new_vpc ||= vpc_by_id(new_vpc_id) end
new_vpc_id()
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 111 def new_vpc_id @new_vpc_id ||= config["vpc_id"] end
old_vpc()
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 95 def old_vpc @old_vpc end
old_vpc_id()
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 115 def old_vpc_id @old_vpc_id end
point_from(from_vpc, to_vpc, peering_connection_id)
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 78 def point_from(from_vpc, to_vpc, peering_connection_id) Log.info "pointing from #{from_vpc.id} to #{to_vpc.id} via #{peering_connection_id}" from_vpc.route_tables.each do |rt| res = client.create_route({ destination_cidr_block: to_vpc.cidr_block, gateway_id: peering_connection_id, route_table_id: rt.id, }) Log.info "set route #{res}" end end
set_inter_vpc_networking(old_vpc_id, old_vpc_sg_id)
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 12 def set_inter_vpc_networking(old_vpc_id, old_vpc_sg_id) @old_vpc = vpc_by_id(old_vpc_id) Log.info "setting vpc networking between #{new_vpc.id} and #{old_vpc.id}" peering_connection_id = create_vpc_peering_connection config.write(vpc_peering_connection_id: peering_connection_id) update_route_tables(peering_connection_id) allow_networking(old_vpc_sg_id, peering_connection_id) end
update_route_tables(peering_connection_id)
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 48 def update_route_tables(peering_connection_id) Log.info "updating route tables" point_from(old_vpc, new_vpc, peering_connection_id) point_from(new_vpc, old_vpc, peering_connection_id) Log.info "done updating route tables" end
vpc_by_id(id)
click to toggle source
# File lib/eks_cli/vpc/client.rb, line 99 def vpc_by_id(id) Aws::EC2::Vpc.new(id, client: client) end