From c858cbf5ad9b7e4f0f4f6cedb5e0929c51eb181a Mon Sep 17 00:00:00 2001 From: seabfh Date: Mon, 21 Nov 2022 13:38:18 +0800 Subject: [PATCH 1/7] feat: editdeploy --- editdeploy | 23 +++++++++++++++++++++++ kube-fzf.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100755 editdeploy diff --git a/editdeploy b/editdeploy new file mode 100755 index 0000000..11d65cf --- /dev/null +++ b/editdeploy @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -e +set -o pipefail + +#[[ -z "${KUBE_FZF_PATH}" ]] && source kube-fzf.sh || source $KUBE_FZF_PATH # TODO: release +[[ -z "${KUBE_FZF_PATH}" ]] && source ./kube-fzf.sh || source $KUBE_FZF_PATH +editdeploy() { + local namespace_query deployment_query result namespace deployment_name + + _kube_fzf_handler "editdeploy" "$@" + namespace_query=$(echo $args | awk -F '|' '{ print $1 }') + deployment_query=$(echo $args | awk -F '|' '{ print $2 }') + + #result=$(_kube_fzf_search_pod "$namespace_query" "$pod_query") + result=$(_kube_fzf_search_deployment "$namespace_query" "$deployment_query") + IFS=$'|' read -r namespace deployment_name <<< "$result" + + _kube_fzf_echo "kubectl edit deployment $deployment_name --namespace='$namespace'" + kubectl edit deployment $deployment_name --namespace=$namespace +} + +editdeploy "$@" diff --git a/kube-fzf.sh b/kube-fzf.sh index cd64f26..e403c89 100755 --- a/kube-fzf.sh +++ b/kube-fzf.sh @@ -50,6 +50,16 @@ EOF cat << EOF describepod [-a | -n ] [pod-query] +-a - Search in all namespaces +-h - Show help +-n - Find namespaces matching and do fzf. + If there is only one match then it is selected automatically. +EOF + ;; + editdeploy) + cat << EOF +editdeploy [-a | -n ] [doployment-query] + -a - Search in all namespaces -h - Show help -n - Find namespaces matching and do fzf. @@ -174,6 +184,42 @@ _kube_fzf_search_pod() { echo "$namespace|$pod_name" } +_kube_fzf_search_deployment() { + local namespace deployment_name + local namespace_query=$1 + local deployment_query=$2 + local deployment_fzf_args=$(_kube_fzf_fzf_args "$deployment_query") + + if [ -z "$namespace_query" ]; then + context=$(kubectl config current-context) + namespace=$(kubectl config get-contexts --no-headers $context \ + | awk '{ print $5 }') + + namespace=${namespace:=default} + deployment_name=$(kubectl get deployment --namespace=$namespace --no-headers \ + | fzf $(echo $deployment_fzf_args) \ + | awk '{ print $1 }') + elif [ "$namespace_query" = "--all-namespaces" ]; then + read namespace deployment_name <<< $(kubectl get deployment --all-namespaces --no-headers \ + | fzf $(echo $deployment_fzf_args) \ + | awk '{ print $1, $2 }') + else + local namespace_fzf_args=$(_kube_fzf_fzf_args "$namespace_query" "--select-1") + namespace=$(kubectl get namespaces --no-headers \ + | fzf $(echo $namespace_fzf_args) \ + | awk '{ print $1 }') + + namespace=${namespace:=default} + deployment_name=$(kubectl get deployment --namespace=$namespace --no-headers \ + | fzf $(echo $deployment_fzf_args) \ + | awk '{ print $1 }') + fi + + [ -z "$deployment_name" ] && return 1 + + echo "$namespace|$deployment_name" +} + _kube_fzf_echo() { local reset_color="\033[0m" local bold_green="\033[1;32m" From 221482f6ecad1b6821901d30a8323a6de927fd92 Mon Sep 17 00:00:00 2001 From: seabfh Date: Mon, 21 Nov 2022 14:30:15 +0800 Subject: [PATCH 2/7] fix: remove relative path --- editdeploy | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/editdeploy b/editdeploy index 11d65cf..6e7d452 100755 --- a/editdeploy +++ b/editdeploy @@ -3,8 +3,7 @@ set -e set -o pipefail -#[[ -z "${KUBE_FZF_PATH}" ]] && source kube-fzf.sh || source $KUBE_FZF_PATH # TODO: release -[[ -z "${KUBE_FZF_PATH}" ]] && source ./kube-fzf.sh || source $KUBE_FZF_PATH +[[ -z "${KUBE_FZF_PATH}" ]] && source kube-fzf.sh || source $KUBE_FZF_PATH editdeploy() { local namespace_query deployment_query result namespace deployment_name From 288123b89650d2486a24f045b3217d445363b661 Mon Sep 17 00:00:00 2001 From: seabfh Date: Mon, 21 Nov 2022 14:30:49 +0800 Subject: [PATCH 3/7] feat: editdeploy readme --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 78f6dad..1bef88d 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ sudo ln -s ~/.kube-fzf/execpod /usr/local/bin/execpod sudo ln -s ~/.kube-fzf/tailpod /usr/local/bin/tailpod sudo ln -s ~/.kube-fzf/describepod /usr/local/bin/describepod sudo ln -s ~/.kube-fzf/pfpod /usr/local/bin/pfpod +sudo ln -s ~/.kube-fzf/editdeploy /usr/local/bin/editdeploy sudo ln -s ~/.kube-fzf/kube-fzf.sh /usr/local/bin/kube-fzf.sh ``` @@ -71,6 +72,12 @@ execpod [-a | -n ] [pod-query] pfpod [-c | -o | -a | -n ] [pod-query] ``` +### `editdeploy` + +``` +editdeploy [-c | -o | -a | -n ] [deployment-query] +``` + #### Options ``` From 4139dcfc9c5b671bfb326b50d25958be0172c612 Mon Sep 17 00:00:00 2001 From: seabfh Date: Mon, 21 Nov 2022 15:21:07 +0800 Subject: [PATCH 4/7] feat: editcm --- editcm | 21 +++++++++++++++++++++ kube-fzf.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100755 editcm diff --git a/editcm b/editcm new file mode 100755 index 0000000..43179f4 --- /dev/null +++ b/editcm @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +set -e +set -o pipefail + +[[ -z "${KUBE_FZF_PATH}" ]] && source kube-fzf.sh || source $KUBE_FZF_PATH +editcm() { + local namespace_query configmap_query result namespace configmap_name + + _kube_fzf_handler "editdeploy" "$@" + namespace_query=$(echo $args | awk -F '|' '{ print $1 }') + configmap_query=$(echo $args | awk -F '|' '{ print $2 }') + + result=$(_kube_fzf_search_configmap "$namespace_query" "$configmap_query") + IFS=$'|' read -r namespace configmap_name <<< "$result" + + _kube_fzf_echo "kubectl edit configmap $configmap_name --namespace='$namespace'" + kubectl edit configmap $configmap_name --namespace=$namespace +} + +editcm "$@" diff --git a/kube-fzf.sh b/kube-fzf.sh index e403c89..e1f9c74 100755 --- a/kube-fzf.sh +++ b/kube-fzf.sh @@ -60,6 +60,16 @@ EOF cat << EOF editdeploy [-a | -n ] [doployment-query] +-a - Search in all namespaces +-h - Show help +-n - Find namespaces matching and do fzf. + If there is only one match then it is selected automatically. +EOF + ;; + editcm) + cat << EOF +editcm [-a | -n ] [configmap-query] + -a - Search in all namespaces -h - Show help -n - Find namespaces matching and do fzf. @@ -184,6 +194,42 @@ _kube_fzf_search_pod() { echo "$namespace|$pod_name" } +_kube_fzf_search_configmap() { + local namespace configmap_name + local namespace_query=$1 + local configmap_query=$2 + local configmap_fzf_args=$(_kube_fzf_fzf_args "$configmap_query") + + if [ -z "$namespace_query" ]; then + context=$(kubectl config current-context) + namespace=$(kubectl config get-contexts --no-headers $context \ + | awk '{ print $5 }') + + namespace=${namespace:=default} + configmap_name=$(kubectl get configmap --namespace=$namespace --no-headers \ + | fzf $(echo $configmap_fzf_args) \ + | awk '{ print $1 }') + elif [ "$namespace_query" = "--all-namespaces" ]; then + read namespace configmap_name <<< $(kubectl get configmap --all-namespaces --no-headers \ + | fzf $(echo $configmap_fzf_args) \ + | awk '{ print $1, $2 }') + else + local namespace_fzf_args=$(_kube_fzf_fzf_args "$namespace_query" "--select-1") + namespace=$(kubectl get namespaces --no-headers \ + | fzf $(echo $namespace_fzf_args) \ + | awk '{ print $1 }') + + namespace=${namespace:=default} + configmap_name=$(kubectl get configmap --namespace=$namespace --no-headers \ + | fzf $(echo $configmap_fzf_args) \ + | awk '{ print $1 }') + fi + + [ -z "$configmap_name" ] && return 1 + + echo "$namespace|$configmap_name" +} + _kube_fzf_search_deployment() { local namespace deployment_name local namespace_query=$1 From ef5e01d25f65e995a0ae4d8e9cebb635e3c1fbd7 Mon Sep 17 00:00:00 2001 From: seabfh Date: Mon, 21 Nov 2022 15:21:39 +0800 Subject: [PATCH 5/7] tidy: comment --- editdeploy | 1 - 1 file changed, 1 deletion(-) diff --git a/editdeploy b/editdeploy index 6e7d452..3fd19b9 100755 --- a/editdeploy +++ b/editdeploy @@ -11,7 +11,6 @@ editdeploy() { namespace_query=$(echo $args | awk -F '|' '{ print $1 }') deployment_query=$(echo $args | awk -F '|' '{ print $2 }') - #result=$(_kube_fzf_search_pod "$namespace_query" "$pod_query") result=$(_kube_fzf_search_deployment "$namespace_query" "$deployment_query") IFS=$'|' read -r namespace deployment_name <<< "$result" From fda6577991748a5bd018ccd1b0da9ef23bde90a8 Mon Sep 17 00:00:00 2001 From: seabfh Date: Mon, 21 Nov 2022 15:26:23 +0800 Subject: [PATCH 6/7] fix: editcm & editdeploy readme --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1bef88d..c22fe97 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ sudo ln -s ~/.kube-fzf/tailpod /usr/local/bin/tailpod sudo ln -s ~/.kube-fzf/describepod /usr/local/bin/describepod sudo ln -s ~/.kube-fzf/pfpod /usr/local/bin/pfpod sudo ln -s ~/.kube-fzf/editdeploy /usr/local/bin/editdeploy +sudo ln -s ~/.kube-fzf/editcm /usr/local/bin/editcm sudo ln -s ~/.kube-fzf/kube-fzf.sh /usr/local/bin/kube-fzf.sh ``` @@ -75,7 +76,13 @@ pfpod [-c | -o | -a | -n ] [pod-query] ### `editdeploy` ``` -editdeploy [-c | -o | -a | -n ] [deployment-query] +editdeploy [-c | -o | -a | -n ] [deployment-query] +``` + +### `editcm` + +``` +editcm [-c | -o | -a | -n ] [configmap-query] ``` #### Options From 12340a6d718b5cd14a88f55ff9fa38b7950b120d Mon Sep 17 00:00:00 2001 From: seabfh Date: Mon, 21 Nov 2022 15:28:24 +0800 Subject: [PATCH 7/7] readme: feature list --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c22fe97..d8bda95 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ Shell commands using [`kubectl`](https://kubernetes.io/docs/reference/kubectl/ov * exec in to a container of a Pod * describe a pod * port forward pod +* edit deployment +* edit configmap ## Prerequisite