我有一个要求,在一定时间后,我想删除通过舵机部署的所有吊舱。这一过程需要自动化。这是三个现有部署的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 delete dandy-vulture发布于 2018-05-14 13:07:43
如果您所处的系统具有GNU (例如Linux系统),您可以使用awk解析helm ls的输出,然后使用GNU计算自那个时代以来的秒数,并确定相应的部署是否足够老:
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个或更多的空格(拆分()函数的第三个参数中有三个空格;第二个,后面是零或多个空格)来拆分每一行(跳过标头后)。
拆分后的第三个字段是日期字符串,我们将其传递给GNU日期,要求它将其转换为自纪元以来的秒。如果“现在”和“然后”之间的区别大于截止值,那么我们将在相应的名称上调用helm delete命令。
https://unix.stackexchange.com/questions/443656
复制相似问题