I'm in the process of modernizing our deployment to use containers and kubernetes to deploy a complex microservices application. The current deployment uses python scripts to place things where they need to go, and while it works, that deployment model doesn't deliver on some promises we made.
We have around 30 different services we need to deploy, most of which are Spring Boot based. The bottom line is that the deployment for individual services should be reasonably the same. The availability check would use the Spring Actuator health endpoint, and the only a few things need to be distinct (such as service port, ingress path, resource limits, and things of that nature).
My goal was to have a very small deployment of three microservices (discovery, config, and one of the simpler non-database services). There's some things that I like:
That said, there are a lot of rough edges:
I'm hoping I am missing something, or that there are already plans to address these rough edges. The biggest problem is the transitive package resolution. My helm charts look like this:
Problem is when the kubernetes template is actually rendered I have a new instance of the logging-configmap for each service, etc. I need to be able to build and deploy my services in isolation as well as part of the whole for testing purposes.
At any rate, I would like to help make helm better. I do have time constraints, and I'm not very familiar with go-lang. I think this is a good start in a mostly correct direction. It just needs to address those rough edges.