我们已经部署了一些资源,作为舵机(v3)图表的一部分。前一段时间,我通过kubectl
手动更改了由掌舵图部署的资源。这导致了helm版本部署的yaml资源中的值(如helm get values <release>
所示)与集群中实际部署的值之间的一些偏差。
示例:kubectl describe deployment <deployment>
显示通过kubectl re-apply
手动应用的更新映像。而helm show values <release>
则显示了helm在上述部署中使用的原始图像。
我意识到我应该用修改后的值执行helm upgrade
。yaml文件来执行图像更改,但我想知道是否有一种方法可以让我同步我手动更新的值与helm释放中的值的状态。目标是创建一个新的默认values.yaml
,它反映集群资源的当前状态。
谢谢!
这是一个社区wiki的回答,为了更好的可见性。请随意展开。
根据Helm issue 2730,此功能将不会在Helm中添加,因为它超出了项目范围。
看起来Helm没有现成的工具,这将有助于将生活kubernetes资源移植/适应到现有或新的Helm图表/版本中。
基于此,您可以使用以下选项之一:
- @David Maze建议的。Helm Diff Plugin将向您显示图表输出和集群之间的差异,但随后您需要手动更新值。
- helm-adopt插件是一个将现有k8s资源应用到新生成的helm图中的helm插件。
kubectl diff将有助于识别更改,但它需要清单来完成。必须从helm生成清单,并通过运行kubectl diff来识别每个清单中的漂移。.
我已经创建了一个helm插件helm-drift(严重依赖于kubectl diff)),它负责helm之间的通信和kubectl-diff识别漂移
我想最好是使用helm diff -three-way merge选项。这样,helm就会将预期的图表与已部署的图表(包括手动更改)进行比较