<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>Assuming you use <a href="https://github.com/kubernetes/ingress-nginx" rel="nofollow noreferrer">ingress-nginx</a>, then you can follow the steps on their <a href="https://kubernetes.github.io/ingress-nginx/deploy/#gce-gke" rel="nofollow noreferrer">Installation Guide page</a></p>

<p>You need to have your <code>kubectl</code> context pointed to your cluster (set it up by following this <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl" rel="nofollow noreferrer">guide</a>) before you can do these commands:</p>

<ul>
<li>Initialize your user as cluster-admin with the following command

<pre><code>kubectl create clusterrolebinding cluster-admin-binding \
--clusterrole cluster-admin \
--user $(gcloud config get-value account)
</code></pre></li>
<li><p>Deploy <a href="https://github.com/kubernetes/ingress-nginx" rel="nofollow noreferrer">ingress-nginx</a> using the following steps</p>

<pre><code>kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/cloud/deploy.yaml
</code></pre></li>
<li><p>Use a <code>LoadBalancer</code> service with annotation <code>cloud.google.com/load-balancer-type: "Internal"</code>. This will spawn an internal ILB in your VPC</p>

<pre><code>apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx-ilb-service
  namespace: ingress-nginx
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/component: controller
spec:
  type: LoadBalancer
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/component: controller
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http
    - name: https
      port: 443
      protocol: TCP
      targetPort: https
</code></pre></li>
</ul>

<p>Your ILB internal IP will be available in a few minutes after applying this service manifest</p>
