commit 1ba9111b3ccf2b79bdcc20f9762f11bf5c42bde8 Author: fleaz Date: Mon May 5 23:49:57 2025 +0200 initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..30de236 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# ktx diff --git a/ktx b/ktx new file mode 100644 index 0000000..f10452f --- /dev/null +++ b/ktx @@ -0,0 +1,48 @@ +#! /usr/bin/env bash + +CUR_FILE="$HOME/.kube/current" + + +# Switch context +# Usage: ktx [namespace] +ktx() { + unset KUBECONFIG + CONTEXT=${1:-} + NAMESPACE=${2:-} + + if [ -z $CONTEXT ]; then + SELECTION=$(kubectl config get-contexts | awk '{print $2"|"$4}' | tail +2 | fzf) + CONTEXT=$(echo $SELECTION | cut -d"|" -f1) + DEFAULT_NS=$(echo $SELECTION | cut -d"|" -f2) + fi + + if [ -z $NAMESPACE ]; then + NAMESPACE=${DEFAULT_NS} + fi + + FILENAME="$HOME/.kube/frickel/${CONTEXT}_${NAMESPACE}.conf" + + kubectl config view --minify --flatten --context $CONTEXT > ${FILENAME} + + export KUBECONFIG=${FILENAME} + + kubectl config set-context --current --namespace=$NAMESPACE + + ln -sf ${FILENAME} ${CUR_FILE} +} + +# Switch namespace +# Usage: kn [namespace] +kn() { + NAMESPACE=${1:-} + + if [ -z $NAMESPACE ]; then + NAMESPACE=$(kubectl get namespace | awk '{ print $1 }' | tail +2 | fzf) + fi + + kubectl config set-context --current --namespace=$NAMESPACE +} + +if [ -f ${CUR_FILE} ]; then + export KUBECONFIG=$(readlink -f "${CUR_FILE}") +fi