自动删除 helm 部署

自动删除 helm 部署

我有一个要求,我想在一段时间后删除通过 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对相应名称调用该命令。

相关内容