Helm Charts微服务

3

假设我正在开发基于微服务的应用程序。它们将使用Helm包管理器部署到Kubernetes上。有些微服务在YAML文件配置方面非常相似,而其他一些则可能不同。对此,有什么最佳实践吗?我有几个选择:

  1. 使用通用图表,并为每个微服务使用values.env.yaml传递不同的配置,然后使用不同的发布名称部署。
  2. 为每个单独的微服务创建一个图表,无论它们的配置是否相似?
2个回答

4
这是一个观点问题,所以我会用观点回答。
1. 优点:您只需更改values.yaml中的几个值,取决于微服务,更容易维护您的values.yml。您的Helm charts仓库可能不会增长得太快。 缺点:例如创建_helpers.tpl文件将更加困难。该文件将迅速增长,并且可能会让创建微服务的人感到困惑。
2. 优点:当扩展到数百个服务时,可以分离您的微服务。开发人员只能在其微服务部署上工作。 缺点:文件分散,在各处有太多文件,并且您的Helm charts仓库可能会迅速增长。此外,存在大量代码重复的风险。
对于官方的Helm charts,更常见的做法是使用第二种方法,但再次强调每个图表都是为非常不同的应用而设计的。

我们目前对第二种方法感到满意。我倾向于在配置时使用松散耦合的系统。当情况变得棘手时,我们可能会重新审视这个问题。 - Bal Chua

1

像 @Rico 提到的那样,这是一个观点问题。以下是我的观点:

我认为从一个适用于所有情况的图表开始是个好主意。但当你必须为只有少数服务具有特殊要求的特定内容添加时,你应该创建另一个图表。这个想法与 Monolith first 相当相似,涉及到微服务。

在我们公司中,我们有一个图表用于大约 30 个服务。它们的需求非常相似,因此模板文件并不太复杂,_helpers 文件只有大约 50 行。我们对这个解决方案非常满意,因为你只需要几行 values.yaml 就可以为你的服务做好操作准备。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接