【问题标题】:Helm delete all release older than some date, updated before some date or if the app version is lower thanHelm 删除所有早于某个日期的版本,在某个日期之前更新或应用程序版本低于
【发布时间】:2020-02-06 14:26:42
【问题描述】:

如何删除早于 10 月 1 日的版本? 我的意思是在 10 月 1 日之前更新。
或者,删除应用版本低于_的所有版本。

Helm ls 输出:

|名称|修订|更新|状态|图表|应用程序版本|命名空间|
|我的应用程序| 8 |2019 年 9 月 27 日星期五 17:27:20|已部署|myapp.85|85 |默认|

以下命令只删除一个。

helm delete relase_name

以下也不是很好的解决方案

helm delete relase_name1 relase_name2 relase_name3

注意1:我不想全部删除。这里有一个关于如何做到这一点的解释Helm delete all releases,我不想这样做。但是,我认为我需要使用 bash 来完成这项任务。

注意 2: 我已经阅读了文档,它并不大。那里没有关于过滤的东西。 https://helm.sh/docs/helm/#helm-delete

注意 3: 我已经研究了 helm 资源,我不是 100% 确定,但看起来不可能https://github.com/helm/helm/tree/master/pkg/helm

提前谢谢你!

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    下面的命令对我有用,它远非完美的解决方案,但至少它帮助了我:

    helm ls -d -m 25 --namespace default --short | xargs -L1 helm delete
    

    helm ls - 列出所有版本。
    -d 按日期排序。
    -m 最大数量要获取的版本(所以我取 25)。
    --namespace default - 显示特定命名空间中的版本,此选项帮助我过滤我的应用版本。
    --短 - 此选项将命令的输出限制为仅发布名称。

    解决方案并不完美,希望有人能提供更好的解决方案。

    【讨论】:

    • 是的,我绝对觉得我们应该为helm list 提交一个 PR,以便我们列出一段时间后更新的图表。我想这与find 的时间参数类似。
    【解决方案2】:

    假设 Helm 版本 3+

    您可以使用jq 和xargs 来完成此操作:

    问题 1,删除在 $TIMESTAMP 之前最后更新的版本(以秒为单位):

    helm ls -o json | jq -r --argjson timestamp $TIMESTAMP '.[] | select (.updated | sub("\\..*";"Z") | sub("\\s";"T") | fromdate < now - $timestamp).name' | xargs -L1 helm uninstall
    

    sub("\\..*";"Z") | sub("\\s";"T") 转换日期格式 Helm 在其输出中使用 ISO 8601。

    问题 2,删除应用版本早于 $VERSION 的版本:

    helm ls -o json | jq -r --argjson version $VERSION '.[] | select(.app_version | sub("\\.[0-9]$";"") | tonumber | . < $version).name' | xargs -L1 helm uninstall
    

    $VERSION 应该是major 或major.minor (即2 或 2.1)。不要使用补丁号。

    问题 3,要在初始部署日期之前删除版本,您必须为每个版本解析 helm history RELEASE 命令的内容。

    我不会解决这个问题,但它看起来像:

    loop over helm ls
      get release name
      get first entry of helm history for that release
      pass to jq and process like the answer for question 1
    

    相关链接:

    【讨论】:

    • 多么棒的答案。很高兴得知 jq 有这些过滤结果的高级方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多