Kubernetes部署是否有继承的概念?

时间:2018-10-09 15:15:37

标签: kubernetes kubernetes-deployment

是否可以为Kubernetes部署创建继承树?我有许多类似但不完全相同的部署。它们共享许多ENV变量,但不是全部。它们都使用相同的图像。

例如,我有一个dev部署,其配置与生产部署几乎相同,但是env vars指向不同的数据库后端。我有一个celery部署,其配置与生产部署相同,但是它具有不同的运行命令。

2 个答案:

答案 0 :(得分:10)

Helm是许多人正在使用的。它使您可以为kubernetes描述符创建模板,并传递参数以从模板生成描述符。

还有其他工具可以通过将参数注入模板来在kubernetes部署描述符上生成变体。 Ansible也很受欢迎。但是Helm与Kubernetes CNCF和社区紧密相连,并且有很多official charts可供选择。

编辑:如果目的是使用单个docker映像启用不同的部署(例如针对dev和prod),那么最好使用单个图表进行处理。您可以为每个部署创建不同的值文件,并使用--values参数提供所选的值文件以进行Helm安装。如果图表中某些部分有时仅适用,则可以将它们包裹在if条件下以将其打开/关闭。

特别是在继承方面,有一个example in the helm documention of how to take another chart as a parent/dependency and override its values,我创建了a chart earlier that you can see in githubincludes several other chartsoverrides parts of all of them via the values.yml。它还在包括的图表with globals之间共享一些配置。如果您希望使用父级来减少重复,而不是加入多个应用程序,则可以创建base/wrapper chartit may turn out to be better to just duplicate config

编辑(180119):Kustomize的替代方法可能很快become available in kubectl

答案 1 :(得分:1)

您可能还需要检查Kustomize。它为以分层形式编写yaml清单提供了一些支持,因此您不必重复自己。