Skip to content

Instantly share code, notes, and snippets.

@alec-pinson
Last active February 28, 2023 16:23
Show Gist options
  • Save alec-pinson/5696ca667c2c6d09ff2a137cd240cdd4 to your computer and use it in GitHub Desktop.
Save alec-pinson/5696ca667c2c6d09ff2a137cd240cdd4 to your computer and use it in GitHub Desktop.
Useful ZSH Aliases/Config
alias d="docker-compose"
alias k="kubecolor --force-colors --light-background "
alias tf="terraform"
alias kctx="kubectx"
alias kns="kubens"
alias knet="/usr/local/bin/kubectl run -it --rm --restart=Never alec --image=praqma/network-multitool bash"
alias watch='watch --color '
# kubectl edit xyx opens in vscode
export KUBE_EDITOR='code --wait'
kubectl_logs_or_exec() {
# bash colours
COLOUR_OFF='\033[0m'
RED='\033[0;31m'
GREEN='\033[0;32m'
function kubectl_command() {
local COMMAND="$1"
local POD="$2"
local CONTAINERS=`kubectl get pod "$POD" -o jsonpath="{.spec.containers[*].name}" | tr -s '[[:space:]]' '\n'`
if [[ -z $CONTAINERS ]] || [[ `echo $CONTAINERS | wc -l | sed 's/ //g'` == 1 ]]; then
echo -e "Connecting to ${RED}${POD}${COLOUR_OFF} ...\n"
if [[ $COMMAND == "logs" ]]; then RUN_COMMAND="kubecolor --force-colors --light-background logs -f "$POD""; else RUN_COMMAND="kubectl exec -it "$POD" -- sh"; fi
else
CONTAINERS_CHOICE=`echo -e "${CONTAINERS}" | awk '{printf "%d) %s\n", NR, $0}'`
echo -e "Which container would you like to connect to?\n${CONTAINERS_CHOICE}"
read CONTAINER_CHOICE
CONTAINER=`echo "${CONTAINERS}" | sed -n ${CONTAINER_CHOICE:-1}'p'`
echo -e "Connecting to ${RED}${CONTAINER}@${POD}${COLOUR_OFF} ...\n"
if [[ $COMMAND == "logs" ]]; then RUN_COMMAND="kubecolor --force-colors --light-background logs -f "$POD" -c "$CONTAINER""; else RUN_COMMAND="kubectl exec -it "$POD" -c "$CONTAINER" -- sh"; fi
fi
until eval "$RUN_COMMAND" 2>/dev/null; do
sleep 5
done;
}
if [[ -n $3 ]]; then
# try find name e.g. ke dev sonarqube
POD=`kubectl get pods | grep "$2" | grep "$3" | awk '{print $1}' | head -1`
if [[ -z $POD ]]; then
echo "No matching pod found for '$2' + '$3'."
else
kubectl_command "$1" "$POD"
fi
fi
if [[ -z $3 ]] && [[ -n $2 ]]; then
# try exact name e.g. ke dev-sonarqube-68c69868b5-v8wnk
kubectl_command "$1" "$2"
fi
}
# completetion
_kube_pods()
{
local curr_arg;
curr_arg=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W "$(kubectl get pods -o=jsonpath='{range .items[*].metadata.name}{@}{"\n"}{end}')" -- $curr_arg ) );
}
complete -F _kube_pods ke kl
ke() {
if [[ -z $1 ]]; then
echo "Usage: ke <pod|part of pod name> [part of pod name]"
fi
kubectl_logs_or_exec "exec" "$1" "$2"
}
kl() {
if [[ -z $1 ]]; then
echo "Usage: kl <pod|part of pod name> [part of pod name]"
fi
kubectl_logs_or_exec "logs" "$1" "$2"
}
# completetion
_kube_deploy()
{
local curr_arg;
curr_arg=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W "$(kubectl get deploy -o=jsonpath='{range .items[*].metadata.name}{@}{"\n"}{end}')" -- $curr_arg ) );
}
complete -F _kube_deploy kw kd
kw() {
if [[ -z $1 ]]; then
watch --color 'kubecolor --force-colors --light-background get pods'
else
watch --color 'kubecolor --force-colors --light-background get pods | grep "'$1'"'
fi
}
kd() {
if [[ -z $1 ]]; then
watch --color 'kubecolor --force-colors --light-background get deploy'
else
watch --color 'kubecolor --force-colors --light-background get deploy | grep "'$1'"'
fi
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment