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?
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.