<p>I deployed Kubernetes on AWS with KOPS and the nginx-ingress.  </p>

<p>To evaluate multiple clouds (and cut costs), I want to deploy on GKE.  Everything worked, except the darn Ingress's.  (That was the hardest part on AWS).</p>

<p>Below is the Ingress I'm using on GKE.  It makes two Ingresses in the dashboard, each with an IP address.</p>

<p>If I point my DNS at those addresses, the connection is refused.  I'm checking the DNS resultion with ping.</p>

<p>All HTTPS fail to connect with "Unable to establish SSL connection.", except button which is "502 Bad Gateway"</p>

<p>HTTP fails to connect with 502 except admin which is 503.</p>

<p>In the Google Cloud Platform dashboard, I see two load balancers.  "all" points to my SSL cert.  "button" isn't doing HTTPS, but that's another problem.</p>

<p>Clearly I'm missing something.  What did I miss?</p>

<p>I'm using kubectl v1.4.6 and whatever version on GKE would have installed yesterday.</p>

<pre><code>```
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    # this is for nginx ingress controler on AWS
    # kubernetes.io/ingress.class: "nginx"
  name: all-ingress
spec:
  tls:
  - hosts:
    - admin-stage.example.com
    - dashboard-stage.example.com
    - expert-stage.example.com
    - signal-stage.example.com
    - stage.example.com
    secretName: tls-secret
  rules:
  - host: admin-stage.example.com
    http:
      paths:
      - backend:
          serviceName: admin-service
          servicePort: http-port
        path: /
  - host: dashboard-stage.example.com
    http:
      paths:
      - backend:
          serviceName: dashboard-service
          servicePort: http-port
        path: /
  - host: expert-stage.example.com
    http:
      paths:
      - backend:
          serviceName: expert-service
          servicePort: http-port
        path: /
  - host: signal-stage.example.com
    http:
      paths:
      - backend:
          serviceName: signal-service
          servicePort: http-port
        path: /
  - host: stage.example.com
    http:
      paths:
      - backend:
          serviceName: www-service
          servicePort: http-port
        path: /
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    # this is for nginx ingress controler on AWS
    # kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/ssl-redirect: "false"
  name: button-ingress
spec:
  tls:
  - hosts:
    - button-stage.example.com
    secretName: tls-secret
  rules:
  - host: button-stage.example.com
    http:
      paths:
      - backend:
          serviceName: button-service
          servicePort: http-port
        path: /
```
</code></pre>

<p>Prashanth's comments were helpful, in the end, native cloud Ingress (AWS/GCE) isn't finished in Kubernetes enough to be useful for my purposes.  There's no point learning an abstraction that is more complicated and less functional than the thing underneath.  </p>

<p>I ended up using the nginx-ingress from this answer: <a href="https://stackoverflow.com/questions/40745885/kubernetes-1-4-ssl-termination-on-aws">Kubernetes 1.4 SSL Termination on AWS</a></p>

<p>On the resulting Ingress is an IP you can point DNS (not the "External Endpoints" on the service).  Good luck!</p>
