我想删除Helmfile的特定发布版本
我想做的事情
我正在使用helmfile.yaml部署多个Helm图表,并且希望删除不再需要的图表。例如,我已经发布了以下两个图表,我只想删除haproxy。
$ ls .
helmfile.yaml
$ helmfile list
NAME NAMESPACE ENABLED INSTALLED LABELS CHART VERSION
nginx nginx true true bitnami/nginx 15.1.0
haproxy haproxy true true bitnami/haproxy 0.8.3
请提供相关信息
$ helmfile --version
helmfile version 0.152.0
repositories:
- name: bitnami
url: https://charts.bitnami.com/bitnami
releases:
- name: nginx
namespace: nginx
createNamespace: true
chart: bitnami/nginx
version: 15.1.0
- name: haproxy
namespace: haproxy
createNamespace: true
chart: bitnami/haproxy
version: 0.8.3
我错误地使用了helmfile destroy…
当查看helmfile –help命令时,发现有一个名为destroy的子命令可供使用。
$ helmfile --help | grep destroy
destroy Destroys and then purges releases
于是我想着很轻率地执行”helmfile destroy haproxy”就可以删除它。
【警告】请千万不要轻易执行此命令,因为实际上会删除所有发布的内容!!
$ helmfile destroy haproxy
Adding repo bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories
Listing releases matching ^haproxy$
haproxy haproxy 1 2023-07-01 05:39:20.532555249 +0900 JST deployed haproxy-0.8.3 2.8.0
Listing releases matching ^nginx$
nginx nginx 1 2023-07-01 05:39:20.866827715 +0900 JST deployed nginx-15.1.0 1.25.1
Deleting haproxy
Deleting nginx
release "haproxy" uninstalled
release "nginx" uninstalled
DELETED RELEASES:
NAME
haproxy
nginx
不仅仅是haproxy,连nginx也被删除了…
helmfile destroy(或者delete)是一个可怕的命令,它会无论如何删除helmfile.yaml中列出的所有发布。
由于目前版本(0.152.0)的运行方式,未来可能会有改进的可能性。
根据类似的报告,可以明显看出误用的可能性和危险性非常高。
怎样才能删除特定的发布?
我花了一些时间进行调查,但是没有找到什么有用的信息,最后我写了一个只包含想要删除的发布的helmfile,然后运行helmfile destroy来解决这个问题。
repositories:
- name: bitnami
url: https://charts.bitnami.com/bitnami
releases:
- name: haproxy
namespace: haproxy
createNamespace: true
chart: bitnami/haproxy
version: 0.8.3
执行命令及其输出
$ helmfile destroy --file helmfile-delete.yaml
Adding repo bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories
Listing releases matching ^haproxy$
haproxy haproxy 1 2023-07-01 06:06:53.924671604 +0900 JST deployed haproxy-0.8.3 2.8.0
Deleting haproxy
release "haproxy" uninstalled
DELETED RELEASES:
NAME
haproxy
在最后
如果由于某些原因使用了 helmfile destroy(或 delete)命令,并且在 ~/.bash_history 中保留了该记录,请推荐删除该记录及其历史(或设置为不记录历史)。