Restructuring and some bugfixing

This commit is contained in:
fleaz 2025-05-31 21:52:45 +02:00
parent 1fe4639acd
commit f52e7625c3
Signed by: fleaz
GPG key ID: 935474624265FE8F

29
ktx Normal file → Executable file
View file

@ -2,6 +2,16 @@
CUR_FILE="$HOME/.kube/current" CUR_FILE="$HOME/.kube/current"
_create_file_and_switch() {
CONTEXT=${1}
NAMESPACE=${2}
FILENAME="$HOME/.kube/ktx/${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 context # Switch context
# Usage: ktx [cluster] [namespace] # Usage: ktx [cluster] [namespace]
@ -11,24 +21,18 @@ ktx() {
NAMESPACE=${2:-} NAMESPACE=${2:-}
if [ -z $CONTEXT ]; then if [ -z $CONTEXT ]; then
SELECTION=$(kubectl config get-contexts | awk '{print $2"|"$4}' | tail +2 | sort -r | fzf) # unset KUBECONFIG= variable here to always start with the global config
SELECTION=$(KUBECONFIG= kubectl config view -o json | jq -r '.contexts[] | "\(.name)|\(.context.namespace // "default")"' | sort -r | fzf)
CONTEXT=$(echo $SELECTION | cut -d"|" -f1) CONTEXT=$(echo $SELECTION | cut -d"|" -f1)
DEFAULT_NS=$(echo $SELECTION | cut -d"|" -f2) DEFAULT_NS=$(echo $SELECTION | cut -d"|" -f2)
fi fi
# Take default namespace if user didn't supplied a specific one
if [ -z $NAMESPACE ]; then if [ -z $NAMESPACE ]; then
NAMESPACE=${DEFAULT_NS} NAMESPACE=${DEFAULT_NS}
fi fi
FILENAME="$HOME/.kube/frickel/${CONTEXT}_${NAMESPACE}.conf" _create_file_and_switch ${CONTEXT} ${NAMESPACE}
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 # Switch namespace
@ -37,10 +41,11 @@ kn() {
NAMESPACE=${1:-} NAMESPACE=${1:-}
if [ -z $NAMESPACE ]; then if [ -z $NAMESPACE ]; then
NAMESPACE=$(kubectl get namespace | awk '{ print $1 }' | tail +2 | sort -r | fzf) NAMESPACE=$(kubectl get namespace --no-headers | awk '{print $1}' | sort -r | fzf)
fi fi
kubectl config set-context --current --namespace=$NAMESPACE CONTEXT=$(kubectl config get-contexts | grep "*" | awk '{print $2}')
_create_file_and_switch ${CONTEXT} ${NAMESPACE}
} }
if [ -f ${CUR_FILE} ]; then if [ -f ${CUR_FILE} ]; then