When I create a GKE ingress controller, by default it created a public ip. Is it possible to create an GKE ingress controller with internal IP?
I have exposed my service as type Ingress, I do not have an option to specify if my ip has to be internal or external.
However, if I expose my service as LoadBalancer, I can specify the type of IP. annotations: cloud.google.com/load-balancer -type: "Internal"
It sounds like an internal loadbalancer is what you are looking for. An internal load balancer will create a private load balancer ingress IP. This will make your services accessible to the network outside of the cluster, more specifically, "on the network within the same compute region from an IP range in the user’s subnet.", not exposed to the public internet.
Pricing information as well as examples YAML & kubectl commands are within the document.