Should Helm have charts configured per project or per solution

7/7/2018

I'm trying to add helm to a micro-services project that is very similar to the eShopOnContainers example project.

https://github.com/dotnet-architecture/eShopOnContainers

My question is should the charts folders and configuration be added at the solution level, per project or a combination of both?

-- Adam
kubernetes
kubernetes-helm
visual-studio

1 Answer

7/8/2018

My practical experience has been that, in a microservices architecture implemented using Helm, each individual service should have its own Helm chart.

The real problem is that Helm doesn't deal well with recursive dependencies. A typical architectural statement is that each service has its own independent storage and no service "borrows" another's storage. If charts A and B both say in their requirements.yaml that they need some database as a dependency, and your "wrapper" chart W depends on A and B, then Helm's resolver will instantiate a single database dependency chart and use it for both components.

This style is also somewhat easier to deploy. If you take the Docker image tag as a parameter to the chart, then you can deploy each chart/service completely independently of everything else. With one "wrapper" chart you need to be continuously redeploying that chart and coordinating changes to its specific values. (The reverse of that is that it's a little trickier to know what specific versions of the entire system are deployed all in one place.)

-- David Maze
Source: StackOverflow