在标准Helm图表中向容器添加一个初始化容器

时间:2019-08-23 14:54:41

标签: postgresql kubernetes kubernetes-helm database-backups

我正在使用标准的PostgreSQL Helm图表将数据库部署到Kubernetes集群。我需要在部署过程中添加逻辑,以将最新的数据库备份加载到PostgreSQL中。我想为statefulsets.yaml中定义的主容器创建一个初始化容器。

我可以直接在PostgreSQL图表的statefulsets.yaml模板中添加init容器定义。出于明显的原因,我想避免这样做(应用开放式/封闭式原理)。

如何在不修改标准Helm图表的情况下(例如,从values.yaml中)将init容器添加到PostgreSQL master?

是否有更好的方式加载数据库备份(除了init容器)?

1 个答案:

答案 0 :(得分:0)

通过values.yaml添加一些内容“不修改标准Helm图表”听起来有点矛盾,因为values.yaml本身是图表的一部分。

如果您仍然需要更复杂的东西来准备数据库,并希望遵循“开放式/封闭式原则”,则可以通过以下方式在“开放式”和“封闭式”之间绘制边界:

  • “封闭部分”:将Statefulset中的initContainers部分保留为 像exit 0这样的“占位符”作为容器的 命令;
  • “开放部分”:提供initContainers的实际值 values.html中包含“图像”和“命令”。

这样,您的状态集将因值更改而处于关闭状态,而通过values.html处于扩展状态而打开。