Helm 是否应该为每个项目或每个解决方案配置图表

Should Helm have charts configured per project or per solution

我正在尝试将 helm 添加到与 eShopOnContainers 示例项目非常相似的微服务项目。

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

我的问题是图表文件夹和配置应该在解决方案级别、每个项目还是两者的组合添加?

我的实践经验是,在使用 Helm 实现的微服务架构中,每个单独的服务都应该有自己的 Helm 图表。

真正的问题是 Helm 不能很好地处理递归依赖。一个典型的架构声明是每个服务都有自己独立的存储,没有服务 "borrows" 另一个的存储。如果 chart A 和 B 在他们的 requirements.yaml 中都说他们需要一些数据库作为依赖,而你的 "wrapper" chart W 依赖于 A 和 B,那么 Helm 的解析器将实例化一个 single 数据库依赖关系图并将其用于两个组件。

这种风格也更容易部署。如果将 Docker 图像标记作为图表的参数,则可以完全独立于其他所有内容部署每个 chart/service。对于一个 "wrapper" 图表,您需要不断地重新部署该图表并协调对其特定值的更改。 (相反的是,要知道整个系统的哪些特定版本都部署在一个地方有点棘手。)