54 lines
1.4 KiB
Fish
54 lines
1.4 KiB
Fish
function kex
|
||
set -l context (kubectl config current-context)
|
||
set -l namespace apps
|
||
set -l pod ""
|
||
set -l command ""
|
||
set -l debug false
|
||
|
||
getopts $argv | while read -l key value
|
||
switch $key
|
||
case c
|
||
set context $value
|
||
case n
|
||
set namespace $value
|
||
case d
|
||
set debug $value
|
||
case _
|
||
if test -z "$pod"
|
||
set pod $value
|
||
|
||
continue
|
||
end
|
||
|
||
if test -n "$command"
|
||
set command "$command "
|
||
end
|
||
|
||
set command "$command$value"
|
||
end
|
||
end
|
||
|
||
if $debug == true
|
||
echo "Context : $context"
|
||
echo "Namespace : $namespace"
|
||
echo "Pod basename: $pod"
|
||
echo "Command : '$command'"
|
||
end
|
||
|
||
set podname (kubectl --context="$context" --namespace="$namespace" get pod -l app="$pod",instance=app -o name | shuf | head -1 | sed 's/^pod\///')
|
||
|
||
if test -z "$podname"
|
||
echo "Pod $pod not found in cluster $context’s $namespace namespace" >/dev/stderr
|
||
|
||
return 1
|
||
end
|
||
|
||
echo "Pod found : $podname"
|
||
|
||
if test -z "$command"
|
||
kubectl --context="$context" --namespace="$namespace" exec -ti "$podname" -- bash
|
||
else
|
||
kubectl --context="$context" --namespace="$namespace" exec -ti "$podname" -- bash -c "$command"
|
||
end
|
||
end
|