Ingress controllers for GKE Loadbalancer

4/16/2020

GCP has its own managed Ingress controller for GKE Load balancers. I have also seen the documentation to deploy and leverage Nginx Ingress controller.

https://cloud.google.com/community/tutorials/nginx-ingress-gke

Built-in Ingress controller handles SSL termination as well at Load balancer level. Is there is specific traffic handling capability which makes Nginx a better Ingress controlling candidate for GKE?

-- Balajee Venkatesh
gcp-load-balancer
gke-networking
google-kubernetes-engine

1 Answer

4/27/2020

Both, GKE Ingress and Nginx Ingress are responsible for traffic routing.

The default GCE ingress controller has limited functionalities but its more optimized for Cloud environment features. For example you dont need to create Ingress deployments, Its already built in. Another typical thing for Ingress on GKE is that service must by NodePort type

Nginx Ingress is more versatile and supports much more annotation options. You can check all in Nginx docs.

GKE Ingress is using built-in GCP Ingress solution, however if you would like to change it to use nginx ingress you need to specify it in annotations like here.

GKE Ingress:

  annotations:
    kubernetes.io/ingress.class: "gce"

Force Nginx Ingress on GKE:

  annotations:
    kubernetes.io/ingress.class: "nginx"

About tutorial you have mentioned it's bit outdated. Not long time ago I've followed it and here you can find more current implementation for GCP Ingress and Nginx Ingress on GKE.

You can check this article for more detailed comparison.

In short.

GKE Ingress is built-in and it's easier for configure on cloud environment.

Nginx Ingress have more pre-definied annotations and have more options which can be specified/configured.

-- PjoterS
Source: StackOverflow