是否有一种方法可以检测对Helm图所部署的资源所做的更改?



我们已经部署了一些资源,作为舵机(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图表/版本中。

基于此,您可以使用以下选项之一:

  1. @David Maze建议的。Helm Diff Plugin将向您显示图表输出和集群之间的差异,但随后您需要手动更新值。
  2. helm-adopt插件是一个将现有k8s资源应用到新生成的helm图中的helm插件。

kubectl diff将有助于识别更改,但它需要清单来完成。必须从helm生成清单,并通过运行kubectl diff来识别每个清单中的漂移。.

我已经创建了一个helm插件helm-drift(严重依赖于kubectl diff)),它负责helm之间的通信和kubectl-diff识别漂移

我想最好是使用helm diff -three-way merge选项。这样,helm就会将预期的图表与已部署的图表(包括手动更改)进行比较

最新更新