<p>I am using nginx ingress with external IP in a namespace(Google Kubernetes Engine). Now, i want to use nginx ingress <strong>internal</strong> service to call the service from outside the cluster within the VPC network. 
Please suggest me how to achieve this.</p>

<p>As Christopher mentions, you need to just add the annotation to the service, and it will automatically create an internal load balancer, instead an external one. The service will look like this:</p>

<pre><code>apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress
  namespace: nginx-ingress
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
spec:
  externalTrafficPolicy: Local
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
    name: http
  - port: 443
    targetPort: 443
    protocol: TCP
    name: https
  selector:
    app: nginx-ingress
</code></pre>

<p>Leave the rest of the objects as it is. If you want to have both; the external and the internal one, just create the internal one (below). They both can point to the same ingress controller.</p>
