我们正在从IAC设置中删除Helm并切换到只使用Terraform。我们的系统目前正在生产中运行,因此简单地删除所有Helm图表并重新部署Terraform并不是一个选项,因为系统必须保持正常运行。
我们最初的想法是:
1.使用k2tf之类的工具将 Helm yamls转换为地形配置
1.运行tf import ...
以导入Terraform状态下的现有k8s资源
1.运行tf apply
以允许Terraform剥离任何附加的Helm元数据,如标签/注解
1.更新掌舵图,使其不再包括资源并部署资源
不幸的是,这似乎不起作用,因为第4步仍然会删除资源。我们曾希望在第3步中清理的Helm标签/注解会让Helm认为它不再拥有该资源,从而不删除它,但似乎Helm版本仍然保留了一些关于它的知识。
关于如何做到这一点有什么想法吗?我知道有办法删除一个Helm图表,留下资源的地方,但正如所提到的,这是不是一个真正的选择,我们想慢慢迁移资源的Helm图表。有没有什么办法明确告诉Helm“放弃”资源?
1条答案
按热度按时间dtcbnfnu1#
在对文档进行了一些挖掘之后,我发现了
"helm.sh/resource-policy": keep
注解:https://helm.sh/docs/howto/charts_tips_and_tricks/#tell-helm-not-to-uninstall-a-resource通过将此应用于资源,这意味着即使您对已删除资源的图表版本运行
helm upgrade
,Helm也不会删除它。因此,我们将资源从Helm迁移到TF的策略如下:
1.将
"helm.sh/resource-policy": keep
注解附加到所需的资源,然后释放并部署Helm图表。1.从Helm图表中删除资源说明,然后释放并重新部署。
1.为该资源编写terraform配置(如果合适,使用原始yaml中的k2tf)
1.在现在孤立的k8s资源上运行
tf import ...
1.运行
tf apply
以使所有内容保持最新