# zsh/.zsh/functions/kube-ctx.zsh
# Per-shell KUBECONFIG so different tmux panes can target different clusters.
kctx() {
if [[ $# -eq 0 ]]; then
kubectl config current-context 2>/dev/null
return
fi
local ctx="$1"
if ! kubectl config get-contexts -o name | grep -qx "$ctx"; then
print -u2 "kctx: unknown context '$ctx'"
return 1
fi
# Use a per-shell config file to isolate this context to this pane.
export KUBECONFIG="${TMPDIR:-/tmp}/kubeconfig.$$.$ctx"
cp "${HOME}/.kube/config" "$KUBECONFIG"
kubectl --kubeconfig="$KUBECONFIG" config use-context "$ctx" >/dev/null
print "context: $ctx (pane-local)"
}
kns() {
local ns="${1:?namespace required}"
kubectl config set-context --current --namespace="$ns" >/dev/null
print "namespace: $ns"
}
# Clean up per-shell KUBECONFIG temp files on exit.
TRAPEXIT() {
[[ -n "${KUBECONFIG:-}" && "$KUBECONFIG" == ${TMPDIR:-/tmp}/kubeconfig.* ]] \
&& rm -f -- "$KUBECONFIG"
}