Skip to content

Instantly share code, notes, and snippets.

@jgsqware
Created May 15, 2019 12:21
Show Gist options
  • Save jgsqware/4b8dd01059766287bb43e7d7e69d3f31 to your computer and use it in GitHub Desktop.
Save jgsqware/4b8dd01059766287bb43e7d7e69d3f31 to your computer and use it in GitHub Desktop.
Clean Tiller configmap
#!/usr/bin/env bash
set -eu
max_number_rev=10
namespaces=( "kube-system" )
for namespace in $namespaces
do
releases=$(kubectl --namespace=$namespace get cm -l OWNER=TILLER -o go-template --template='{{range .items}}{{ .metadata.labels.NAME }}{{"\n"}}{{ end }}' | sort -u)
for release in $releases
do
# get the revisions of this release
revisions=$(kubectl --namespace=$namespace get cm -l OWNER=TILLER -l STATUS=SUPERSEDED -l NAME=$release --no-headers | awk '{if(NR>1)print $1}' | sed 's/.*\.v//' | sort -n)
num_revisions=$(echo $revisions | tr " " "\n" | wc -l)
echo "release $release has $num_revisions revisions. Max number is $max_number_rev."
if [[ $num_revisions -gt $max_number_rev ]]; then
num_to_delete=$(($num_revisions-$max_number_rev))
echo "Will delete $num_to_delete revisions"
to_delete=$(echo $revisions | tr " " "\n" | head -n $num_to_delete)
for del_rev in $to_delete
do
cm=$release.v$del_rev
echo "Deleting $cm"
kubectl --namespace=$namespace delete cm $cm
done
fi
done
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment