1
0
Fork 0

rework loadbalancer support

This commit is contained in:
Julien Salleyron 2019-06-05 22:18:06 +02:00 committed by Traefiker Bot
parent b143101f82
commit 518a37e776
86 changed files with 339 additions and 1055 deletions

View file

@ -187,8 +187,7 @@ func loadServers(client Client, namespace string, svc v1alpha1.Service) ([]confi
var servers []config.Server
if service.Spec.Type == corev1.ServiceTypeExternalName {
servers = append(servers, config.Server{
URL: fmt.Sprintf("http://%s:%d", service.Spec.ExternalName, portSpec.Port),
Weight: 1,
URL: fmt.Sprintf("http://%s:%d", service.Spec.ExternalName, portSpec.Port),
})
} else {
endpoints, endpointsExists, endpointsErr := client.GetEndpoints(namespace, svc.Name)
@ -224,8 +223,7 @@ func loadServers(client Client, namespace string, svc v1alpha1.Service) ([]confi
for _, addr := range subset.Addresses {
servers = append(servers, config.Server{
URL: fmt.Sprintf("%s://%s:%d", protocol, addr.IP, port),
Weight: 1,
URL: fmt.Sprintf("%s://%s:%d", protocol, addr.IP, port),
})
}
}
@ -332,7 +330,6 @@ func (p *Provider) loadConfigurationFromIngresses(ctx context.Context, client Cl
LoadBalancer: &config.LoadBalancerService{
Servers: allServers,
// TODO: support other strategies.
Method: "wrr",
PassHostHeader: true,
},
}

View file

@ -50,15 +50,12 @@ func TestLoadIngressRoutes(t *testing.T) {
LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{
{
URL: "http://10.10.0.1:80",
Weight: 1,
URL: "http://10.10.0.1:80",
},
{
URL: "http://10.10.0.2:80",
Weight: 1,
URL: "http://10.10.0.2:80",
},
},
Method: "wrr",
PassHostHeader: true,
},
},
@ -98,15 +95,12 @@ func TestLoadIngressRoutes(t *testing.T) {
LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{
{
URL: "http://10.10.0.1:80",
Weight: 1,
URL: "http://10.10.0.1:80",
},
{
URL: "http://10.10.0.2:80",
Weight: 1,
URL: "http://10.10.0.2:80",
},
},
Method: "wrr",
PassHostHeader: true,
},
},
@ -140,15 +134,12 @@ func TestLoadIngressRoutes(t *testing.T) {
LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{
{
URL: "http://10.10.0.1:80",
Weight: 1,
URL: "http://10.10.0.1:80",
},
{
URL: "http://10.10.0.2:80",
Weight: 1,
URL: "http://10.10.0.2:80",
},
},
Method: "wrr",
PassHostHeader: true,
},
},
@ -156,15 +147,12 @@ func TestLoadIngressRoutes(t *testing.T) {
LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{
{
URL: "http://10.10.0.1:80",
Weight: 1,
URL: "http://10.10.0.1:80",
},
{
URL: "http://10.10.0.2:80",
Weight: 1,
URL: "http://10.10.0.2:80",
},
},
Method: "wrr",
PassHostHeader: true,
},
},
@ -192,23 +180,18 @@ func TestLoadIngressRoutes(t *testing.T) {
LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{
{
URL: "http://10.10.0.1:80",
Weight: 1,
URL: "http://10.10.0.1:80",
},
{
URL: "http://10.10.0.2:80",
Weight: 1,
URL: "http://10.10.0.2:80",
},
{
URL: "http://10.10.0.3:8080",
Weight: 1,
URL: "http://10.10.0.3:8080",
},
{
URL: "http://10.10.0.4:8080",
Weight: 1,
URL: "http://10.10.0.4:8080",
},
},
Method: "wrr",
PassHostHeader: true,
},
},
@ -294,15 +277,12 @@ func TestLoadIngressRoutes(t *testing.T) {
LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{
{
URL: "http://10.10.0.1:80",
Weight: 1,
URL: "http://10.10.0.1:80",
},
{
URL: "http://10.10.0.2:80",
Weight: 1,
URL: "http://10.10.0.2:80",
},
},
Method: "wrr",
PassHostHeader: true,
},
},
@ -331,15 +311,12 @@ func TestLoadIngressRoutes(t *testing.T) {
LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{
{
URL: "http://10.10.0.1:80",
Weight: 1,
URL: "http://10.10.0.1:80",
},
{
URL: "http://10.10.0.2:80",
Weight: 1,
URL: "http://10.10.0.2:80",
},
},
Method: "wrr",
PassHostHeader: true,
},
},
@ -367,15 +344,12 @@ func TestLoadIngressRoutes(t *testing.T) {
LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{
{
URL: "https://10.10.0.5:443",
Weight: 1,
URL: "https://10.10.0.5:443",
},
{
URL: "https://10.10.0.6:443",
Weight: 1,
URL: "https://10.10.0.6:443",
},
},
Method: "wrr",
PassHostHeader: true,
},
},

View file

@ -31,9 +31,8 @@ type TLS struct {
// Service defines an upstream to proxy traffic.
type Service struct {
Name string `json:"name"`
Port int32 `json:"port"`
// TODO Weight int `json:"weight,omitempty"`
Name string `json:"name"`
Port int32 `json:"port"`
HealthCheck *HealthCheck `json:"healthCheck,omitempty"`
Strategy string `json:"strategy,omitempty"`
}