Skip to content

Instantly share code, notes, and snippets.

@k0uki
Last active December 2, 2019 07:03
Show Gist options
  • Save k0uki/16c3b93f3aebdfe93b221aee2bc7ca87 to your computer and use it in GitHub Desktop.
Save k0uki/16c3b93f3aebdfe93b221aee2bc7ca87 to your computer and use it in GitHub Desktop.
Refresh all pods in all deployments by namespace(wait rollout complete per deployments)
#!/bin/bash
# fork from https://gist.github.com/jmound/ff6fa539385d1a057c82fa9fa739492e
NAMESPACE=$1
function refresh-all-pods() {
echo
DEPLOYMENT_LIST=$(kubectl -n $1 get deployment -o json|jq -r .items[].metadata.name)
echo "Refreshing pods in all Deployments"
for deployment_name in $DEPLOYMENT_LIST ; do
TERMINATION_GRACE_PERIOD_SECONDS=$(kubectl -n $1 get deployment "$deployment_name" -o json|jq .spec.template.spec.terminationGracePeriodSeconds)
if [ "$TERMINATION_GRACE_PERIOD_SECONDS" -eq 30 ]; then
TERMINATION_GRACE_PERIOD_SECONDS='31'
else
TERMINATION_GRACE_PERIOD_SECONDS='30'
fi
patch_string="{\"spec\":{\"template\":{\"spec\":{\"terminationGracePeriodSeconds\":$TERMINATION_GRACE_PERIOD_SECONDS}}}}"
kubectl -n $1 patch deployment $deployment_name -p $patch_string
sleep 1
echo "wait start"
kubectl rollout status deployment/$deployment_name -n $1 --timeout=5m
echo "wait end"
done
echo
}
refresh-all-pods $NAMESPACE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment