Skip to content

Instantly share code, notes, and snippets.

@DmitryBe
Created April 10, 2018 10:23
Show Gist options
  • Save DmitryBe/1170717e7f79e1c0c1d270b6892e1924 to your computer and use it in GitHub Desktop.
Save DmitryBe/1170717e7f79e1c0c1d270b6892e1924 to your computer and use it in GitHub Desktop.
kubernetescreate-labels-patch.sh
# requried env
# KUBE_NAMESPACE
# patch.json
KUBE_TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
if [ -z "$KUBE_TOKEN" ]; then
echo "Error: KUBE_TOKEN is empty"
exit 1
fi
if [ -z "$KUBE_NAMESPACE" ]; then
echo "Error: KUBE_NAMESPACE is empty"
exit 1
fi
HOSTNAME=$(hostname)
api_url="https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/api/v1/namespaces/$KUBE_NAMESPACE/pods/$HOSTNAME"
echo "Applying JSON patch:"
cat patch.json
echo "at $api_url"
curl -sSk --request PATCH --data "$(cat patch.json)" \
-H "Authorization: Bearer $KUBE_TOKEN" \
-H "Content-Type:application/json-patch+json" \
"$api_url"
# required:
# env starts with KUBE_LABEL_
unset IFS
echo > patch.json
echo "[" >> patch.json
for var in $(compgen -e | grep KUBE_LABEL_); do
echo "$var = ${!var}"
label_name="${var//KUBE_LABEL_/}"
{
echo '{';
echo ' "op":"add", "path":"/metadata/labels/'"$label_name"'", "value":"'"${!var}"'"'
echo '},'
} >> patch.json
done
sed -i '$ s/.$//' patch.json
echo "]" >> patch.json
cat patch.json
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment