我目前正在构建一个由4个微服务(a,b,c,d)组成的应用程序 . 我们希望将Kubernetes Helm作为CI / CD管道的一部分 .
我们正在讨论如何最好地定义图表,并且想知道社区的建议 .
我们目前的选择似乎是:
-
每个微服务的图表(所以4个图表)
-
每个"application flow"图表(服务a调用b,服务c调用d,所以总共2个图表)
-
一个部署所有4个微服务的图表
-
1.和3.的一些组合我们利用Helm的依赖特性
值得一提的是:
-
我们目前没有要求单独部署任何微服务,例如使其可用于单独的应用程序 .
-
我们可能需要能够独立扩展任何微服务,即不是简单地复制所有4个服务 .
我提到这些要求是因为我觉得它们可能与图表设计有关 .
2 回答
可能是一个迟到的答案,但FWIW,这取决于您开发微服务应用程序的方式和位置 . 如果每个微服务都有它自己的repo和CI管道,那么分离图表也是有意义的(每个服务一个) . 但是,如果所有服务都在同一个repo中并使用单个ci管道进行部署,那么单个图表更适合 .
所有4个选项都可以使用 . 无论您是使用单独的图表部署应用程序还是使用单独的图表,只要最终部署所有服务,您的应用程序都不会产生任何影响 .
至于独立扩展服务,如果在一个大图表中为服务使用单独的部署,则可以通过在values.yaml中使用每个部署的输入值来单独扩展它们...所以它不会强制您拆分图表 .
对于评论中的图像更改问题,只需要使用新图像标记升级已安装的版本 .
顺便说一下,我们使用helmsman从我们的CI / CD管道中的代码部署(和管理)舵图 . 可能对你有用;)
我们有类似的问题,我们选择精益方式:先简单和功能,然后进化 .
我们从一个简单的图表开始部署所有服务,因为我们的主要要求是拥有一个安装程序 . 但我们知道,在短时间内我们将重构使用第三方图表甚至我们自己的回购中的自己的图表来处理不同的部署策略和服务的独立演变 .