【问题标题】:Is there a concept of inheritance for Kubernetes deployments?Kubernetes 部署是否有继承的概念?
【发布时间】:2019-03-14 10:16:02
【问题描述】:

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

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

【问题讨论】:

    标签: kubernetes kubernetes-deployment


    【解决方案1】:

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

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

    编辑:如果目标是使用单个 docker 映像启用不同的部署(例如,用于开发和生产),那么最好使用单个图表来处理。您可以为每个部署创建不同的值文件,并使用 --values 参数将选择的值文件提供给 helm install。如果图表的某些部分仅在某些时候适用,则可以将它们包裹在 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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多