首页 > 解决方案 > 如何删除超过 1 个月的 helm 版本

问题描述

我知道我可以使用列出所有 helm 发布 helm ls --tiller-namespace <tiller-namespace>

我可以使用什么命令来删除超过 1 个月的 helm 版本?

标签: kubernetes-helm

解决方案


您可以使用下面的 shell 脚本,它获取所有版本列表,并使用helm lsandjq实用程序命令在几秒钟内最后一次部署;然后循环遍历发布列表并对其已部署的天数进行一些减法,然后删除超过一个月的发布。按月计算,我刚刚给了30 days.

#!/bin/bash
#Store the release names alone for a specific tiller.
helm_releases=(`helm ls --short --tiller-namespace "kube-system"`)
#Store current date
CURRENT_TIME_SECONDS=`date '+%s'`
for RELEASE in ${helm_releases[@]};
do
  LAST_DEPLOYED_SECONDS=`helm status $RELEASE --tiller-namespace "kube-system" --output=json | jq -r '.info.last_deployed.seconds'`
  SEC_DIFF=`expr $CURRENT_TIME_SECONDS - $LAST_DEPLOYED_SECONDS`
  DAY_DIFF=`expr $SEC_DIFF / 86400`
  if [ "$DAY_DIFF" -gt 30 ]; then
    echo "$RELEASE is older than a month. Proceeding to delete it."
    helm delete --purge --no-hooks $RELEASE
  fi
done

您仍然可以通过计算一个月的秒差来定义自己的逻辑。请注意,我已经明确提到了--tiller-namespace. 如果您将发布部署在使用除kube-system.


推荐阅读