zlabjp / nghttpx-ingress-lb

nghttpx ingress controller for Kubernetes
Other
136 stars 13 forks source link

Pro/con in description #39

Open wernight opened 7 years ago

wernight commented 7 years ago

I see in README "nghttpx ingress controller is created based on nginx ingress controller." which makes sense but looking at this repo and knowing it has less people behind it, it makes me wonder: Why would I want to use nghttpx instead of Nginx Ingress Controller as Nginx also support HTTP/2.

May be you could include a short PRO/CON next to that statement.

tatsuhiro-t commented 7 years ago

Thank you for suggestion. One of pros for nghttpx is it can connect to backend using HTTP/2 protocol with L7 routing, which nginx lacks at the moment. Con is obviously nghttpx has less feature than nginx. But nghttpx has the essential features to be used as ingress controller.

wernight commented 7 years ago

That can indeed improve performances (wonder how much given Ingress Controller and Pods are co-located), if the servers behind also support it.

tatsuhiro-t commented 7 years ago

As for location of Ingress controller, and service Pods, Ingress controller is typically running as DaemonSet on dedicated node (e.g, node label selection), and Pods will be on the other nodes. As long as the latency is not that large, I think it is OK. Some services, like gRPC, requires h2 protocol, and if they run as Pod, nginx controller is forced to use L4 mode, but nghttpx can forward the gRPC request on L7 layer as usual.

wernight commented 7 years ago

But even nghttpx would be an endpoint for L7 and just create another L7 to gRPC server, no?

tatsuhiro-t commented 7 years ago

If I understand correctly, yes. Ingress is L7 thing.

tatsuhiro-t commented 6 years ago

nghttpx can change backend configuration without reloading/process restart. It is just a matter of internal HTTP POST request, and we are done. We use watch interface for Ingress resource, and the application of change is done very fast. I'm not sure that nginx supports this.