To make ingress work as far as I understand it you need to create all services (that are using ingress controllers) as type NodePort.
Therefore is 2768 the service limit for ingress (maximum available NodePorts)?
You're understanding isn't necessarily correct.
It depends on your environment, cloud provider, ingress controller etc. Because the ingress controller is provisioned inside the cluster, all services that requires an ingress can use ClusterIP, and the ingress controller will route traffic to it.
Again, depending on your platform, the only service that needs to be type=NodePort is the service attached to your ingress controller deployment. The rest can be ClusterIP