encircle360 Blog

Using spring-boot microservices within kubernetes using native k8s service discovery and label filters

Since we’re migrating our whole netflix-oss cloud native and spring cloud infrastructure to kubernetes we would like to get rid of most netflix-oss dependencies because features like service discovery over eureka which is now provided natively by kubernetes mostly aren’t needed anymore since the netflix-oss stack was build when technologies like kubernetes weren’t born.

In most cases we are also getting rid of client-side-load-balancing over ribbon replacing it by kubernetes (virtual IPs) server-side tcp load-balancers (called services). It’s also possible to use client-side load balancing in kubernetes context furthermore but our real-world-use-cases have shown that in 95% of business and application logic the difference between both mechanisms are so small that they don’t really make any amount of difference having one hop between the calling service and called service. The benefit we get is that we have have dependency-less spring boot microservices and also services based on other technologies all using the same way of communication. You also should have less configuration affort since eureka isn’t needed anymore and the kubernetes default load balancing settings are working really well so rolling-upgrades with zero down-time are even more stable regardless how many pods or replicas of your service you have running. In 5% of the cases where it makes sense to use client-side-load-balancing you can still use it by plugging the corresponding dependencies in. Continue reading →

en_USEnglish de_DE_formalGerman