I am trying to develop an application with microservices and Spring Cloud. I am using Zuul as a proxy server, Eureka as a Service discovery and couple of other microservices like product service, order service etc.
For deployment purpose, I am trying to leverage features of Docker and Kubernetes. While learning kubernetes, I realized that kubernetes has "service" object which works as load balancer and can have static IP which does not change even if pods are rescheduled. In that case, can I remove Eureka server (Which works as discovery as well as client side load balancer) from spring cloud and utilize kubernetes "service" object for the same purpose?
If yes, How zuul will identify the service to which it need to redirect the request? Is there any kubernetes object which perform the function of zuul proxy server?
Also if I remove Eureka and Zuul, how can I make it work in local and non kubernetes env?
Kubernetes is a container management tool whereas Spring Cloud is a collection of tools to build microservices architectures. There are overlap, like service discovery, gateway or configuration services.
You can use Spring Cloud to build your microservices architecture by deploying the jars yourself. You don't need kubernetes as such for this.
Difference : https://developers.redhat.com/blog/2016/12/09/spring-cloud-for-microservices-compared-to-kubernetes/