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.