15

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

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

4

2 回答 2

13

Helm是很多人为此使用的。它让您为 kubernetes 描述符创建模板并传入参数以从模板生成描述符。

还有其他工具可用于通过将参数注入模板来生成 Kubernetes 部署描述符的变体。Ansible 也很受欢迎。但是 Helm 与Kubernetes CNCF和社区密切相关,并且有大量可用的官方图表可供选择。

编辑:如果目标是使用单个 docker 映像启用不同的部署(例如,用于开发和生产),那么最好使用单个图表来处理。您可以为每个部署创建不同的值文件,并将选择的值文件提供给带有--values参数的 helm install。如果图表的某些部分仅有时适用,则可以将它们包装在if条件中以打开/关闭它们。

特别是关于继承的主题,helm 文档中有一个示例,说明如何将另一个图表作为父/依赖项并覆盖其值,我之前创建了一个图表,您可以在 github中看到它包括其他几个图表覆盖部分所有这些都通过 values.yml。它还与 globals在包含的图表之间共享一些配置。如果您希望使用父级来减少重复而不是加入多个应用程序,那么可以创建一个基本/包装图表,但结果可能是只复制 config 更好

编辑(180119): Kustomize 的替代可能很快在 kubectl 中可用

于 2018-10-09T15:35:43.017 回答
2

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

于 2018-10-09T15:56:28.950 回答