我有几个微服务,它们在YAML中有几乎相同的设置,一些值会改变(例如,图像,版本,特定的环境变量...),它们在不同的存储库中,每个都有不同的管道。我如何在它们之间使用相同的模板而不获得重复的代码?
rxztt3cl1#
我现在工作的地方就是这么做的。我们有自己的通用Helm图表,该图表受版本控制并托管在Artifactory中,该图表中可能需要更改的每个参数都在values.yaml中公开。Artifactory作为存储库添加到helm中,然后您只需为要部署的每个微服务单独使用values. yaml,因为图表是集中获取的。第一个月最重要的是,我们使用helmfile,但这不是必要的,以实现您的目标。要点是:
yyhrrdl82#
您还可以更新管道中的.yaml值,然后打包图表并部署它。这样,您仍然可以拥有相同的yaml文件,但值将因部署的管道而异。另一种简单的方法是在helm图表本身中为不同的环境维护不同的值.yaml,并在helm安装/从管道升级期间传递它们。
pftdvrlh3#
我们为大约90个微服务这样做。我们有共同的图表,我们通过sed脚本来运行值文件,这会改变我们所需要的。然后整个包被部署
3条答案
按热度按时间rxztt3cl1#
我现在工作的地方就是这么做的。
我们有自己的通用Helm图表,该图表受版本控制并托管在Artifactory中,该图表中可能需要更改的每个参数都在values.yaml中公开。
Artifactory作为存储库添加到helm中,然后您只需为要部署的每个微服务单独使用values. yaml,因为图表是集中获取的。
第一个月
最重要的是,我们使用helmfile,但这不是必要的,以实现您的目标。
要点是:
yyhrrdl82#
您还可以更新管道中的.yaml值,然后打包图表并部署它。这样,您仍然可以拥有相同的yaml文件,但值将因部署的管道而异。
另一种简单的方法是在helm图表本身中为不同的环境维护不同的值.yaml,并在helm安装/从管道升级期间传递它们。
pftdvrlh3#
我们为大约90个微服务这样做。我们有共同的图表,我们通过sed脚本来运行值文件,这会改变我们所需要的。然后整个包被部署