As I am following the Kubernetes website regarding setting up ingress on minikube, it's all the more confusing... (https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/)
However, here I am summarizing what I have understood so far and question will follow after:
When you just use Minikube provided ingress controller (command: Minikube addons enable ingress), it deploys ingress-nginx-controller as 'NodePort' type at namespace 'ingress-nginx' (huh..? Why such a specific namespace..? so the ingress controller can be at a different namespace than my services..? btw when I do 'kubectl apply -f my-services, they all deploy under namespace 'default')
You still need the manifest or rule created (command example: kubectl apply -f ingress.yaml) and IT'S OK to have the ingress controller to have different namespace as long as in this ingress.yaml you specify namespace to be the namespace where your services are deployed.
Once you deployed ingress-controller and created ingress object (or manifest) via yaml, then you can route external request to the routed services as long as these services are deployed as 'NodePort'... wait a sec... didn't I already deploy nginx-controller as 'NodePort' type... ?
Why does the website above guide me to create services as NodePort type.. ? Wouldn't the ingress object (or manifest) take care of having to have to expose these services as NodePort ?? The manifest (such as ingress.yaml) already has all those port and service routing definitions..?