-
-
Save alec-pinson/5696ca667c2c6d09ff2a137cd240cdd4 to your computer and use it in GitHub Desktop.
Useful ZSH Aliases/Config
This file contains hidden or 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
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