mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-16 22:53:22 +00:00
Add external services v2 support.
This commit is contained in:
@@ -47,8 +47,8 @@ type TCPLoadBalancer interface {
|
||||
// TCPLoadBalancerExists returns whether the specified load balancer exists.
|
||||
// TODO: Break this up into different interfaces (LB, etc) when we have more than one type of service
|
||||
TCPLoadBalancerExists(name, region string) (bool, error)
|
||||
// CreateTCPLoadBalancer creates a new tcp load balancer.
|
||||
CreateTCPLoadBalancer(name, region string, port int, hosts []string) error
|
||||
// CreateTCPLoadBalancer creates a new tcp load balancer. Returns the IP address of the balancer
|
||||
CreateTCPLoadBalancer(name, region string, externalIP net.IP, port int, hosts []string) (net.IP, error)
|
||||
// UpdateTCPLoadBalancer updates hosts under the specified load balancer.
|
||||
UpdateTCPLoadBalancer(name, region string, hosts []string) error
|
||||
// DeleteTCPLoadBalancer deletes a specified load balancer.
|
||||
|
@@ -34,6 +34,7 @@ type FakeCloud struct {
|
||||
NodeResources *api.NodeResources
|
||||
ClusterList []string
|
||||
MasterName string
|
||||
ExternalIP net.IP
|
||||
|
||||
cloudprovider.Zone
|
||||
}
|
||||
@@ -83,9 +84,9 @@ func (f *FakeCloud) TCPLoadBalancerExists(name, region string) (bool, error) {
|
||||
|
||||
// CreateTCPLoadBalancer is a test-spy implementation of TCPLoadBalancer.CreateTCPLoadBalancer.
|
||||
// It adds an entry "create" into the internal method call record.
|
||||
func (f *FakeCloud) CreateTCPLoadBalancer(name, region string, port int, hosts []string) error {
|
||||
func (f *FakeCloud) CreateTCPLoadBalancer(name, region string, externalIP net.IP, port int, hosts []string) (net.IP, error) {
|
||||
f.addCall("create")
|
||||
return f.Err
|
||||
return f.ExternalIP, f.Err
|
||||
}
|
||||
|
||||
// UpdateTCPLoadBalancer is a test-spy implementation of TCPLoadBalancer.UpdateTCPLoadBalancer.
|
||||
|
@@ -192,10 +192,10 @@ func (gce *GCECloud) TCPLoadBalancerExists(name, region string) (bool, error) {
|
||||
}
|
||||
|
||||
// CreateTCPLoadBalancer is an implementation of TCPLoadBalancer.CreateTCPLoadBalancer.
|
||||
func (gce *GCECloud) CreateTCPLoadBalancer(name, region string, port int, hosts []string) error {
|
||||
func (gce *GCECloud) CreateTCPLoadBalancer(name, region string, externalIP net.IP, port int, hosts []string) (net.IP, error) {
|
||||
pool, err := gce.makeTargetPool(name, region, hosts)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
req := &compute.ForwardingRule{
|
||||
Name: name,
|
||||
@@ -203,8 +203,22 @@ func (gce *GCECloud) CreateTCPLoadBalancer(name, region string, port int, hosts
|
||||
PortRange: strconv.Itoa(port),
|
||||
Target: pool,
|
||||
}
|
||||
_, err = gce.service.ForwardingRules.Insert(gce.projectID, region, req).Do()
|
||||
return err
|
||||
if len(externalIP) > 0 {
|
||||
req.IPAddress = externalIP.String()
|
||||
}
|
||||
op, err := gce.service.ForwardingRules.Insert(gce.projectID, region, req).Do()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = gce.waitForRegionOp(op, region)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
fwd, err := gce.service.ForwardingRules.Get(gce.projectID, region, name).Do()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return net.ParseIP(fwd.IPAddress), nil
|
||||
}
|
||||
|
||||
// UpdateTCPLoadBalancer is an implementation of TCPLoadBalancer.UpdateTCPLoadBalancer.
|
||||
|
Reference in New Issue
Block a user