Re: Helm for Microservices Deployments
Paul Czarkowski <pczarkowski@...>
In my opinion at least, Ideally each microservice would have its own fully independent chart, and be deployed and managed independely by some sort of CI/CD solution that roughly resembles gitops.
If you need to share data or values between microservices, then you could look to using a library chart ( https://helm.sh/docs/topics/library_charts/ ) which you could use to define extra labels to help tie environments together (via metadata at least) and do things like set names for service discovery, create secrets with TLS certs, that kind of thing.
If you need to deploy all of the microservices as a bundle, then I would would reach up a layer to a tool like helmfile (https://github.com/roboll/helmfile) which can help you deploy and manage sets of loosely coupled helm charts.
From: cncf-helm@... <cncf-helm@...> on behalf of Loritsch, Berin <bloritsch@...>
Sent: Thursday, June 25, 2020 3:21 PM
To: cncf-helm@... <cncf-helm@...>
Subject: [cncf-helm] Helm for Microservices Deployments
As I dive deeper into the world of Kubernetes so that I understand what I need my charts to do, and how I intend to design the templates for my environment, I am curious how Helm ties things together.
For example, we have 30+ microservices in 7 functional areas, all for one application. We want to handle deployments with horizontal scaling, volumes, etc.
I think the picture is crystal clear when we are talking about one service. I.e. 1 microservice would have 1 deployment, 1 hpa, ingress instructions, a service definition, and volumes and configmaps to support it. I look at some of the examples for larger systems, and the examples I see use labels to tie things together.
When I create a parent chart that declares all of the microservices as dependencies, does Helm inject labels on my behalf? For example, given I am in a namespace for the environment, I want to type "helm install wicketz example/wicketzapp" and then later when I need to update it or uninstall it, I would update the "wicketz" app in that custom namespace. Additionally, as we replace microservices we no longer need because they are now redundant with Kubernetes features, I'd like the update to remove the deployments that are no longer needed.
What's the glue that binds things together? Is that something I have to manage myself, or be aware of as I'm writing my helm charts? Unfortunately, too many of the examples I find are too simplistic to answer the questions I'm having now.