我们部署了几个资源作为helm(v3)图表的一部分。不久前,我通过kubectl
手动更改了helm图表部署的资源。这导致helm版本部署的yaml资源值(如helm get values <release>
所示)与集群中实际部署的资源值之间存在一些偏差
示例:kubectl describe deployment <deployment>
显示了通过kubectl re-apply
手动应用的更新后的映像。而helm show values <release>
显示了helm用于上述部署的原始映像。
我意识到我应该使用修改后的values.yaml文件执行helm upgrade
来执行映像更改,但我想知道是否有一种方法可以使我手动更新的值的状态与helm版本中的值同步。目标是创建一个新的默认values.yaml
,以反映集群资源的当前状态。
谢谢!
2条答案
按热度按时间4uqofj5v1#
这是一个社区wiki的答案张贴更好的知名度。随时扩大它。
根据Helm issue 2730,该功能不会添加到Helm中,因为它超出了项目范围。
看起来Helm中没有现成的工具,这将有助于将life kubernetes资源移植/调整回现有或新的helm图表/版本。
基于此,您可以使用以下选项之一:
1.正如@大卫迷宫所建议的那样。Helm Diff Plugin将向您显示图表输出和集群之间的差异,但随后您需要手动更新values.yaml和模板。
laximzn52#
kubectl diff将帮助识别更改,但需要manifest来完成。必须从helm生成manifest,并通过运行kubectl diff来识别每个manifest的漂移。
我创建了一个helm插件helm-drift(严重依赖于kubectl diff),负责helm和kubectl-diff之间的通信,以识别漂移。