Merge pull request #1501 from bprashanth/ing_docs_listing

Automatic merge from submit-queue

Correctly handle ingress.class in GCE controller 

This bug would only get activated when a user has both `ingess.class=gce` and `ingress.class=nginx` ingresses active in the same GCE/GKE cluster, and would manifest as a set of cloud resources created wastefully for the `ingress.class=nginx` ingress as well.

We were previously only ignoring ingress.class (documented here: https://github.com/kubernetes/contrib/blob/master/ingress/controllers/gce/BETA_LIMITATIONS.md#disabling-glbc) when the ingress was created/deleted/modified. There's a chance another ingress with the correct class results in us entering the `sync` routine and listing all ingresses. The listing routine was not smart enough to ignore `ingress.class=nginx`, so we ended up creating resources for the nginx ingress anyway. 

The second commit fixes some of the nginx examples to include a `readiness` probe that is == liveness probe. 

Minhan or Girish, whichever one has spare cycles first.
This commit is contained in:
Kubernetes Submit Queue 2016-08-11 13:43:47 -07:00 committed by GitHub
commit 3032ff166f
3 changed files with 16 additions and 7 deletions

View file

@ -1,7 +1,7 @@
all: push all: push
# 0.0 shouldn't clobber any released builds # 0.0 shouldn't clobber any released builds
TAG = 0.7.0 TAG = 0.7.1
PREFIX = gcr.io/google_containers/glbc PREFIX = gcr.io/google_containers/glbc
server: server:

View file

@ -291,7 +291,10 @@ func (lbc *LoadBalancerController) sync(key string) (err error) {
} }
nodePorts := lbc.tr.toNodePorts(&paths) nodePorts := lbc.tr.toNodePorts(&paths)
lbNames := lbc.ingLister.Store.ListKeys() lbNames := lbc.ingLister.Store.ListKeys()
lbs, _ := lbc.ListRuntimeInfo() lbs, err := lbc.ListRuntimeInfo()
if err != nil {
return err
}
nodeNames, err := lbc.getReadyNodeNames() nodeNames, err := lbc.getReadyNodeNames()
if err != nil { if err != nil {
return err return err
@ -404,14 +407,17 @@ func (lbc *LoadBalancerController) updateIngressStatus(l7 *loadbalancers.L7, ing
// ListRuntimeInfo lists L7RuntimeInfo as understood by the loadbalancer module. // ListRuntimeInfo lists L7RuntimeInfo as understood by the loadbalancer module.
func (lbc *LoadBalancerController) ListRuntimeInfo() (lbs []*loadbalancers.L7RuntimeInfo, err error) { func (lbc *LoadBalancerController) ListRuntimeInfo() (lbs []*loadbalancers.L7RuntimeInfo, err error) {
for _, m := range lbc.ingLister.Store.List() { ingList, err := lbc.ingLister.List()
ing := m.(*extensions.Ingress) if err != nil {
k, err := keyFunc(ing) return lbs, err
}
for _, ing := range ingList.Items {
k, err := keyFunc(&ing)
if err != nil { if err != nil {
glog.Warningf("Cannot get key for Ingress %v/%v: %v", ing.Namespace, ing.Name, err) glog.Warningf("Cannot get key for Ingress %v/%v: %v", ing.Namespace, ing.Name, err)
continue continue
} }
tls, err := lbc.tlsLoader.load(ing) tls, err := lbc.tlsLoader.load(&ing)
if err != nil { if err != nil {
glog.Warningf("Cannot get certs for Ingress %v/%v: %v", ing.Namespace, ing.Name, err) glog.Warningf("Cannot get certs for Ingress %v/%v: %v", ing.Namespace, ing.Name, err)
} }

View file

@ -188,7 +188,10 @@ type StoreToIngressLister struct {
// List lists all Ingress' in the store. // List lists all Ingress' in the store.
func (s *StoreToIngressLister) List() (ing extensions.IngressList, err error) { func (s *StoreToIngressLister) List() (ing extensions.IngressList, err error) {
for _, m := range s.Store.List() { for _, m := range s.Store.List() {
ing.Items = append(ing.Items, *(m.(*extensions.Ingress))) newIng := m.(*extensions.Ingress)
if isGCEIngress(newIng) {
ing.Items = append(ing.Items, *newIng)
}
} }
return ing, nil return ing, nil
} }