Last active
July 5, 2019 08:00
-
-
Save ddgenome/6346adf6bb97f172e88a8dc60368a5c1 to your computer and use it in GitHub Desktop.
Kubernetes bash functions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# bash kubernetes functions | |
# kubectl with kubeconfig | |
function k () { | |
kubectl --kubeconfig=kubeconfig "$@" | |
} | |
# exec shell in pod | |
function k8sh () { | |
local p="$1" | |
shift | |
k exec -it "$p" -- env COLUMNS=$(tput cols) LINES=$(tput lines) TERM=$TERM /bin/sh "$@" | |
} | |
# list pods | |
function kp () { | |
k get -o wide pods "$@" | |
} | |
# list services | |
function ks () { | |
k get -o wide svc "$@" | |
} | |
# logs for pod | |
function kl () { | |
local r="$1" p | |
[[ $PAGER ]] || PAGER=more | |
# match full pod name, pod in replica, or pod in deployment | |
for p in $(k get pods | awk "\$1 == \"$r\" || \$1 ~ /^$r-[a-z0-9]{5}$/ || \$1 ~ /^$r-[0-9]{1,10}-[a-z0-9]{5}$/ { print \$1 }"); do | |
echo "===> $p <===" | |
k logs "$p" | $PAGER | |
done | |
} | |
# ssh into each host | |
function kssh () { | |
local conf="ssh_config" | |
local h | |
for h in $(awk '/^Host / { print $2 }' "$conf"); do | |
echo "$h" | |
ssh -F "$conf" "$h" "$@" | |
done | |
} | |
# run command in each k8 cluster | |
function vk () { | |
local d | |
for d in *; do | |
if [[ -f $d/kubeconfig ]]; then | |
echo "======> $d <======" | |
(cd "$d" && "$@") | |
fi | |
done | |
} | |
# tail follow logs for pod | |
function vtf () { | |
local r="$1" d p | |
local -a js | |
for d in *; do | |
if [[ -f $d/kubeconfig ]]; then | |
cd "$d" | |
for p in $(k get pods | awk "\$1 == \"$r\" || \$1 ~ /^$r-[a-z0-9]{5}$/ || \$1 ~ /^$r-[0-9]{1,10}-[a-z0-9]{5}$/ { print \$1 }"); do | |
kubectl --kubeconfig=kubeconfig logs -f "$p" & | |
js+=("$!") | |
done | |
cd .. | |
fi | |
done | |
trap 'kill ${js[@]}' INT EXIT | |
wait "${js[@]}" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment