Как удалить выпуск helm по пространству имен и старше 10 дней

#kubernetes-helm

#kubernetes-helm

Вопрос:

Я пытаюсь удалить выпуски старше 10 дней, но некоторые пространства имен не следует трогать (например, мониторинг) В helm2 я сделал это с помощью awk, но в helm3 они изменили тип даты, поэтому он не работает. Есть ли какой-либо способ сделать это?

Комментарии:

1. пытались ли вы выполнить свою задачу, и это не сработало?

2. я попытался использовать jq. Это тоже не работает.

Ответ №1:

Позвольте мне показать вам, как я решил аналогичную проблему. В нашем потоке у нас есть автоматическое развертывание выпусков helm для каждой ветви функций, и мы решили внедрить автоматический процесс очистки для удаления старых выпусков функций в процессе разработки.

Текущая реализация требует 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
  

Он протестирован с helm 3.2.4, и я думаю, что он должен работать со всеми helm 3.x.x, пока они не изменили формат даты.

Кстати, пожалуйста, обновите описание вашей проблемы, чтобы оно было более понятным и имело больший приоритет в поисковых системах 🙂

Пожалуйста, дайте мне знать, помогает ли это, удачи, Олег

Комментарии:

1. Спасибо, чувак. Вы мне очень помогли