forked from lalyos/k8s-workshop
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbash_aliases
123 lines (100 loc) · 2.95 KB
/
bash_aliases
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
export EXTERNAL=$(curl -s http://metadata/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip -H 'Metadata-Flavor: Google')
export NODE_IP=$(kubectl get no $NODE -o jsonpath='{.status.addresses[1].address}')
. /etc/bash_completion
ssh-pubkey() {
declare githubUser=${1}
if [ -t 0 ]; then
if [[ $githubUser ]]; then
curl -sL https://github.com/${githubUser}.keys|kubectl create configmap ssh --from-literal="key=$(cat)" --dry-run -o yaml | kubectl apply -f -
else
cat << USAGE
Configures ssh public key from stdin or github
usage:
${FUNCNAME[0]} <GITHUB_USERNAME>
or
<SOME_COMMAND_PRINTS_PUBKEY> | ${FUNCNAME[0]}
USAGE
return
fi
else
kubectl create configmap ssh --from-literal="key=$(cat)" --dry-run -o yaml | kubectl apply -f -
fi
sshPort=${CM_SSH_PORT:=$(kubectl get svc sshfront -n workshop -o jsonpath='{.spec.ports[0].nodePort}')}
sshHost=${CM_SSH_DOMAIN:=$(kubectl get no -o jsonpath='{.items[0].status.addresses[1].address}')}
echo -e "You can now connect via:\n ssh ${NS}@${sshHost} -p ${sshPort}"
}
nodeports() {
echo "===> NodePort services:"
kubectl get svc -o jsonpath="{range .items[?(.spec.type == 'NodePort')]} {.metadata.name} -> http://$EXTERNAL:{.spec.ports[0].nodePort} {'\n'}{end}"
echo
}
ingresses() {
echo "===> Ingresses:"
kubectl get ing -o jsonpath='{range .items[*]} http://{.spec.rules[0].host}{"\n"}{end}'
echo
}
svc() {
nodeports
ingresses
}
list-common-env() {
kubectl get configmaps -n default common -o go-template='{{range $k,$v := .data}}{{printf "export CM_%s=%s\n" $k $v}}{{end}}'
}
common-env() {
eval $(list-common-env)
printenv | grep CM_
}
zed-usage() {
cat <<USAGE
###########################################
# - install as a Chrome App:
# https://chrome.google.com/webstore/detail/zed-code-editor/pfmjnmeipppmcebplngmhfkleiinphhp?hl=en
#
# - click on "Remote Folder"
###########################################
USAGE
ZED_USAGE_SHOWN=1
}
fix-kubectl-autocomp() {
[[ $KUBECTL_AUTOCOMP_FIXED ]] || source <(curl -Ls http://bit.ly/kubectl-fix)
}
zed() {
if pgrep zed &> /dev/null; then
echo zed is already running, to stop: pkill zed
return
fi
[[ "$ZED_USAGE_SHOWN" ]] || zed-usage
if ! [[ "$CM_ZED" ]]; then
echo 'CM_ZED env variable is required. Use: common-env'
return
fi
zedrem -u $CM_ZED &
}
prompt() {
if grep promptline -q <<< "$PROMPT_COMMAND"; then
unset PROMPT_COMMAND
PS1=${PS1_ORIG:-$}
else
PS1_ORIG="$PS1"
. ~/.prompt.sh
fi
}
prompt
cd
common-env &> /dev/null
kubectl config set-context default --namespace=$NS
kubectl config use-context default
fix-kubectl-autocomp
alias motd='cat /etc/motd'
alias help='{ command help; motd; }'
## kubernetes
alias k='kubectl'
alias kal='kubectl get all'
alias kg='kubectl get'
alias kgy='kubectl get -o yaml'
alias kgs='kubectl get -n kube-system'
alias aliascomp='complete -F _complete_alias'
for a in k kg kal kgy kgs; do
aliascomp $a
done
motd