From 794d2ce93ab8c87e646f1bc20d123b779f24583c Mon Sep 17 00:00:00 2001 From: Lukasz Jakimczuk Date: Thu, 14 Feb 2019 18:58:04 +0100 Subject: [PATCH] Stable version of the kubectl-secmod plugin. --- .doc/secmod.gif | Bin 0 -> 81287 bytes README.md | 36 +++++++++++- bin/kubectl-secmod | 135 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 .doc/secmod.gif create mode 100755 bin/kubectl-secmod diff --git a/.doc/secmod.gif b/.doc/secmod.gif new file mode 100644 index 0000000000000000000000000000000000000000..eda488dc1aca470dbcc739989f9cdc617f4ee551 GIT binary patch literal 81287 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 z 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 XtYP=Bt)78@00IBJjDLD&PwRgHZH+=| literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 7cbb8b3..1416058 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,36 @@ # kubectl-secmod -Kubectl plugin for modifying secrets +The vim-based Kubectl plugin for editing secrets. + +The plugin is based on the Daniel Gray's [menu.sh](https://gist.github.com/DanielFGray/ab9801481f92e19b6e87321ede56c91e). + +The plugin gets the given Secret's data, base64 decodes the selected one for a user to modify it and upon completion patch the Secret with the new value. + +![](.doc/secmod.gif) + +## Installation + +To install the SecMod plugin, execute the following command: + +```bash +sudo curl -L https://github.com/ljakimczuk/kubectl-secmod/raw/master/bin/kubectl-secmod -o /usr/local/bin/kubectl-secmod +sudo chmod a+x /usr/local/bin/kubectl-secmod +``` + +## Usage + +In order to edit the secret pass its name and optionally a namespace to the plugin. Use `-h` option for help and examples: + +```bash +Edit Kubernetes Secrets. + +Examples: + # Edit Secret in the current namespace. + kubectl secmod secret123 + + # Edit Secret in the given namespace. + kubectl secmod -n namespace123 secret123 + +Usage: + kubectl secmod +[-n | -h] +``` diff --git a/bin/kubectl-secmod b/bin/kubectl-secmod new file mode 100755 index 0000000..764511c --- /dev/null +++ b/bin/kubectl-secmod @@ -0,0 +1,135 @@ +#!/usr/bin/env bash + +declare -A secrets + +KUBECTL_EXTRA_ARGS="" + +_stty=$(stty -g < /dev/tty) + +get_list() { + SECRETS_LIST=$(kubectl get secret $KUBECTL_EXTRA_ARGS $1 -o jsonpath={.data}) + + # Remove heading 'map[' and trailing ']' from the string + # and return space delimited array. + + SECRETS_LIST=${SECRETS_LIST##"map["} + SECRETS_LIST=${SECRETS_LIST%%"]"} + + echo $SECRETS_LIST +} + +populate_map() { + for i in $(get_list $1); do + # Make the associative array out of the Kubectl output + if [[ "${i}" =~ (.*):(.*) ]] + then + secrets+=( ["$(echo ${BASH_REMATCH[1]})"]=${BASH_REMATCH[2]} ) + fi + done +} + +edit_user_choice() { + choice=$(menu ${!secrets[@]}) + + echo ${secrets["${choice}"]} | base64 -d > /tmp/secret$$ + vim /tmp/secret$$ >/dev/tty +} + +menu() { + # Taken from the https://gist.github.com/DanielFGray/ab9801481f92e19b6e87321ede56c91e + local tput current hl items i keys + + declare -A tput=( + [cuu1]=$(tput cuu1) # up one line + [cud1]=$(tput cud1) # down one line + [sgr0]=$(tput sgr0) # reset color + [setaf_1]=$(tput setaf 1) # red + [setaf_2]=$(tput setaf 2) # green + [civis]=$(tput civis) # hide cursor + [ed]=$(tput ed) # erase down + ) + + printf '%s' "${tput[civis]}" > /dev/tty + current=0 + hl=(' ' "> ${tput[setaf_2]}") + + items=($@) + + while :; do + for (( i = 0; i < ${#items[@]}; i++ )) do + printf '%s\n' "${hl[i==current]}${items[i]}${tput[sgr0]}" > /dev/tty + done + + read -rsn1 keys < /dev/tty + case "$keys" in + j|J) (( current < ${#items[@]}-1 )) && (( current ++ )) ;; + k|K) (( current > 0 )) && (( current -- )) ;; + esac + + for (( i = 0; i < ${#items[@]}; i++ )) do + printf '%s%s' "${tput[cuu1]}" "${tput[ed]}" > /dev/tty + done + + if [[ -z "$keys" ]]; then + echo ${items[current]} + break + fi + done + + tput cnorm > /dev/tty + stty "$_stty" <> /dev/tty +} + +usage() { + echo -e "Edit Kubernetes Secrets.\n" + echo -e "Examples:" + echo -e " # Edit Secret in the current namespace." + echo -e " kubectl secmod secret123\n" + echo -e " # Edit Secret in the given namespace." + echo -e " kubectl secmod -n namespace123 secret123\n" + echo -e "Usage:" + echo -e " kubectl secmod" + echo -e "[-n | -h]\n" +} + +NAMESPACE="" +ARGS="" +while [ $# -gt 0 ] +do + unset OPTIND + unset OPTARG + + while getopts :n:h options + do + case "$options" in + n) + NAMESPACE="$OPTARG" + ;; + h | *) + usage + exit 0 + ;; + esac + done + shift $(( OPTIND-1 )) + ARGS="${ARGS} $1 " + shift +done + +set -- $ARGS +if [ -z "$1" ] +then + echo "Secret name cannot be empty." + exit 2 +else + trap '[[ -e /tmp/secret$$ ]] && rm /tmp/secret$$' exit + + [[ "$NAMESPACE" != "" ]] && KUBECTL_EXTRA_ARGS="--namespace $NAMESPACE $namespace $KUBECTL_EXTRA_ARGS" + + populate_map $1 + edit_user_choice + + # Eventually patch the secret with the new value. + kubectl patch secret $KUBECTL_EXTRA_ARGS $1 -p "{\"data\":{\"$(echo ${choice})\":\"$(([[ $(tail -c1 /tmp/secret$$ | wc -l) == 1 ]] && head -c -1 /tmp/secret$$ || cat /tmp/secret$$) | base64 -w 0)\"}}" + +fi