我正在使用标准的PostgreSQL Helm图表将数据库部署到Kubernetes集群。我需要在部署过程中添加逻辑,以将最新的数据库备份加载到PostgreSQL中。我想为statefulsets.yaml中定义的主容器创建一个初始化容器。
我可以直接在PostgreSQL图表的statefulsets.yaml模板中添加init容器定义。出于明显的原因,我想避免这样做(应用开放式/封闭式原理)。
如何在不修改标准Helm图表的情况下(例如,从values.yaml中)将init容器添加到PostgreSQL master?
是否有更好的方式加载数据库备份(除了init容器)?
答案 0 :(得分:0)
通过values.yaml添加一些内容“不修改标准Helm图表”听起来有点矛盾,因为values.yaml
本身是图表的一部分。
如果您仍然需要更复杂的东西来准备数据库,并希望遵循“开放式/封闭式原则”,则可以通过以下方式在“开放式”和“封闭式”之间绘制边界:
initContainers
部分保留为
像exit 0
这样的“占位符”作为容器的
命令; initContainers
的实际值
values.html
中包含“图像”和“命令”。这样,您的状态集将因值更改而处于关闭状态,而通过values.html处于扩展状态而打开。