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

时间:2018-01-04 16:51:27

标签: kubernetes-helm

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

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

我们目前的选项似乎是:

  1. 每个微服务的图表(所以4个图表)
  2. 每个应用程序流程图" (服务呼叫b,服务c呼叫d,总共2个图表)
  3. 部署所有4个微服务的单个图表
  4. 1.和3的某种组合。我们利用Helm的依赖项功能
  5. 值得一提的是:

    • 我们目前不需要单独部署任何微服务,例如使其可用于单独的应用程序。
    • 我们可能需要能够独立扩展任何微服务,即不要简单地复制所有4项服务。

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

3 个答案:

答案 0 :(得分:1)

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

所有4个选项都可以使用。无论您是使用单独的图表部署您的应用程序,还是只要最终部署所有服务,都不会产生任何差异。

对于独立扩展服务,如果在一个大图表中对服务使用单独部署,则可以使用values.yaml中每个部署的输入值单独扩展它们...所以它不是某些东西这会迫使你拆分你的图表。

对于注释中的图像更改问题,只需要使用新图像标记升级已安装的版本。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:-1)

可能有用的资源:https://medium.com/faun/dry-helm-charts-for-micro-services-db3a1d6ecb80

  

我们将为每种服务创建一个图表,一个伞形图表和一个通用图表。   重点是通用图表。该图表将包含我们服务的所有常见资源的模板,即。部署,服务,入口,ConfigMap等。   每个服务图表将仅包含服务所需的通用模板,并提供特定于服务的值。   最后,“雨伞”图表将(令人惊讶地)统一服务图表。

相关问题