<p>I have an ingress defined as:</p>

<pre><code>apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: foo-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: zaz-address
    kubernetes.io/ingress.allow-http: "false"
    ingress.gcp.kubernetes.io/pre-shared-cert: foo-bar-com

spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - path: /zaz/*
        backend:
          serviceName: zaz-service
          servicePort: 8080

</code></pre>

<p>Then the service <code>zap-service</code> is a <code>nodeport</code> defined as:</p>

<pre><code>apiVersion: v1
kind: Service
metadata:
  name: zaz-service
  namespace: default
spec:
  clusterIP: 10.27.255.88
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 32455
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: zap
  sessionAffinity: None
  type: NodePort
</code></pre>

<p>The <code>nodeport</code> is successfully selecting the two pods behind it serving my service. I can see in the <code>GKE</code> services list that the <code>nodeport</code> has an IP that looks internal.</p>

<p>When I check in the same interface the <code>ingress</code>, it also looks all fine, but serving zero pods.</p>

<p>When I describe the <code>ingress</code> on the other hand I can see:</p>

<pre><code>Rules:
  Host                                    Path  Backends
  ----                                    ----  --------
  foo.bar.com
                                          /zaz/*   zaz-service:8080 (&lt;none&gt;)
</code></pre>

<p>Which looks like the <code>ingress</code> is unable to resolve the service <code>IP</code>. What am I doing wrong here? I cannot access the service through the external domain name, I am getting an error <code>404</code>.</p>

<p>How can I make the ingress translate the domain name <code>zaz-service</code> into the proper <code>IP</code> so it can redirect traffic there?</p>

<p>My mistake was, as expected, not reading the documentation thoroughly.</p>

<p>The port stated in the <code>Ingress</code> path is not a "forwarding" mechanism but a "filtering" one.  In my head it made sense that it would be redirecting <code>http(s)</code> traffic to port <code>8080</code>, which is the one where the <code>Service</code> behind was listening to, and the <code>Pod</code> behind the service too.</p>

<p>Reality was that it would not route traffic which was not port <code>8080</code> to the service.  To make it cleaner I changed the port in the <code>Ingress</code> from <code>8080</code> to <code>80</code> and in the <code>Service</code> the front-facing port from <code>8080</code> to <code>80</code> too.</p>

<p>Now all requests coming from the internet can reach the server successfully.</p>
