Merge pull request #124 from bprashanth/default_backend_ig_delete

Only delete default backend when there are no loadbalancers
This commit is contained in:
Tim Hockin 2017-01-10 22:55:41 -08:00 committed by GitHub
commit 717594ae2a
3 changed files with 28 additions and 12 deletions

View file

@ -273,12 +273,6 @@ func (b *Backends) GC(svcNodePorts []int64) error {
return err return err
} }
} }
if len(svcNodePorts) == 0 {
glog.Infof("Deleting instance group %v", b.namer.IGName())
if err := b.nodePool.DeleteInstanceGroup(b.namer.IGName()); err != nil {
return err
}
}
return nil return nil
} }

View file

@ -151,7 +151,7 @@ func (c *ClusterManager) Checkpoint(lbs []*loadbalancers.L7RuntimeInfo, nodeName
// DefaultBackend is managed in l7 pool, which doesn't understand instances, // DefaultBackend is managed in l7 pool, which doesn't understand instances,
// which the firewall rule requires. // which the firewall rule requires.
fwNodePorts := nodePorts fwNodePorts := nodePorts
if len(fwNodePorts) != 0 { if len(lbs) != 0 {
// If there are no Ingresses, we shouldn't be allowing traffic to the // If there are no Ingresses, we shouldn't be allowing traffic to the
// default backend. Equally importantly if the cluster gets torn down // default backend. Equally importantly if the cluster gets torn down
// we shouldn't leak the firewall rule. // we shouldn't leak the firewall rule.
@ -191,6 +191,17 @@ func (c *ClusterManager) GC(lbNames []string, nodePorts []int64) error {
if beErr != nil { if beErr != nil {
return beErr return beErr
} }
// TODO(ingress#120): Move this to the backend pool so it mirrors creation
var igErr error
if len(lbNames) == 0 {
igName := c.ClusterNamer.IGName()
glog.Infof("Deleting instance group %v", igName)
igErr = c.instancePool.DeleteInstanceGroup(igName)
}
if igErr != nil {
return igErr
}
return nil return nil
} }

View file

@ -267,12 +267,23 @@ func (t *GCETranslator) toURLMap(ing *extensions.Ingress) (utils.GCEURLMap, erro
} }
hostPathBackend[host] = pathToBackend hostPathBackend[host] = pathToBackend
} }
defaultBackend, _ := t.toGCEBackend(ing.Spec.Backend, ing.Namespace) var defaultBackend *compute.BackendService
hostPathBackend.PutDefaultBackend(defaultBackend) if ing.Spec.Backend != nil {
var err error
if defaultBackend != nil && ing.Spec.Backend != nil { defaultBackend, err = t.toGCEBackend(ing.Spec.Backend, ing.Namespace)
t.recorder.Eventf(ing, api.EventTypeNormal, "GCE", fmt.Sprintf("default backend set to %v:%v", ing.Spec.Backend.ServiceName, defaultBackend.Port)) if err != nil {
msg := fmt.Sprintf("%v", err)
if _, ok := err.(errorNodePortNotFound); ok {
msg = fmt.Sprintf("couldn't find nodeport for %v/%v", ing.Namespace, ing.Spec.Backend.ServiceName)
}
t.recorder.Eventf(ing, api.EventTypeWarning, "Service", fmt.Sprintf("failed to identify user specified default backend, %v, using system default", msg))
} else if defaultBackend != nil {
t.recorder.Eventf(ing, api.EventTypeNormal, "Service", fmt.Sprintf("default backend set to %v:%v", ing.Spec.Backend.ServiceName, defaultBackend.Port))
}
} else {
t.recorder.Eventf(ing, api.EventTypeNormal, "Service", "no user specified default backend, using system default")
} }
hostPathBackend.PutDefaultBackend(defaultBackend)
return hostPathBackend, nil return hostPathBackend, nil
} }