Skip to content
This repository was archived by the owner on Mar 25, 2024. It is now read-only.

Commit c5c05d4

Browse files
author
Alena Prokharchyk
committed
Merge pull request #6 from alena1108/targetportfordefault
Use target port of default service as a default private port
2 parents 033579d + 0139947 commit c5c05d4

1 file changed

Lines changed: 26 additions & 6 deletions

File tree

lbprovider/rancher.go

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,10 @@ func (lbp *RancherLBProvider) ApplyConfig(lbConfig *lbconfig.LoadBalancerConfig)
104104

105105
defer unlocker.Unlock()
106106

107-
lb, err := lbp.createLBService(lbp.formatLBName(lbConfig.Name))
107+
lb, err := lbp.createLBService(lbConfig)
108108
if err != nil {
109109
return err
110110
}
111-
logrus.Infof("Setting service links for service [%s]", lb.Name)
112111
return lbp.setServiceLinks(lb, lbConfig)
113112
}
114113

@@ -298,7 +297,8 @@ func (lbp *RancherLBProvider) getStack(name string) (*client.Environment, error)
298297
return nil, nil
299298
}
300299

301-
func (lbp *RancherLBProvider) createLBService(name string) (*client.LoadBalancerService, error) {
300+
func (lbp *RancherLBProvider) createLBService(lbConfig *lbconfig.LoadBalancerConfig) (*client.LoadBalancerService, error) {
301+
name := lbp.formatLBName(lbConfig.Name)
302302
stack, err := lbp.getOrCreateSystemStack()
303303
if err != nil {
304304
return nil, err
@@ -314,9 +314,20 @@ func (lbp *RancherLBProvider) createLBService(name string) (*client.LoadBalancer
314314
return lb, nil
315315
}
316316

317-
// private port 80 will be overritten by ports
318-
// in hostname routing rules
319-
lbPorts := []string{"80:80"}
317+
if len(lbConfig.FrontendServices) == 0 {
318+
logrus.Infof("LB config [%s] have 0 frondends", lbConfig.Name)
319+
return nil, nil
320+
}
321+
322+
// TODO: support multiple ports
323+
lbFrontend := lbConfig.FrontendServices[0]
324+
publicPort := "80"
325+
privatePort := "80"
326+
defaultBackend := lbp.getDefaultBackend(lbFrontend)
327+
if defaultBackend != nil {
328+
privatePort = strconv.Itoa(defaultBackend.Port)
329+
}
330+
lbPorts := []string{fmt.Sprintf("%v:%v", publicPort, privatePort)}
320331

321332
lb = &client.LoadBalancerService{
322333
Name: name,
@@ -335,6 +346,15 @@ func (lbp *RancherLBProvider) createLBService(name string) (*client.LoadBalancer
335346
return lbp.activateLBService(lb)
336347
}
337348

349+
func (lbp *RancherLBProvider) getDefaultBackend(frontend *lbconfig.FrontendService) *lbconfig.BackendService {
350+
for _, backend := range frontend.BackendServices {
351+
if backend.Path == "" && backend.Host == "" {
352+
return backend
353+
}
354+
}
355+
return nil
356+
}
357+
338358
func (lbp *RancherLBProvider) setServiceLinks(lb *client.LoadBalancerService, lbConfig *lbconfig.LoadBalancerConfig) error {
339359
if len(lbConfig.FrontendServices) == 0 {
340360
logrus.Infof("Config [%s] doesn't have any rules defined", lbConfig.Name)

0 commit comments

Comments
 (0)