Ser*_*kyi 5 kubernetes kubernetes-helm
如何删除 10 月 1 日之前的版本?我的意思是10月1日之前更新。
或者,删除应用程序版本低于 _ 的所有版本。
舵机 ls 输出:
|名称|修订|更新|状态|图表|应用程序版本|命名空间|
|我的应用程序| 8 |2019 年 9 月 27 日星期五 17:27:20|部署|myapp.85|85 |默认|
以下命令仅删除一个。
舵删除relase_name
以下也不是一个很好的解决方案
helm 删除 relase_name1 relase_name2 relase_name3
注1:我不想删除全部。这里有关于如何执行此操作的解释,Helm 删除所有版本,但我不想这样做。但是,我认为我需要使用 bash 来完成此任务。
注2:我已经阅读过文档,它并没有那么大。那里没有任何关于过滤的内容。 https://helm.sh/docs/helm/#helm-delete
注3:我已经研究过 helm 来源,我不是 100% 确定,但看起来不可能https://github.com/helm/helm/tree/master/pkg/helm
先感谢您!
假设 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
$VERSION应该是主要或主要.次要(即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
Run Code Online (Sandbox Code Playgroud)
相关链接:
下面的命令对我有用,它远非完美的解决方案,但至少它帮助了我:
helm ls -d -m 25 --namespace default --short | xargs -L1 helm delete
Run Code Online (Sandbox Code Playgroud)
helm ls - 列出所有版本。
-d按日期排序。
-m要获取的最大版本数(所以我取 25)。
--namespace default - 显示特定命名空间内的版本,此选项帮助我过滤我的应用程序版本。
--short - 此选项将命令的输出限制为仅发布名称。
该解决方案并不完美,希望有人能提供更好的解决方案。
| 归档时间: |
|
| 查看次数: |
11468 次 |
| 最近记录: |