title: GCE ingress with routes always falls back to default-http-backend
body: <p>Kubernetes version: 1.4.5</p>
  
  <p>I have a very simple service with <code>type: NodePort</code>. It only returns some text on <code>/info</code>. I am using the default GKE ingress controller (the L7 Google load balancer) with TLS. If I use the following ingress everything works as expected:</p>
  
  <h2>Working ingress</h2>
  
  <pre><code>apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    name: global-ingress
    namespace: global
    annotations:
      kubernetes.io/ingress.allow-http: "false"
  spec:
    tls:
    - secretName: tls-secret
    backend:
      serviceName: gate-front
      servicePort: 80
  </code></pre>
  
  <hr>
  
  <pre><code>curl -k https://130.211.39.140/info
  POD: gate-front-1871107570-ue07p
  IP: 10.0.2.26
  REQ: /info
  </code></pre>
  
  <hr>
  
  <pre><code>$ kubectl describe ing
  Name:           global-ingress
  Namespace:      global
  Address:        130.211.39.140
  Default backend:    gate-front:80 (10.0.2.25:8080,10.0.2.26:8080)
  TLS:
    tls-secret terminates
  Rules:
    Host  Path    Backends
    ----  ----    --------
    * *   gate-front:80 (10.0.2.25:8080,10.0.2.26:8080)
  Annotations:
    backends:         {"k8s-be-31966--f3f0bf21d171a625":"HEALTHY"}
    https-forwarding-rule:    k8s-fws-global-global-ingress--f3f0bf21d171a625
    https-target-proxy:       k8s-tps-global-global-ingress--f3f0bf21d171a625
    url-map:          k8s-um-global-global-ingress--f3f0bf21d171a625
  </code></pre>
  
  <h2>Broken ingress</h2>
  
  <p>However, if I introduce a rule and leave out the default backend, all requests return <code>default backend - 404</code>. </p>
  
  <pre><code>apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    name: global-ingress
    namespace: global
    annotations:
      kubernetes.io/ingress.allow-http: "false"
  spec:
    tls:
    - secretName: tls-secret
    rules:
    - http:
        paths:
        - path: /gate
          backend:
            serviceName: gate-front
            servicePort: 80
  </code></pre>
  
  <hr>
  
  <pre><code>curl -k https://130.211.33.150/gate/info
  default backend - 404
  </code></pre>
  
  <hr>
  
  <pre><code>$ kubectl describe ing
  Name:           global-ingress
  Namespace:      global
  Address:        130.211.33.150
  Default backend:    default-http-backend:80 (10.0.2.3:8080)
  TLS:
    tls-secret terminates
  Rules:
    Host  Path    Backends
    ----  ----    --------
    *
          /gate   gate-front:80 (&lt;none&gt;)
  Annotations:
    https-forwarding-rule:    k8s-fws-global-global2-ingress--f3f0bf21d171a625
    https-target-proxy:       k8s-tps-global-global2-ingress--f3f0bf21d171a625
    url-map:          k8s-um-global-global2-ingress--f3f0bf21d171a625
    backends:         {"k8s-be-31966--f3f0bf21d171a625":"HEALTHY","k8s-be-32552--f3f0bf21d171a625":"HEALTHY"}
  </code></pre>
  
  <p>If I add hosts and use <code>curl -k --resolve ...</code> I get the same behaviour. </p>
  
  <p>I went through the following documentation and examples:</p>
  
  <ul>
  <li><a href="http://kubernetes.io/docs/user-guide/ingress/" rel="noreferrer">http://kubernetes.io/docs/user-guide/ingress/</a></li>
  <li><a href="https://github.com/kubernetes/contrib/blob/master/ingress/controllers/gce/README.md" rel="noreferrer">https://github.com/kubernetes/contrib/blob/master/ingress/controllers/gce/README.md</a></li>
  </ul>
  
  <p>Can anyone shed some light on this? </p>