有没有办法检测对 Helm Chart 部署的资源所做的更改

问题描述 投票:0回答:2

我们部署了一些资源作为 helm (v3) chart 的一部分。前段时间,我通过

kubectl
手动更改了由该 helm chart 部署的资源。这导致 helm 版本部署的 yaml 资源中的值(如
helm get values <release>
所示)与集群中实际部署的值之间存在一些偏差

示例:

kubectl describe deployment <deployment>
显示了通过
kubectl re-apply
手动应用的更新图像。而
helm show values <release>
显示了 helm 用于所述部署的原始图像。

我意识到我应该使用修改后的 values.yaml 文件执行

helm upgrade
来执行图像更改,但我想知道是否有办法将我手动更新的值的状态与中的值同步掌舵释放。目标是创建一个新的默认值
values.yaml
来反映集群资源的当前状态。

谢谢!

kubernetes kubernetes-helm kubectl
2个回答
2
投票

这是为了提高知名度而发布的社区维基答案。随意扩展它。

根据 Helm 问题 2730 此功能将不会添加到 Helm 中,因为它超出了项目的范围。

Helm 似乎没有现成的工具可以帮助将 life kubernetes 资源移植/调整回现有或新的 helm 图表/版本。

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

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

0
投票

kubectl diff 将有助于识别变化,但它需要清单来做到这一点。必须从 helm 生成清单,并通过运行 kubectl diff 来识别每个清单的漂移。

我创建了一个 helm 插件 helm-drift(很大程度上取决于 kubectl diff),它负责 helmkubectl-diff 之间的通信以识别漂移。

© www.soinside.com 2019 - 2024. All rights reserved.