我有一个要求,我想在一段时间后删除通过 helm 部署的所有 pod。这个过程需要自动化。这是 3 个现有部署的 helm 实例的详细信息:
ubuntu@kops:~$ helm ls
NAME REVISION UPDATED STATUS CHART NAMESPACE
dandy-vulture 1 Mon May 14 07:21:17 2018 DEPLOYED mak15-0.1.0 default
dapper-pig 1 Sun May 13 16:32:58 2018 DEPLOYED naseer-0.1.0 default
eerie-dragonfly 1 Mon May 14 07:13:15 2018 DEPLOYED mak12-0.1.0 default
我想删除所有至少四个小时前的部署。删除 helm 部署的手动过程(如下所示)应该是自动化的。
# helm delete dandy-vulture
答案1
如果您使用的是具有 GNU date 的系统(例如 Linux 系统),则可以使用 awk 解析 的输出helm ls
,然后使用 GNU date 计算自纪元以来的秒数并确定相应的部署是否旧足够的:
helm ls | awk -v now=$(date +%s) -f delete-old-deployments.awk
其中的内容delete-old-deployments.awk
是:
BEGIN {
# age cutoff, in seconds
cutoff=4 * 60 * 60
}
NR > 1 {
split($0, elements, / */)
"date -d '" elements[3] "' +%s" | getline elesecs
if ((now - elesecs) > cutoff && elements[4] == "DEPLOYED") {
system("helm delete '"elements[1]"'")
}
}
根据我从以下渠道收集到的信息helm ls 源代码,输出是各种字符串的空格分隔表。因此,我要求 awk 根据 2 个或更多空格(split() 函数的第三个参数中有三个空格;两个,后跟零个或多个空格)分割每一行(跳过标题后) )。
分割后的第三个这样的字段是日期字符串,我们将其传递给 GNU date,要求它将其转换为自纪元以来的秒数。如果“现在”和“然后”之间的差异大于截止值,则我们helm delete
对相应名称调用该命令。