如何解决如何按名称空间删除超过10天的Helm版本
我正在尝试删除10天以上的发行版,但不应触摸某些名称空间(例如:监视) 在helm2中,我使用awk做到了这一点,但是在helm3中,他们更改了日期类型,因此无法正常工作。 有什么办法吗?
解决方法
让我告诉您如何解决类似问题。在我们的流程中,我们为每个功能分支自动推出了头盔发布,并且我们决定实施自动清除过程,以删除开发流程中的旧功能发布。
当前的实现需要jq作为依赖项。
#!/usr/bin/env bash
set -e
echo "Staring delete-old-helm-release.sh ..."
helm_release_name=${1:-$HELM_RELEASE_NAME}
k8s_namespace=${2:-$KUBERNETES_NAMESPACE}
# Get helm release date,take updated field and remove UTC from string
helm_release_updated=$(helm list --filter "${helm_release_name}" -n "${k8s_namespace}" -o json \
| jq --raw-output ".[0].updated" \
| sed s/"UTC"// \
)
if [[ "$helm_release_name" == null ]]; then
echo "Helm release: ${helm_release_name} in namespace: ${k8s_namespace} not found"
echo "Exit from delete-old-helm-release.sh ..."
exit 1
fi
# Convert date string to timestamp,get current timestamp and calculate time delta
helm_release_date_timestamp=$(date --utc --date="${helm_release_updated}" +"+%s")
current_date_timestamp=$(date --utc +"+%s")
time_difference=$((current_date_timestamp - helm_release_date_timestamp))
# 86400 means 24 hours (60*60*24) in seconds
if [[ (( $time_difference -gt 86400 )) ]]; then
echo "Detected old release: ${helm_release_name} in namespace: ${k8s_namespace}"
echo "Difference is more than 24hr: $((time_difference/60/60))hr"
echo "Deliting it ..."
helm delete "${helm_release_name}" -n "${k8s_namespace}" --purge
echo "Done"
else
echo "Detected fresh release"
echo "Current time difference is less than 24hr: $((time_difference/60/60))hr"
echo "Skipping ..."
fi
exit 0
它已经在头盔3.2.4中进行了测试,我认为它应该与所有头盔3.x.x一起使用,直到它们更改日期格式为止。
顺便说一句,请更新您的问题描述,这样它会更加清楚并在搜索引擎中具有更高的优先级:)
请让我知道是否有帮助, 祝好运, 奥列格(Oleg)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。