K8S ALB Ingress Controller Looking for a quick sanity check here.

I've got an app in its own K8S cluster. That app has three persistent environments (dev/stage/prod) and 1+ temporary environments for each developer. 

If I want to use the Load Balancer Ingress Controller, then the app's Service objects need to be of type `NodePort`.

I'm not a K8S expert, but my understanding is that NodePorts must be unique to each service, correct? 

eg: prod on 8000, stage on 8001, dev on 8002, temp env #1 on 8003, temp env #2 on 8004, etc. 

Is it just me, or would this get messy fast as we add additional services? If we add a second service to the app then each env would need two ports. eg: prod svc1 on 8000 prod svc2 on 8080. Is there something I'm missing?