为基于微服务的应用程序设计Helm图表

CPH*_*CPH 11 kubernetes-helm

我目前正在构建一个由4个微服务(a,b,c,d)组成的应用程序.我们希望将Kubernetes Helm作为CI/CD管道的一部分.

我们正在讨论如何最好地定义图表,并且想知道社区的建议.

我们目前的选择似乎是:

  1. 每个微服务的图表(所以4个图表)
  2. 每个"应用程序流"的图表(服务a调用b,服务c调用d,所以总共2个图表)
  3. 单个图表,部署所有4个微服务
  4. 1.和3.的一些组合我们利用Helm的依赖特性

值得一提的是:

  • 我们目前没有要求单独部署任何微服务,例如将其提供给单独的应用程序.
  • 我们可能需要能够独立扩展任何微服务,即不是简单地复制所有4种服务.

我提到这些要求是因为我觉得它们可能与图表设计有关.

Sam*_*ami 5

可能是一个迟到的答案,但 FWIW,这取决于您开发微服务应用程序的方式和地点。如果每个微服务都有自己的 repo 和 CI 管道,那么分开图表也是有意义的(每个服务一个)。但是,如果所有服务都在同一个 repo 中并使用单个 ci 管道部署,那么单个图表更适合。

您的所有 4 个选项都将起作用。而且,无论您是使用单独的图表还是使用单独的图表来部署您的应用程序,只要最终您的所有服务都将被部署,就没有任何区别。

至于独立扩展服务,如果您在一个大图表中为您的服务使用单独的部署,您可以通过在 values.yaml 中使用每个部署的输入值来单独扩展它们......所以这不会强迫您拆分图表.

对于评论中的图像更改问题,它只需要使用新的图像标签升级已安装的版本。

顺便说一下,我们使用helmsman从 CI/CD 管道中的代码部署(和管理)舵图。可能对你有用;)


Gab*_*tti 2

我们也有类似的问题,我们选择精益方式:首先简单实用,然后进化。

我们从部署所有服务的简单图表开始,因为我们的主要要求是有一个安装程序。但我们知道,在短时间内,我们将进行重构,以使用第三方图表,甚至我们自己的存储库中的图表来处理不同的部署策略和服务的独立演化。